Java基礎基本概念

Java基礎第二天


2.1回顧


第一個代碼

/**

這是我的第一個java程序

@author zhang

@version v1.0

*/

publicclass HelloJava{

    /*

    1.源文件以.java結尾

    2.源文件中可以有多個class聲明的類

    3.類中可以有主方法(即main()方法),其格式是固定的:public static void main(String[]args){}

    4.main()方法是程序的入口,方法內是程序的執行部分。

    5.一個源文件中只能有一個聲明爲public 的類,同時要求此類的類名與源文件名一致。

    6.每個語句都以";"結束

    7.執行程序:①編譯:javac.exe  編譯完,生成諸多個.class字節碼文件。②運行:java.exe

    8.多行註釋不能夠嵌套

    */

    publicstaticvoid main(String[] args){

       System.out.println("Hello World!" +'\n' +"Hello it18zhang.com");

      

    }

}


2.1 關鍵字

1關鍵字的定義和特點

關鍵字的定義和特點

定義:Java語言賦予了特殊含義,用做專門用途的字符串(單詞)

特點:關鍵字中所有字母都爲小寫

wKioL1hWjJOwn70UAAFbYdS8tUA995.png

wKiom1hWjLLy0gDQAAJaPS8EyN0501.png


保留字

Java保留字:現有Java版本尚未使用,但以後版本可能會作爲關鍵字使用。自己命名標記符時要避免使用這些保留字 
byValuecastfuture generic inner operator outer rest var goto const



2.2標識符

標識符


1Java 對各種變量、方法等要素命名時使用的字符序列稱爲標識符

2)凡是自己可以起名字的地方都叫標識符。

 

定義合法標識符規則:

 1)由26個英文字母大小寫,0-9 _ $ 組成

 2)數字不可以開頭。

 3)不可以使用關鍵字和保留字,但能包含關鍵字和保留字

 4Java中嚴格區分大小寫,長度無限制

 5)標識符不能包含空格

注意:在起名字時,爲了提高閱讀性,要儘量有意義,“見名知意

 

Java中的名稱命名規範

  1包名:多單詞組成時所有字母都小寫:xxxyyyzzz

  2類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz

  3變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz

      4常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ


案例:

/*

標識符:凡是可以自己命名的地方,都叫標識符。如:類名、方法名、變量名、接口名,。。。

 

1.標識符命名的規則:(要求嚴格遵守,否則會報編譯性的錯誤)

26個英文字母大小寫,0-9 _ $ 組成 

數字不可以開頭。

不可以使用關鍵字和保留字,但能包含關鍵字和保留字。

Java中嚴格區分大小寫,長度無限制。

標識符不能包含空格。

 

2.Java中的名稱命名規範:(如果不遵守,也不會報錯)

包名:多單詞組成時所有字母都小寫:xxxyyyzzz

類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz

變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz

常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ

 

*/

 

class TestMarker

{

    publicstaticvoid main(String[] args)

    {

       int static1 = 1;

       int myInt = 12;

       System.out.println("Hello World!");

    }

 

    publicvoid add(){

   

    }

    //注意:在起名字時,爲了提高閱讀性,要儘量有意義,“見名知意”。

    publicvoid m1(){}

    publicvoid m2(){}

}

//class 4Hello

class Static{

}

2.3 


變量的概念:

(1)內存中的一個存儲區域

(2)該區域有自己的名稱(變量名)和類型(數據類型)

(3)Java中每個變量必須先聲明,後使用

(4)該區域的數據可以在同一類型範圍內不斷變化

 

使用變量注意

1)變量的作用域:一對{ }之間有效 

2)初始化值

 

定義變量的格式:數據類型    變量名  =  初始化值

變量是通過使用變量名來訪問這塊區域的


變量的分類-按數據類型

對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間


wKioL1hWjhDBLlA9AAD2d0FQepE225.png

整數類型:byte、short、int、long

