Java基礎語法
1.註釋:
單行註釋:// “//”後的內容會被註釋掉
多行註釋:/* 註釋
註釋**/ “/* * */"中間的內容會被註釋
文本註釋:/** 註釋
*註釋
*註釋
*/ 每一行可以添加一些功能
2.標識符:
關鍵字:系統定義的,用於聲明或者具有特殊功能的。取名時避開這些。
Java所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標識符。
注意點:
- 所有的標識符都應該以字母(A-Z或a-z),美元符($)、或者下劃線(_)開始
- 首字母之後可以是字母(A-Z或a-z),美元符($)、下劃線(_)或者數字的任何字符組合
- 不能使用關鍵字作為變量名或者方法名
- 標識符是大小寫敏感的
- 可以使用中文命名,但是不推薦使用
3.數據類型:
強類型語言:變量必須嚴格規定,所有變量都必須先定義後使用。
弱類型語言:變量可以不嚴格符合固定。
Java的數據類型分為兩大類:基本類型(primitive type)和引用類型(reference type)
基本數據類型:數值類型(整數類型:byte、short、int、long;浮點類型:float、double;字符類型char)和boolean類型(佔1位,只有true和false兩個)。其中byte佔一個字節,short佔兩個字節,int佔四個字節,long佔八個字節,float佔四個字節,double佔八個字節,char佔兩個字節。
引用數據類型:類、接口、數組。
整數擴展:
進制:二進制0b(0、1) 八進制0(0-7) 十進制(0-9) 十六進制0x(0-9、A-F)
浮點數擴展:
float是有限的,存在舍入誤差,他只能接近但是不等於。最好完全避免使用浮點數進行比較,涉及精確計算的使用類BigDecimal。
字符擴展:
所有的字符本質還是數字,可以使用int強制轉換進行輸出對應的Unicode編碼。
//System.out.println((int)c1);
Unicode有一張表,每個字符都在其中擁有對應的數字編號。0-65536
char c2='\u0061'
System.out.println(c2);//a
即可輸出對應編號的字符a。
判斷兩個字符、數字是否相等,實質上比的是地址空間。
轉義字符:
\t:製表符 \n:換行
布爾值擴展:
布爾值常用來作為判斷條件,if(flag){}
類型轉換:
Java是強類型語言,進行運算的時候,常需要類型轉換。
例:int i=128;
byte b=(byte)i;//在前面加(),裏面寫強制轉換的類型。(類型)變量名
但此時byte超出範圍了,寫代碼的時候要規避這種情況。
//強制轉換 高--->低
//自動轉換 低--->高
低-------------------------------------------------------------->高
byte,short,char-->int-->long-->float-->double
注意點:
1.不能對布爾值進行轉換
2.不能把對象類型轉換為不相干的類型
3.在把高容量類型轉換到低容量內存的時候,需要強制轉換
4.轉換的時候可能會出現內存溢出或者精度問題的情況,需要多留意
操作比較大的數字的時候,都需要注意溢出問題。(可以使用”_“隔開數字,便於觀看,不影響輸出)
int money=10_0000_0000;
int years=20;
int total1=money*years;//溢出
long total2=money*years;//默認是int,在轉換成long之前已經存在問題了
long total3=money*((long)years);//先把一個數字轉換為long,此時右邊才會以long運算。
變量:
變量就是可以變化的量,每個變量都必須聲明其類型。
Java變量是程序中最基本的存儲單元,包括變量名,變量類型和作用域。
xtype varName [=value] [{,varName[=value]}]
//數據類型 變量名=值;可以用逗號隔開去聲明多個同類型變量。但是不推薦使用,難以觀看管理。
注意:
1.每個變量都有類型,可以是基礎類型也可以是引用類型。
2.變量名必須是合法的標識符。
3.變量聲明是一條完整的語句,每一個聲明都必須以分號結束。英文的分號。
public class Demo {
static int allClicks=0; //類變量
String str="Hello World!"; //實例變量
public void method(){
int i=0; //局部變量
}
}
public class Demo {
//類變量 static
static int allClicks=20; //類變量
//實例變量:從屬於對象,如果不初始化,數值類型的默認值是0 0.0
//布爾值:默認false
//除了基本類型,其他的默認值都是null
String name;
int year;
String str="Hello World!"; //實例變量
//main方法
public static void main(String[] args) {
//局部變量:必須聲明和初始化
int i=10; //局部變量
System.out.println(i);
//實例變量的使用
//變量類型 變量名字 = new Demo();
Demo obj=new Demo();
System.out.println(obj.name);
System.out.println(obj.year);
System.out.println(obj.str);
//類變量 static
System.out.println(allClicks);
}
//其他方法
public void method(){
}
}
常量:
Constant,初始化後不能再改變值。
常量可以理解為特殊的變量,值被設定後,在程序運行過程中不允許改變。
final 常量名=值;
常量名一般使用大寫字符。
public class Demo1 {
//修飾符不區分前後順序
static final double PI=3.1415926;
final static double PI2=3.1415926;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(PI2);
}
}
變量的命名規範:
- 所有的變量、方法、類名最好命名可以知道它的含義,不要使用拼音,用英文單詞。
- 類成員變量:首字母小寫和駝峯原則:monthSalary
- 局部變量:首字母小寫和駝峯原則
- 常量:大寫字母和下劃線:MAX_VALUE
- 類目:首字母大寫和駝峯原則:Man,GoodMan
- 方法名:首字母小寫和駝峯原則:run(),runRun()
運算符:
- 算術運算符:+,,*,/,%,++,--
- 賦值運算符:=
- 關係運算符:>,<,>=,<=,==,!=,instanceof
- 邏輯運算符:&&,||,!
- 位運算符:&,|,^,~,>>,<<
- 條件運算符: ? :
- 擴展賦值運算符:+=,-=,*=,/=
運算時若有一個數字為long(double),則結果均為long(double),負責全為int。
a++// 先賦值,再自增
++a//先自增,再賦值
//邏輯運算符
public class Demo3 {
public static void main(String[] args) {
//與&& 或|| 非!
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(a&&b));
//邏輯與運算:兩個都為真才為真
System.out.println("a||b:"+(a||b));
//邏輯或運算:有一個為真即為真
System.out.println("!(a&&b):"+(!(a&&b)));
//邏輯非運算:真即為假,假即為真
//短路運算
int c=5;
boolean d=(c<4)&&(++c<4);
//&&之前的為假,直接返回運算結果了,不在計算&&之後的
System.out.println(c);//所以c沒有自增
System.out.println(d);
}
}
public class Demo4 {
public static void main(String[] args) {
int a=10;
int b=20;
//字符串連接 + ,String
System.out.println(a+b);//30
System.out.println(""+a+b);//1020 字符串在運算前是連接
System.out.println(a+b+"");//30 字符串在後邊是運算
//三元運算符
//x?y:z 如果x為true,輸出y,否則輸出z
int c=10;
System.out.println(a>b ? c:b);
}
}
包機制:
包是為了更好的組織類,用於區別類名的命名空間。包就是文件夾。
語法格式:
package pkg1[. pkg2[. pkg3...]];
Java程序導入包時,使用"import"語句。
import package pkg1[. pkg2...].(classname|*);