java學習記錄4 Java基礎知識點
1. 注釋
單行注釋
使用“//”開頭,后面是注釋的內容
一般在要注釋的語句的上面加注釋
多行注釋
以“/*”開頭,以“*/”結尾
可以做行內注釋
不可嵌套使用
文檔注釋
以“/**”開頭,以“*/”結尾
用來給類和方法做注釋,用以說明類的功能和作者等信息
包含一些說明行文字及一些JavaDoc標簽,可以在寫項目是生成項目的API
注意
注釋不會出現在字節碼文件中,即Java編譯器編譯時會跳過注釋語句
2. 標識符規則-駝峰規則
定義
是用來給變量、類、方法以及包進行命名的
規則
必須以字母、下劃線_、美元符$開頭
其它部分可以是字母、下劃線,美元符和數字的任意組合
大小敏感,長度無限制
不可以是Java的關鍵字
規范
給類起名,首字母要大寫,如Man,GoodMan.
給方法和變量起名,第一個單詞小寫,從第二個單詞開始首字母大寫,遵從“駝峰原則”,如:eat(),eatFood().
Java采用Unicode標準國際字符集,因此變量名可以是英文的,也可以是中文的,但盡量不要用中文。
3. 變量
本質
本質上是一個“可操作的存儲空間”,空間的位置是確定的,但是里面放置什么值是不確定的。我們可通過變量名來訪問“對應的存儲空間”,從而操縱這個“存儲空間”存儲的值。
Java是強類型語言,每個變量都必須聲明其數據類型。
是最基本的存儲單元,其要素包括變量名、變量類型和作用域。變量在使用前必須對其聲明,只有變量聲明以后,才能為其分配相應長度的存儲空間。
包括基本類型和引用類型兩種類型的變量。
不提倡“一行聲明多個變量”
局部變量必須聲明并且初始化之后才能使用
分類
局部變量(local variable)
含義:方法或語句塊內部定義的變量。
周期:從聲明的位置開始到方法和語句塊執行完畢為止。
局部變量使用之前必須初始化。
成員變量(member variable)
也叫實例變量。
定義在方法的外部、類的內部的變量,沒有被static修飾。
從屬于對象。
生命周期伴隨對象始終。
會自行初始化成該類型的默認出始值。
出始值:int - 0,double - 0.0,char - '\u0000',boolean - false
靜態變量(static variable)
定義在類內部,使用static定義。
從屬于類。
生命周期伴隨類始終,從類加載到類卸載。生命周期最長。
4. 常量(Constant)
定義
通常指的是一個固定的值。
主要利用關鍵字final類定義一個常量。
常量一旦被初始化之后不能再更改其值。
聲明格式:
final type varName = value;
1、2等是字面常量,被final修飾的是符號常量
規范
所有變量、方法、類名:見名知意。
常量:大寫字母和下劃線:MAX_VALUE。
類名:首字母大寫和駝峰原則
方法名:首字母小寫和駝峰原則
5. 基本數據類型(primitive data type)
數值型
byte:整數類型,占1個字節
short:整數類型,2個字節
int:整數類型,4個字節
long:整數類型,8個字節
float:浮點類型,4個字節
double:浮點類型,8個字節
字符型
char:2個字節
布爾型
boolean:1位
注意
引用數據類型占4個字節
包括類(class)、接口(interface)、數組
1個字節=8位
6. 整型變量和常量
整型數據類型
byte:1字節 ,8次方,-2的7次方到2的7次方-1,-128到127,其中有0
short:2字節,16次方,-32768到32767
int:4字節,32次方,范圍-2三十一次方到2的三十一次方-1,約21億
long:8字節,2的64次方
注:其中一位表示正負。
各種進制的表示方法
十進制:如:99,-10等
八進制:以0開頭
十六進制:以0x或0X開頭
二進制:以0b或0B開頭
注:整型常量默認是int類型
注:后面加L表示這是一個long類型的常量,L大小寫都行。
7. 浮點型變量和BigDecimal的使用
數據類型
float
占4字節,-3.403E38~3.403E38
但精度類型,尾數可精確7位有效數字
float類型的數值有一個后綴F或f
double
占8字節,-1.798E308~1.798E308
雙精度類型,精度約為float類型的兩倍,浮點型常量默認double類型
表示形式
十進制數形式:3.14 ,314.0,0.314
科學計數法形式:314e2或314E2表示314乘以10的二次方,等于31400.0, 314E-2表示314乘以10的-2次方,等于3.14
注
float和int占得字節一樣,但表示的范圍更廣,因為float有效數
浮點數是不精確的。不要用于比較
比較的話用BigInteger和BigDecimal,在java.math包下,這兩個類可以處理任意長度的數值。BigInteger可以實現任意精度的整數運算。BigDecimal可以實現任意精度的浮點運算。可用于金融領域。
代碼示例:
double d = 0.1;
double e = 1.0/10;
System.out.println(d == e);//類型一樣true
float f = 0.1f;
double g = 1.0/10;
System.out.println(f == g);//類型不一樣false
8. 字符型類型-轉義字符
字符型變量/常量
char,占兩個字節
用單引號表示,可允許有65536的字符,包含世界上所有的符號
通常用從'\u0000'到‘\uFFFF’之間的十六進制值來表示(u代表Unicode)
代碼示例:
char a = 'T';
char b = '尚';
char c = '\u0061';
System.out.println(a);
System.out.println(b);
System.out.println(c);//結果為a
?
System.out.println('a'+'b');//結果為195
System.out.println(" "+'a'+'b');//結果為ab
9. 布爾類型
內存只占1位
只有兩個值,true或false
不可以使用0或非0的整數代替true和false,這點與c不同
Boolean類型用來判斷邏輯條件,一般用于程序流程控制
10. 運算符(operator)
算數運算符
二元運算符
規則
整數運算
如果兩個操作數有一個為Long,則結果為Long。
沒有Long時,結果為int。即使操作數全為short,byte,結果也是int。
浮點運算
如果兩個操作數有一個為double,則結果為double。
只有兩個操作數都是float,則結果為float。
運算中有一個浮點數,結果為浮點數。
取模運算
其操作數可以為浮點數,一般是整數,結果是余數
余數符號和左邊操作數相同,7%3=1,-7%2=-1,7%-3=1。
自增自減
//自增,自減
int c = 4;
int d = c++;
System.out.println("c="+c+"\nd="+d);//c=5,d=4,先把c的值賦給d,c再加1
c = 4;
d = ++c;
System.out.println("c="+c+"\nd="+d);//c=5,d=5,c先加1,再把c的值賦給d
賦值運算符
實例
int e = 3;
int f = 4;
f *= e + 3;//等于f*(e+3)=24,始終先計算符號后面
System.out.println(f);
關系運算符
結果是布爾值:true/false
邏輯運算符
邏輯與 &,兩邊都要查看
邏輯或 |,兩邊都要查看
短路與 && ,如果第一個是false,就不看第二個條件,就是false,否則會查看第二條件
短路或 ||,如果第一個是true,就不看第二個條件,就是true,否則會查看第二條件
異或 ^,兩邊相同false,兩邊不同true
位運算符
移位算法,左移<>,相當于除以2
字符串連接符
“+”是連接符
當“+”兩邊,有一邊是字符串,得到的結果就是字符串
示例代碼
String a = "3";
int b = 4;
int c = 5;
char d = 'a';
System.out.println(a+b+c); ?//345
System.out.println(b+c+a); ?//93
System.out.println(d); ? ? ?//a
System.out.println(d+4); ? ?//101
條件運算符
三目運算符
11. 自動類型轉換
指的是容量小數據類型的自動轉換成容量大的數據類型
13. 基本數據類型溢出
注意計算結果可能會溢出
表達是中兩個變量是int,結果是變量,如果溢出,就讓其中一個做變量提升成long類型
14. 使用Scanner獲取鍵盤輸入
要導入包:import java.util.*;
Scanner scanner = new Scanner(System.in);
System.out.println("姓名:");
String name = scanner.nextLine();
System.out.println("愛好:");
String favor = scanner.nextLine();
System.out.println("年齡:");
int age = scanner.nextInt();
System.out.println(name);
System.out.println(favor);
System.out.println(age);
15. 流程控制語句
switch多選擇結構
switch(month)
{
case 1:
System.out.println("一月");
break;
case 2:
System.out.println("二月");
break;
default:
System.out.println("其他月");
break;
}
switch(month)
{
case 1:
case 2:
System.out.println("第一節度");//條件1,2,都會打印“第一季度”
break;
default:
System.out.println("其他季度");
break;
}
注:
遇到break,就終止,沒有break會接著判斷。
while循環詳解
循環結構分為當型和直到型
for 死循環
for(;;)
{}
break 和continue語句
break
用于強行退出循環,不執行循環中剩余的語句。
continue
用于退出本次循環,繼續執行下次循環。
由內循環跳外循環用帶標簽的continue,
格式 標簽名:語句;continue 標簽名;
16. 方法
定義:方法就是一段用來完成特定功能的代碼片段,類似于其他語言的函數。
形參:在方法聲明時用于接收外界傳入的數據。
實參:調用方法時實際傳給方法的數據,傳遞的是數據副本
返回值:方法在執行完畢后返還給調用它的環境數據,如果沒有,就是void類型
方法通過對象調用,一個類調用自己的方法時也要實例化對象
return:1.結束方法的運行。2.返回值
方法從屬于對象和類
基本類型傳遞的是值的copy,引用類型傳的是對象引用的copy值,但指向的是同一個對象。
方法的重載(overload)
定義:一個類中有多個方法的名稱重復,但是完全不同的方法。
不同的含義是:形參類型、形參個數、形參順序不同
只有返回值不同不構成方法的重載
只有形參的名稱不同、不構成方法的重載
方法調用,方法加static修飾,就不用了new 對象,就可以調用方法,否則,必須要new對象才行。
17. 遞歸結構
基本思想:自己調自己。
遞歸結構有兩部分:遞歸頭和遞歸體。
定義遞歸頭,:什么時候不調用自身方法。如果沒有頭,將陷入死循環,也就是遞歸的結束條件。
遞歸體:什么時候需要調用自身方法。
爬蟲-遞歸