Java各整數類型有固定的表數範圍和字段長度,不受具體OS的影響,以保證java程序的可移植性。

 

java的整型常量默認爲 int 型,聲明long型常量須後加‘l’或‘L

wKiom1hWjm-gsLaTAAEOpLgHjpY168.png


浮點類型:float、double

(1)與整數類型類似,Java 浮點類型也有固定的表數範圍和字段長度,不受具體OS的影響

(2)Java 的浮點型常量默認爲double型,聲明float型常量,須後加‘f’或‘F’。

(3)浮點型常量有兩種表示形式:

    十進制數形式:如:5.12       512.0f        .512  (必須有小數點)

    科學計數法形式:如:5.12e2      512E2    100E-2

wKioL1hWjseRuJ5tAAE5dzeprVs758.png


字符類型:char

char 型數據用來表示通常意義上“字符(2字節)

字符型常量的三種表現形式:

(1)字符常量是用單引號(‘’)括起來的單個字符,涵蓋世界上所有書面語的字符。例如:char c1 = 'a';   char c2 = ''; char c3=  '9';

(2)Java中還允許使用轉義字符‘\’來將其後的字符轉變爲特殊字符型常量。例如:char c3 = \n;  // '\n'表示換行符

(3)直接使用 Unicode值來表示字符型常量:‘\uXXXX’。其中,XXXX代表一個十六進制整數。如:\u000a表示 \n

(4)char類型是可以進行運算的。因爲它都對應有Unicode


ASCII 碼

在計算機內部,所有數據都使用二進制表示。每一個二進制位(bit)有 0 1 兩種狀態,因此 8 個二進制位就可以組合出 256 種狀態,這被稱爲一個字節(byte)。一個字節一共可以用來表示 256 種不同的狀態,每一個狀態對應一個符號,就是 256 個符號,從 0000000 11111111

 

ASCII碼:上個世紀60年代,美國製定了一套字符編碼,對英語字符與二進制位之間的關係,做了統一規定。這被稱爲ASCII碼。ASCII碼一共規定了128個字符的編碼,比如空格“SPACE”是32(二進制00100000),大寫的字母A65(二進制01000001)。這128個符號(包括32個不能打印出來的控制符號),只佔用了一個字節的後面7位,最前面的1位統一規定爲0


Unicode 編碼

亂碼:世界上存在着多種編碼方式,同一個二進制數字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼

 

Unicode一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨一無二的編碼,使用 Unicode 沒有亂碼的問題。

 

Unicode 的缺點:Unicode 只是一個符號集,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲:無法區別 Unicode ASCII:計算機無法區分三個字節表示一個符號還是分別表示三個符號

 

UTF-8

UTF-8 是在互聯網上使用最廣的一種 Unicode的實現方式。

UTF-8 是一種變長的編碼方式。它可以使用 1-6 個字節表示一個符號,根據不同的符號而變化字節長度。

UTF-8的編碼規則:

  1)對於單字節的UTF-8編碼,該字節的最高位爲0,其餘7位用來對字符進行編碼(等同於ASCII碼)。

  2)對於多字節的UTF-8編碼,如果編碼包含 n 個字節,那麼第一個字節的前n 位爲1,第一個字節的第 n+1 位爲0,該字節的剩餘各位用來對字符進行編碼。在第一個字節之後的所有的字節,都是最高兩位爲"10",其餘6位用來對字符進行編碼。 

 

布爾類型:boolean

boolean 類型適於邏輯運算,一般用於程序流程控制

if條件控制語句

while循環控制語句

do-while循環控制語句;

for循環控制語句

 

boolean類型數據只允許取值truefalse,無null

不可以0或非 0 的整數替代falsetrue,這點和C語言不同


案例

//變量:基本數據類型(8個) vs 引用數據類型(類、接口、數組)

//1.java中的變量定義的格式:數據類型 變量名 = 初始化值

class TestVeriable {

