2.1 相關基礎
Java所有的組成部分都需要名字。
類名、變量名以及方法名都被稱爲標識符。
標識符命名規則:
1、由字母、數字、下劃線、$組成,不能以數字開頭。
2、注意大小寫敏感。即hello和Hello是不一樣的。
3、不得使用java中的關鍵字和保留字。
標準的變量命名示例:
int localAreaCode
優秀的標識符命名習慣:
1、標識符要符合語義信息。
2、包名
:所有字母小寫。
3、類名
:每個單詞首字母大寫,其它小寫,如:TarenaStudent
4、變量和方法
:第一個單詞小寫,從第二個單詞開始首字母大寫,如:tarenaStudent
5、常量
:所有字母大寫,每個單詞之間用下劃線"_"連接。如:final int ESCAPE_CODE = 27;
常量即程序運行過程中一直不變的值。聲明常量在變量聲明前加上關鍵字final,並指定初始值。
對於局部變量,在程序使用它之前(聲明的時候是不賦值的),必須給它賦值,否則編譯錯誤:
信息類型 變量名; //如:int length; 這是聲明
信息類型 變量名1,變量名2; //如:String country,city,home;
信息類型 變量名=值; //如:int box = 345; 這是使用
類所屬的包是使用package語句指定的,這種語句必須位於類的最前面:
package com.long.java //導入包示例
Java代碼運行結果輸出:
System.out.println("hahaha") //注意是printLn,易混淆字母大寫可見
System.out.print("hahaha") //print爲在一行輸出,不管有多少個print
Java代碼注意點:
1、以雙斜槓的單行註釋://
2、多行註釋:/*---------這是註釋---------*/
3、Java語句都以英文;
結尾
2.2 Java基本數據類型
1、基本數據類型一覽表
類型名稱 | 字節空間 | 其他說明 | 使用場景 |
---|---|---|---|
byte | 1字節(8位) | 範圍:-2^7 ~ 2^7-1 | 存儲字節數據(較常用) |
short | 2字節(16位) | 範圍:-2^15 ~ 2^15-1 | 兼容性考慮(很少使用) |
int | 4字節(32位) | 範圍:-2^31 ~ 2^31-1 | 存儲普通整數(常用)(整數默認) |
long | 8字節(64位) | 範圍:-2^63 ~ 2^63-1 | 存儲長整數(常用) |
float | 4字節(32位) | \ | 存儲單精度浮點數(不常用) |
double | 8字節(64位) | 存在舍入誤差 | 存儲雙精度浮點數(常用)(浮點默認) |
char | 2字節(16位) | 單一的16位unicode字符 | 存儲一個字符(常用) |
boolean | 1字節(8位) | 默認值是false | 存儲邏輯變量(true/false)(常用) |
2、整數相除捨棄小數
int c = 5/3;
System.out.println(c); //c的值爲1
3、整數過大溢出
int a = 2147483647;
int b = -2147483648;
a = a + 1;
b = b - 1;
System.out.println("a=" + a); //輸出結果:a=-2147483648,溢出,過大突變爲負數
System.out.println("b=" + b); //輸出結果:b=2147483647。溢出,過小突變爲正數
4、表示長整型要以L結尾
long a = 10000000000000L; //不加L程序會默認爲int型,從而報錯
5、長整型數運算
long a = 10000*365*24*60*60*299792458L; //必須有一個long型數參與運算的結果纔是long型
System.out.println("a=" + a); //a=18762816316238618726381,結果正確
long b = 10000*365*24*60*60*299792458; //沒有一個long型數據參與運算,程序默認int型
System.out.println("b=" + b); //b=-187628163,結果錯誤,溢出了
6、長整型獲取時間
long time = System.currentTimeMillis();
System.out.println(time); //返回1970年1月1日0點到此時此刻的毫秒數,爲long型
7、雙精度浮點數運算
double pi = 3.14;
double r = 8;
double s = pi*r*r;
System.out.println("s=" + s); //輸出結果爲s=200.96
8、double類型的兩種寫法
3.14、0.236 //常規寫法
1.25E2、1.25E-2 //科學記數法。1.25E2表示1.25乘以10的2次方
9、布爾型程序
int age = 18;
boolean ischild = age<16; //條件不成立,返回false
System.out.println(ischild); //輸出false
boolean running = true; //布爾型賦值,只能賦予true或者false
boolean closed = false;
10、字符型程序
可以裝入unicode字符編碼集中的任何字符,字符直接量放在單引號之中。
只能一個字符一個字符的表示。
例'abcde'
是錯誤的,必須是'a'
,'b'
,'c'
,'d'
,'e'
char c1 = '中'; //c1中存的是[中]的unicode編碼,Java字符類型採用unicode字符集編碼
char c2 = '\u4e2d'; //char類型可以裝入unicode集中的任何一個字符
System.out.println(c1); //輸出漢字[中]
System.out.println(c2); //輸出漢字[中]
常見轉義字符
轉移字符 | 含義 |
---|---|
\n | 表示回車符 |
\r | 表示換行符 |
\\ | 表示反斜槓:\ |
\’ | 表示單引號:’ |
\" | 表示雙引號:" |
\f | 表示換頁符 |
\b | 表示退格符 |
\0 | 表示空字符 |
\s | 表示字符串 |
\t | 表示製表符 |
11、常量修飾和變量修飾
final double PI=3.14159; //常量需要使用final修飾。通常使用大寫字母使用常量
"hello world hahaha" //字符串常量包含在兩個引號之間
char a='A'; //變量需要使用變量數據類型來修飾
12、基本類型之間的轉換
自動類型轉換:從小類型到大類型可以自動完成
byte --> short --> int --> long --> float --> double
-------- char ---> int //各種基本類型參與的運算中,運算結果會自動向大的類型轉換
強制類型轉換:從大類型到小類型需要強制轉換符
需要轉換成的類型 變量 //注意:那個小括號必須有。可能會造成精度損失或溢出
示例代碼
char c1='a'; //定義一個char類型
int i1 = c1; //char自動類型轉換爲int
System.out.println("char轉換爲int後"+i1); //輸出結果爲:97
char c2 = 'A'; //定義一個char類型
int i2 = c2+1; //char 類型和 int 類型計算
System.out.println("char和int計算後"+i2); //輸出結果爲:66
2.3 表達式和運算符
1、Java算術運算符及衍生
運算符 | 表達式 | 計算 | 結果(假定x=10) |
---|---|---|---|
+、-、*、/、% | 加、減、乘、除、取餘 | \ | \ |
+= | x += 5 | x = x + 5 | 15 |
-= | x -= 5 | x = x - 5 | 5 |
*= | x *= 5 | x = x * 5 | 50 |
/= | x /= 5 | x = x / 5 | 2 |
%= | x %= 5 | x = x % 5 | 0 |
<<=(左移位賦值) | x <<= 5 | x = x << 5 | 320 |
>>=(右移位賦值) | x >>= 5 | x = x >> 5 | 10 |
&=(按位與賦值) | x &= 5 | x = x & 5 | 0 |
^=(按位異或賦值) | x ^= 5 | x = x ^ 5 | 5 |
|=(按位或賦值) | x |= 5 | x = x | 5 | 5 |
2、自加和自減運算:++、–
num++; //相當於:num=num+1。++在後,先取值再增1
num--; //相當於:num=num-1
++num; //++在前,先增1再取值
----------------------------------------------------------------
int num = 5;
System.out.println(num++); //先取值再增1。輸出結果:5
System.out.println(num); //已經自增完畢,此處輸出:6
int num2 = 5;
System.out.println(++num2); //先增1再取值。輸出結果:6
System.out.println(num2); //已經自增完畢,此處輸出:6
3、Java關係運算符
大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、等於(==)、不等於(!=)
關係運算符的結果均爲布爾類型,關係成立返回true,關係不成立返回false
"=="比較的是地址、“equals”比較的是內容
-----------------------------------------------------------------------
int max = 10;
boolean b1 = max > 15;
System.out.println(b1); //輸出結果爲false
4、Java邏輯運算符
與(&&)、或(||)、非(!)
邏輯運算的變量或表達式都是boolean類型,運算結果也爲boolean類型
--------------------------------------------------------------
int score = 80;
boolean b = score >= 60 && score < 90;
System.out.println(b); //輸出結果爲true
邏輯短路:
對於&&
來說,當第一個操作數爲false時,將不再對後面的操作數進行計算處理。
對於||
來說,當第一個操作數爲true時,將不再對後面的操作數進行計算處理。後面的代碼得不到執行,將有可能影響之後的代碼運算結果。
5、Java賦值運算符
賦值(=)
--------------------------------------------------------------------
int a,b,c;
a = b = c = 100; //a,b,c都是100
int a=1,b=2,c=3; //也可以這樣書寫。注意要先聲明變量類型
6、字符串連接運算符
字符串連接(+)
兩邊都爲數字做加法,若一邊有字符則做字符串拼接。注意從左向右的先後順序
-------------------------------------------------------------------------
int a = 100;
String msg = "a=" + a;
System.out.println(msg); //輸出:a=100
msg = "" + 100 + 200;
System.out.println(msg); //輸出結果爲:100200
msg = 100 + 200 + "";
System.out.println(msg); //結果爲:300
7、字符串長度
String site = "hello"; //字符串是雙引號括起來的一系列字符
int len = site.length(); //Java使用length方法來返回字符串對象包含的字符數
System.out.println( "hello長度 : " + len ); //輸出結果爲5
8、Java Math類
Java的Math包含了基本數學運算的屬性和方法,如初等指數、對數、平方根和三角函數。
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的餘弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println("圓周率:" + Math.PI);
2.4 下斷點調試
1、此時不能直接點run運行,而是點擊debug運行,之後再F8單步運行。
2、下斷點在於看清楚內存的變化,否則一閃而過什麼都看不到。例如循環時,可以看到一個數一個數的變化,看清運行過程細節,發現過程中途的敏感數據。