三、java基礎語法
一、java的三個方向 java SE java EE java ME特點:一次編譯,處處執行二、 java語言基礎
* 1.識別符號:識別符號可以標識類名,變數名,介面名,方法名(凡是可以在java語言中可以起名的)
* 識別符號必須以數字,字母,下劃線,$組成,不能以數字開頭
* 嚴格區分大小寫
* 關鍵字不能做識別符號
* 識別符號最好見名知意
* 類名:首字母大寫,後面每個單詞首字母大寫HelloWorld
* 2.關鍵字:定義的一些具有特殊含義的序列
* 關鍵字都是小寫
3.關於java語言中的字面值?
* 1.字面值:一眼看上去就知道是多少的資料,就是字面值(10,3.14,true,'a')
* 2.字面值得本質:字面值就是記憶體中的一塊空間,這塊空間有型別,有值
* 3.java語言中所有的字元都採用單引號括起來,java語言中所有的字串都用雙引號括起來
*/
public class day03 { public static void mian(String[] artgs){ System.out.println(10);//整數型的字面值 System.out.println(3.14);//浮點型 System.out.println(true);//布林型 System.out.println(false);// System.out.println('a');//字元 System.out.println("sss");//字串 } }
三、變數
/*
* 關於java語言的變數
*
* 1.java中如何定義變數,語法:
* 資料型別,變數名
* 2.如何給變數賦值,語法:
* 變數名=值
* 3.變數的本質是什麼?
* 變數是記憶體中的一塊空間,這塊空間有“型別”,有“名字”,有“值”
* 4.深入變數
* //變數可以重複賦值,但不能重複宣告
//在同一個域中,變數名不能重複
*/
public class day04 { public static void main(String[] args){ //int是一種資料型別,是整型 int a;//在記憶體中開闢一塊空間,這塊空間的型別是整型,給這塊空間起名叫a//賦值 a=100; System.out.println(a); //申請一塊int型別的空間,並起名b,並賦值10 int b=10; System.out.println(b); //重新賦值 b=100; //變數可以重複賦值,但不能重複宣告 //在同一個域中,變數名不能重複 //int b=1000;//error //java語言中變數必須先宣告,再賦值,才可使用 int c; c=20; System.out.println(c); //宣告三個變數,型別都是int型別,i1,i2兩個變數沒有賦值,只有i3賦值 int i1,i2,i3 =333; //System.out.println(i1);//i1沒有初始化,沒有賦值 System.out.println(i3); } public static void m1(){ int b=2000; } }
/*
*5.關於變數作用域,有效範圍,作用範圍
* 出了大括號就不認識
*/
public class day05 { //類體 //宣告變數 int m=100; public void m1(){ int m=200; System.out.println(m); } public void m(){ int k=100; } public static void main(String[] args){ int m2=100; System.out.println(m2); //System.out.println(k); System.out.println("---------------------------------"); for(int j=0;j<10;j++){ System.out.println(j); } //System.out.println(j); System.out.println("---------------------------------"); int p; for(p=0;p<10;p++){ System.out.println(p); } System.out.println("p的值為"+p); } }
/*
* 6.變數根據出現的位置可以分為兩種:
* 1.區域性變數:在方法體中宣告的變數為區域性變數,包括形式引數列表
* 2.成員變數:在方法之外宣告的變數統稱為成員變數
*/
public class Day06 { //成員變數 int i=100; //成員變數 int m; public void m1(){ int k=100;//區域性變數 } public void m2(){ System.out.println(m); } public static void main(String[] args){ Day06 nd=new Day06(); nd.m2(); }
四、資料型別:
* 資料型別:8種 1 byte=8個bit 1kB=1024byte
* 1.基本資料型別:
* 整型(byte(1位元組):取值範圍:-128~127 1111 1111~0111 1111 (起始位為符號位,1表示負值,0表示正值)
* short(2個位元組)
* int(4個位元組),long(8個位元組))
* 浮點型(float(4個位元組),double(8個位元組))
* 字元型(char(2個位元組)):0~2的(16次方減1)0~65536
* 布林型(boolean(1個位元組),只取true,flase)
* 2.引用資料型別:陣列,類,介面
*/
/*
* 3.進位制換算
* 十進位制轉二進位制:除2取餘,逆序
* ' a'---97 'A'----65 '0'----48
*/
/*
* 4.字元編碼:
* ASCII字元編碼:採用一個位元組編碼,主要針對英文編碼
* GB2312/GBK/GB18030主要針對漢子編碼,三種編碼從容量上是包含關係
* unicode:統一了世界上所有的文字編碼,unicode有幾種實現:UTF-8,UTF-16,UTF-32
*/
/*
* 5.關於char型別
* 1.char是字元型別,java中採用unicode編碼。
* 2.底層佔用兩個位元組
* 3.char型別涉及到字元編碼方式:
* 字元如果採用編碼和解碼不一致的話,會出現亂碼
*
*/
public class Day07 { public static void main(String[] args){ char c1='a'; //error //char c2='AB'; //漢字佔用2個位元組,所以java中的char可以儲存一個漢字 char c3='中'; System.out.println(c3); } }
/*
* 6.關於java語言中的整型資料
* byte 1byte(8bit) -128~127
* short 2byte
* int 4byte
* long 8byte
*
* 7.整數型別有三種表示方式:
* 十進位制
* 八進位制 以0開始
* 十六進位制 0x開始
*/
/*
* 結論:如果這個整數沒有超出byte,short,char的範圍,可以直接將這個整數賦值給byte,short,char
*/
public class Day09 { public static void main(String[] args){ //十進位制 int i1=10;//常用 //八進位制 int i2=010; //十六進位制 int i3=0x10; System.out.println(i1); System.out.println(i2); System.out.println(i3); //將一個int型別的100字面值賦值給i4 int i4=100; //將一個int型別的123字面值賦值給long的l1 //int型別的容量小於long型別 //一下程式存在型別轉換,只不過叫做“自動型別轉換” long l1=123; //由於123後面加了一個L,所以就會把123看做long型別 //所以以下程式不存在型別轉換,只是一個複製運算 long l2=123L; //int最大的值為2147483647,如果超過long l3=2147483648,則編譯不成功 long l3=2147483647; long l4=2147483648L;//long型別 //將long轉化成int型別,不能自動型別轉化 //需要加強制型別轉換符 //以下的程式雖然編譯通過,但是程式執行階段可能會損失精度,所以一定要謹慎 // long m1=100; //int m2=m1; int m3=(int)m1; //記憶一個規則,如果這個整數沒有超出byte的範圍,可以直接將這個整數賦值給byte型別 byte b1=10; byte b2=127; //byte b3=128;//128超出範圍byte的取值範圍 //如果這個整數沒有超出short的範圍,可以直接將這個整數賦值給short short s1=32767; //short s2=32768; //如果這個整數沒有超出char的範圍,可以直接將這個整數賦值給char char c1=97; char c2=65535; //char c3=65536; } }
/*
* 8.關於浮點型
* float 4個位元組
* double 8個位元組
*
*/
/*
* 9.布林型別:
* 1.boolean型別的資料只有true和false,沒有1和0
* 2.boolean型別的資料主要在邏輯運算和條件控制語句中
* 3.在java中基本型別可以互相轉化,boolean型別比較特殊不可以轉換其他型別
* 4.預設轉化:容量小的型別自動會轉化為容量大的型別
* 1.byte--->short--->int--->float--->double
* char---->
* 2.byte,short,char之間不會相互轉換,只能先轉化成int
* 5.強制轉換:
* 1.將容量大的型別轉換成容量小的型別,需要進行強制轉換成int
* 2.只要不超出範圍,可以將整型值直接賦值給byte,short,char
* 3.在多種型別混合運算中,首先將所有的資料型別轉化成容量大的那種,在運算
*/
public class Day10 { public static void main(String[] args){ double d1=1.2; //強制型別轉化 //float f1=3.2; float f2=(float)3.2; float f3=3.2F; boolean sex=true; if(sex){ System.out.println("男"); }else{ System.out.println("女"); } //byte,short,char做混合運算時候先各自轉化成int做運算 byte b1=10; short s1=20; int i1=b1+s1; System.out.println(i1); //byte b2=b1+s1; } }
/*
* 10.關於基本資料型別轉換規則:
* 1.8種基本資料型別除boolean型別之外可以相互轉化
* 2.小容量向大容量轉換叫做自動型別轉化
* 3.byte--->short--->int--->long--->float--->double
* char--->
* 4.byte,short,char做混合運算時候,各自都先轉化成int再做運算
* 5.大容量向小容量轉換時強制型別轉化,需要強制型別轉化(編譯雖然通過,執行期可能損失精度,謹慎使用)
* 6.如果整數沒有超出byte,short,char的取值範圍,可以直接將這個整數賦值給byte,short,char
* 7.多種資料型別做混合運算,先轉換成容量大的那種,再做運算
* 8.byte:-127~128 short:32767
*/
public class Day11 { public static void main(String[] args){ //超出byte範圍 //byte b1=1000; byte b2=20; short s1=1000; //變數不能重名 //short b2=1000; int i1=1000; //小容量向大容量轉換,自動轉換 long l1=i1; //將long強制轉換成int型別 //int i2=l1; //因為大型別向小型別轉換會出現問題,精度缺失 int i3=(int)l1;//因為1000沒有超出int範圍,所以轉換時正確的 //因為java中的運算會轉換成最大的型別 //而10和3預設為int,所以運算後最大的型別為int int i4=10/3; //宣告10為long型別 long l2=10; //出現錯誤,多個型別混合運算過程中,會轉換成容量最大的型別 //以下示例最大的型別為long,而i5為int,所以就會出現大型別的long到小型別int //int i5=l2/3; //可以強制轉換,運算結果沒有超出int範圍 int i6=(int)l2/3; //可以使用long來接收運算結果 long l3=l2/3; //出現精度缺失問題,以下問題主要是優先順序的問題: //將l2轉化成int後,再將int型別的l2轉換成byte型別,然後和3運算,那麼運算結果是int型別而非byte型別 //byte b3=(byte)(int)l2/3;//錯誤 int b4=(byte)(int)l2/3; byte b5=(byte)(int)(l2/3); //不能轉換,需要先轉換成int---》byte //byte b6=(byte)l2/3; byte b7 =(byte)(l2/3); short s2=100; byte b8=5; //錯誤,short和byte型別運算,先轉化成int在運算,所以int賦值給short會精度缺失 //short s3=s2+b8; short s4=(short)(s2+b8); char c1='a'; System.out.println(c1); //將char轉化成byte型別 System.out.println((byte)c1); int i10=c1+100; System.out.println(i10); } }
五、轉義字元
* 1.關於轉義字元
* \t
* \n
* \'
* \"
*
*/
/*
*2. 預設值:
* byte,short,int,long:0
* float,double:0.0
* boolean: false
* char \u0000
*/
public class Day08 { public static void main(String[] args){ /* char c1='t'; System.out.print(c1); System.out.println("abc"); */ // \斜線在java語言中有轉義功能,可以將普通的字元t,轉化成製表符 char c1='\t'; System.out.print(c1); System.out.println("abc"); char c2='\''; System.out.println(c2); char c3='\\'; System.out.println(c3); char c4='\"'; System.out.println(c4); char c5='\n'; System.out.print("abc"); System.out.print(c5); System.out.println("def"); } }