    publicstaticvoid main(String[] args) {

       //2.變量得先定義,後使用

       int myInt1 = 10;

       double d = 12.3;

      

       System.out.println(myInt1);

        System.out.println(myInt1 + d);

       //i1超出了其作用的範圍,不可使用。

       //System.out.println(i1);

 

       //3.整型:byte(-128~+127)  short int(默認類型) long

       byte b1 = 12;

       //byte b2 = 128;

       short s1 = 128;

       int i1 = 12;

       //定義long型變量,值的末尾加“L”或“l

       long l1 = 2134123351345325L;

       System.out.println(l1);

 

       //4.浮點型(帶小數點的數值):float   double(默認類型)

       double d1 = 12.3;

       //聲明float類型的浮點型數據,末尾要加“F”或者“f

       float f1 = 12.3F;

       System.out.println(f1);

 

       //5.字符型(=兩個字節):char 只能表示一個字符(英文、中文、標點符號、日文、。。。)

       char c1 = 'a';

       //char c2 = 'ab';

       String str = "ab";

       char c3 = '';

       String str1 = "中國";

       //可以表示轉義字符

       char c4 = '\t';

       char c5 = '\n';

       System.out.println("abc" + c5 + "def");

       //瞭解

       char c6 = '\u1234';

       System.out.println(c6);

 

       //6.布爾類型:boolean  只能夠取值爲true 或 false 。不能取值null

       boolean bool1 = true;

       if(bool1){

           System.out.println("今天是週五");

       }else{

           System.out.println("今天明明是週六!");

       }

 

    }

 

    publicvoid method1(){

       int i1 = 10;

       System.out.println(i1);

    }

}

基本數據類型轉換

自動類型轉換:容量小的類型自動轉換爲容量大的數據類型。數據類型按容量大小排序爲:

wKioL1hWkCnzyYeHAABwyvqN7lU626.png

 

有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然後再進行計算

 

byte,short,char之間不會相互轉換,他們三者在計算時首先轉換爲int類型。

 

當把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉化爲字符串類型。


強制類型轉換

自動類型轉換的逆過程,將容量大的數據類型轉換爲容量小的數據類型。使用時要加上強制轉換符(()),但可能造成精度降低或溢出,格外要注意。

 

通常,字符串不能直接轉換爲基本類型,但通過基本類型對應的包裝類則可以實現把字符串轉換成基本類型。

 

如: String a = 43; int i = Integer.parseInt(a);

boolean類型不可以轉換爲其它的數據類型


案例:

/*

變量之間的運算:(不考慮boolean。剩下:char byte short int long floatdouble)

1.自動類型轉換

2.強制類型轉換

*/

class TestVeriable1{

    publicstaticvoid main(String[] args){

       //1.自動類型轉換:當容量小的數據類型與容量大的數據類型做運算時,容量小的會自動轉換爲

       //容量大的數據類型:char,byte,short ===>int===>long ===>float===double

       int i1 = 12;

       short s1 = 2;

       int i2 = i1 + s1;

       float f1 = 12.3F;

       float f2 = f1 + i2;

       //float d1 = f2 + 12.3;

 

       long l = 12L;

       float f3 = l;

       System.out.println(i2);

       System.out.println(f2);

 

       char c1 = 'a';//97

       c1 = 'A';//65

       int i3 = c1 + 1;

       System.out.println(i3);

 

       //需要注意的:當char\byte\short之間做運算時,默認的結果爲int類型

       short ss1 = 12;

       byte bb1 = 1;

       char cc1 = 'a';

       //short ss2 = ss1 + bb1;

       int ii1 = ss1 + bb1;

       //char cc2 = cc1 + bb1;

       int ii2 = cc1 + bb1;

       short ss2 = 11;

       //short ss3 = ss1 + ss2;

      

       //2.強制類型轉換:容量大轉換爲容量小的.要使用強制類型轉換符:()

       //強制類型轉換的問題:導致精度的損失

       long l1 = 12345L;

       int m1 = (int)l1;

       System.out.println(m1);

 

       byte by1 = (byte)m1;

       System.out.println(by1);

 

       //平時常用的字符串,也是一種數據類型:String

       String nation = "我是一箇中國人";

       System.out.println(nation);

       //字符串與基本數據類型之間的運算:只能是連接運算:+。得到的結果仍爲一個字符串

       String str = "abc";

       String str1 = str +m1;//abc12345

       System.out.println(str1);

 

       //題目:

       String st1 = "hello";

       int myInt1 = 12;

       char ch1 = 'a';//97

       System.out.println(str1+ myInt1 + ch1);//hello12a

       System.out.println(myInt1+ ch1 + str1);//109hello

       System.out.println(ch1+ str1 + myInt1);//ahello12

 

       String st2 = "12";

       str2 = 12 + "";

    }

}

 

 

