第一階段 javaSE java基礎語法01
java執行機制
C和C++是編譯型語言,java是先將java檔案預編譯成class檔案,即位元組碼檔案,介於java語言和機器語言之間,再將位元組碼檔案放入類載入器中,在位元組碼校驗器中校驗是否程式碼出錯,然後通過直譯器給作業系統解釋為機器語言
IDEA開發工具的安裝
IDE是指整合開發環境,IDEA是其中的一種,通過官網下載安裝idea,將所有軟體等下載到自己建立的程式檔案中,防止忘記,配置jdk,寫第一個HelloWorld程式,可使用psvm和sout來寫主方法和輸出語句
java基礎語法
註釋
書寫註釋是一個非常好的習慣,很多大公司都要求必須寫註釋,平時寫程式碼一定要注意規範
IDEA中註釋設定在settings-Editer-Java-Comments
java的註釋有三種:單行註釋,多行註釋,文件註釋,可在網站搜尋有趣的註釋
//單行註釋
/*多行註釋*/
/**
*文件註釋:是有功能的
*@Author fengbihuoche
*/
識別符號和關鍵字
關鍵字是java系統定義的,有一些特殊作用的詞,如public,class,static等
java所有的組成部分都需要名字,類名,變數名以及方法名都被成為識別符號,識別符號注意點:
- 所有的識別符號都應該以大寫或小寫字母,美元符($)或下劃線開始,首字元後可以使字母,美元符,下劃線或數字的任何字元組合
- 不能使用關鍵字作為變數名或方法名
- 識別符號是大小寫敏感的
- 可以使用中文命名,但是一般不建議這樣去使用,也不建議使用拼音,顯得不專業
資料型別
java是強型別語言,要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用
弱型別語言包括python等
java的資料型別分為兩大類
- 基本資料型別(8種):分為數值型別和boolean型別,數值型別又分為整數型別,浮點型別和字元型別
- 引用資料型別:類(字串string是一個類,是引用資料型別),介面,陣列
//八大基本資料型別 //數值型別 //整數型別 int num1 = 10;//最常用,佔4個位元組範圍,包裝類為intager,用於定義int,確定取值範圍 byte num1 = 10;//佔1個位元組範圍,包裝類為Byte short num3 = 10;//佔2個位元組範圍 long num4 = 10L;//佔8個位元組範圍,Long型別要在數字後面加個L,大小寫均可,儘量用大寫 //浮點型別 float num5 = 3.1F;//佔4個位元組,Float型別要在數字後面價格F,大小寫均可 double num6 = 3.1;//佔8個位元組 //字元型別 char num7 = "可";//佔2個位元組,只能是一個字元 //boolean型別 boolean num8 = true;//佔一位,只有true和false兩個值
什麼是位元組
位(bit):是計算機內部 資料儲存的最小單位,一個二進位制數是一位
位元組(byte):是計算機 資料處理 的基本單位,習慣用B表示,一個位元組等於8位
字元:是指計算機中使用的字母,數字,字和符號
1024B = 1KB
1024KB = 1M
1024M = 1G
資料型別擴充套件(面試)
整數拓展:
進位制:二進位制(以0b開頭),十進位制,八進位制(以0開頭),十六進位制(以0x開頭,每一個進位制位可寫0-9 A-F代表0-16),要求會轉換
浮點數拓展:
浮點數代表的數是有限的,離散的,舍入誤差,大約,接近但不等於的,最好完全避免使用浮點數進行比較,故銀行業務表示數字和金額使用數字工具類BigDecimal
float f = 0.1f; //0.1
double b = 1.0/10; //0.1
System.out.println(f==b); //false
float f1 = 212121212122212f;
float f2 = f1 + 1;
System.out.println(f1==f2); //true
字元拓展:
所有的字元本事還是數字,不同字元是使用Unicode的數字進行編碼的
char c1 = 'a';
char c2 = '中';
System.out.println((int)c1);//強制轉換,97
System.out.println((int)c2);//強制轉換20013
常見轉義字元:
\t 製表符 \n 換行 \r 回車 \\ 代表一個反斜線字元 \
\' 代表一個單引號字元
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
字串擴充套件:
涉及到面向物件時記憶體空間的使用
String s1 = new String("hello world");
String s2 = new String("hello world");
System.out.println(s1==s2);//false
String s3 = "hello world";
String s4 = "hello world";
System.out.println(s3==s4);//true
布林值拓展:
boolean flag = true;
if(flag){} //常見寫法
型別轉換
由於java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換
型別由低到高為:byte,short,char -> int -> long -> float -> double
運算中,不同型別的資料先轉換為同一型別,然後進行運算
- 強制型別轉換:將高型別轉換為低型別
- 自動型別轉換:將低型別轉換為高型別
注意點:
- 不能對布林值進行轉換
- 不能把物件型別轉換為不相干的型別
- 在把高容量轉換到低容量的時候,強制轉換
- 轉換的時候可能存在記憶體溢位(佔記憶體較高的型別轉換為佔記憶體較低的型別),或者丟失精度(轉換浮點數的時候)
常見問題:操作比較大的數的時候,注意溢位問題,如下:
int money = 1_000_000_000; //JDK新特性,數字之間可以用下劃線分割,不影響輸出
int years = 20;
int total = money*years; //造成記憶體溢位
long total2 = money*years; //預設是int,轉換之前已經存在問題了
long total3 = money*((long)years); //先把一個數轉換為long,問題就解決了