練習:

String str1 = 4;        //判斷對錯:錯

String str2 = 3.5f + “”;             //判斷str2對錯:對System.out.println(str2);        //輸出:3.5

System.out .println(3+4+Hello!);      //輸出:7Hello!

System.out.println(Hello!+3+4);      //輸出:Hello!34

System.out.println(a+1+Hello!);    //輸出:98Hello!

System.out.println(Hello+a+1);            //輸出:Hello!a1


進  制


對於整數,有四種表示方式

(1)二進制0,1 ,滿21.0b0B開頭。

(2)十進制0-9 ,滿101

(3)八進制0-7 ,滿81. 以數字0開頭表示

(4)十六進制0-9A-F,滿161. 0x0X開頭表示。此處的A-F不區分大小寫。

(5)如:0x21AF +1=0X21B0


wKiom1hWkY2jjUybAAD4mxLRiK0272.png

wKioL1hWkfzgglRKAADSWfiQ9lo995.png


wKioL1hWkhKjYuTOAAAklSKq62A089.png

原碼、反碼、補碼

所有數字在計算機底層都以二進制形式存在。

計算機以補碼的形式保存所有的整數。

正數的原碼、反碼、補碼都相同


負數的補碼是其反碼加1

原碼:直接將一個數值換成二進制數。

反碼:是對原碼按位取反,只是最高位(符號位)確定爲1

Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當是long類型時,二進制默認佔64位,第64位是符號位


進制間轉化

進制的基本轉換

十進制  二進制互轉

 1)二進制轉成十進制  乘以2的冪數

 2)十進制轉成二進制  除以2取餘數

  (3)二進制  八進制互轉

  (4)二進制   十六進制互轉

  (5)十進制 八進制互轉

  (6)十進制 十六進制互轉

wKiom1hWksKTKORzAACLgYjnmaY998.pngwKiom1hWktPDxdfYAADK0gR1o6M940.png

算術運算符

wKiom1hWk2qRVWdLAAHxR67sbXQ975.png

//測試算術運算符: + - + - * / % ++ -- +

class TestAri{

    publicstaticvoid main(String[] args){

      

       // 除:/

       int i = 12;

       int j = i/5;

       double d = i / 5;

       double d1 = i/5.0;

       System.out.println(j);//2

       System.out.println(d);//2.0

       System.out.println(d1);//2.4

       //取模:%:取餘數. 結果的符號取決於被模數

       int i1 = 12 % 5;

       int i2 = -12 % 5;

       int i3 = 12 % (-5);

       int i4 = -12 % (-5);

       System.out.println(i1);

       System.out.println(i2);

       System.out.println(i3);

       System.out.println(i4);

       //++:先自增1,後做運算

       //++:先做運算,後自增1

 

       int myInt1 = 10;

       int myInt2 = myInt1++;//++

       System.out.println(myInt1);//11

       System.out.println(myInt2);//10

 

       int myInt3 = 10;

       int myInt4 = ++myInt3;//++

       System.out.println(myInt3);//11

       System.out.println(myInt4);//11

 

       //--:先自減1,後做運算

       //--:先做運算,後自減1

 

    }

}

class PrintGrap{
     public static void main(String[] args){
       System.out.print("\t");
       System.out.print("*");
    System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");

System.out.println("*");

System.out.print("*");
System.out.print("\t");
//System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("I love java");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");

System.out.println("*");

System.out.print("\t");
System.out.print("*");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");


System.out.println("*");


System.out.print("\t");
System.out.print("\t");
System.out.print("*");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");

System.out.println("*");

System.out.print("\t");
System.out.print("\t");
System.out.print("\t");
System.out.print("*");
System.out.print("\t");
System.out.print("\t");
System.out.print("\t");

System.out.println("*");
		
		
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("*");
		System.out.print("\t");
		
		System.out.println("*");

		
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		//System.out.print("\t");
		System.out.print("      ");
		System.out.print("*");

}
}


class  Test1
{
	public static void main(String[] args) 
	{
		String str1 = "4";
		String str2 = 3.5f+"";

		System.out.println(str2);
        System.out.println(str1);

		System.out.println(3+4+"hello!");   //輸出:7Hello!
        System.out.println("Hello!"+3+4);      //輸出:Hello!34
        System.out.println("a"+1+"Hello!");    //輸出:98Hello!
        System.out.println("Hello"+"a"+1);           //輸出:Hello!a1

	}
}


class  TestAri
{
	public static void main(String[] args) 
	{
		/*int i = 12;
		int j = i/5;
		double d = (double)i/5;
		double e = i/5.0;

		System.out.println(j);
	    System.out.println(d);
		System.out.println(e);
		*/


		/*int i1 = 12%5;
		int i2 = -12%5;
		int i3 = 12%(-5);
		int i4 = -12%(-5);//取模的符號和百分號前面的數字符號相同。

		System.out.println(i1);
		System.out.println(i2);
		System.out.println(i3);
		System.out.println(i4);
		*/

		/*int myInt1 = 10;
		int myInt2 = myInt1++;

        System.out.println(myInt1);//11
		System.out.println(myInt2);//10
		*/

		int myInt3 = 10;
		int myInt4 = ++myInt3;

		System.out.println(myInt3);//11
		System.out.println(myInt4);//11


		int myInt5 = 10;
		int myInt6 = myInt5--;

		System.out.println(myInt5);//9
		System.out.println(myInt6);//10


		int myInt7 = 10;
		int myInt8 = --myInt7;

		System.out.println(myInt7);//9
		System.out.println(myInt8);//9



	}
}




class  TestMarker
{
	public static void main(String[] args) 
	{

		int myInt = 15;
		myInt = 15+1;

		System.out.println(myInt);

		boolean top = false;
		top = true;

		System.out.println(top);

		//int myByte = 128.01;

		float myFloat = 128.01f;

		myFloat = 200.0f;

		double myDouble = 128;


		System.out.println(myFloat);
		//System.out.println(myByte);
		System.out.println(myDouble);
	}
}


class  TestVeriable
{
	public static void main(String[] args) 
	{
		int myInt1 = 10;
		double d = 12.3;

		byte b1 = 12;
		short s1 = 128;
		int i1 = 12;
		long l1 = 213412335134532L;

		double d1 =12.3;
		float f1 = 12.3F;

		char c1 = 'a';

		String str1 = "中國";

		char c3 = '中';

		char c4 = '\t';

		char c5 = '\n';

        char c6 = '\u1234';

		boolean bool1 = true;
		
		if (bool1)
		{
			System.out.println("今天是週五");
		}else{
		    System.out.println("今天明明是週六!");
		}


        System.out.println(myInt1);
		System.out.println(myInt1+d);

		System.out.println(b1);
        System.out.println(s1);
		System.out.println(i1);
		System.out.println(l1);

		System.out.println(d1);
		System.out.println(f1);

		System.out.println("abc"+c5+"def");

		System.out.println(c6);


	}
}










 












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章