Java語言基礎組成
1.關鍵字
2.標識符
(1)就是給類,變量,方法起名字。
(2)組成規則:
由數字0-9,英文大小寫字母,$以及_組成。
(3)注意事項:
A:只能有組成規則規定的內容組成。
B:不能以數字開頭。
C:不能是Java中的關鍵字。
A:包(文件夾,用於區分同名的類)D:區分大小寫。
全部小寫。如果多級包,用.分開。
舉例:
com一級包
tuozou.interview二級包
注意: www.tuozou.com(域名反寫)
B:類和接口
如果是一個單詞,首字母大寫。
舉例:
Demo,Test,Student
如果是多個單詞,每個單詞的首字母大寫。舉例:
HelloWorld,StudyJava
C:變量和方法
如果是一個單詞,首字母小寫。
舉例:
main(),name,age.show().method()
如果是多個單詞,從第二個單詞開始每個單詞的首字母大寫。
舉例:
showName(),studentName()
D:常量
全部大寫,如果多個單詞組成,用_連接。
舉例:
PI,STUDENT_MAX_AGE
3.註釋
註釋:就是對程序的解釋性文字。
註釋的分類:
A:單行註釋
a:以//開頭,以回車結束。
b:單行註釋是可以嵌套單行註釋的。
B:多行註釋
a:以/*開頭,以*/結束。
b:多行註釋是不可以嵌套多行註釋的,但可以嵌套單行註釋。
C:文檔註釋(瞭解)
註釋的作用:將來被Javadoc工具解析,生成一個說明書。
A:解釋程序,提高程序的閱讀性。
B:可以調試錯誤。
對於單行註釋和多行註釋,被註釋的文字,不會被JVM(Java虛擬機)解釋執行。
對於文檔註釋,是Java特有的註釋,其中註釋內容可以被JDK提供的工具javadoc所解析,生成一套以網頁文件形式體現的該程序的
說明文檔。
註釋是一個程序員必須具有的良好編程習慣。
初學者編寫程序可以養成習慣:先寫註釋再寫代碼。
將自己的思想通過註釋先整理出來,在用代碼去體現。
因爲代碼僅僅是思想的一種體現形式而已。
作用:
1、註解說明
2、調試程序
格式:
單行註釋://
多行註釋: /* */
文檔註釋: /** */
建議:寫代碼之前寫需求,思路,步驟,養成一個良好的習慣,以後一旦思想確定,後面寫代碼就是行雲流水。
如下一個Hello 黑馬程序員的小程序:
/*
1.需求:
編譯一個Hello 黑馬程序員!!的小程序
2.思路:
1).通過Java關鍵字class定義一個類
2).通過Java特殊字main定義一個主函數
3).定義一個輸出語句,打印下Hello 黑馬程序員!!
3.步驟:
1).class Demo 定義一個類
2).public static void main(String[] args) 定義一個主函數
3).System.out.println("Hello 黑馬程序員!!");定義一個輸出語句
*/
//創建一個類。
class Demo{
//主函數是程序的入口。
public static void main(String[] args){
}//輸出語句,可以打印小括號內容。
System.out.println("Hello 黑馬程序員!!");
}
4.常量和變量
常量:表示不能改變的數值。
(1)在程序的運行過程中,其值是不可以發生改變的量。
(2)常量的分類:
1:整數常量
12,-23
2:小數常量
12.5,-65.43
3:字符常量
'a','A','0'
4:字符串常量
"Hello"
5:布爾常量
true,false
6:空常量(後面講)
自定義常量(後面講)null
(3)常量可以直接被輸出。
(4)進制
(1)是一種進位的方式。X進制,表示逢x進1。(2)Java中整數常量的表示
A:二進制 由0,1組成。以0b開頭。JDK 1.7以後的新特性。B:八進制 由0-7組成。以0開頭。C:十進制 由0-9組成。默認就是十進制。D:十六進制 由0-9,A-F(不區分大小寫)組成,以0x開頭。
(3)進制轉換:
A:其他進制轉十進制
係數:就是每一位上的數據。基數:X進制,基數就是X。權:在右邊,從0開始編號,對應位上的編號即爲該位的權。結果:把係數*基數的權次冪相加即可。
B:十進制到其他進制
除基取餘,直到商爲0,餘數反轉。
變量:就是講不確定的數據進行存儲,也就是需要在內存中開闢一個空間。
(1)程序的運行過程中,在指定範圍內發生改變的量。
(2)格式:
格式1:
數據類型 變量名 = 初始化值;
格式2:
數據類型 變量名;
變量名 = 初始化值;
舉例:
方式1:
byte b = 10;
方式2:
byte b;
b = 10;
理解:變量就如同數學中的未知數。
數據類型
Java語言是強類型語言,對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間
數據分類
1)基本類型:4類8種。
整型:佔用字節
布爾型:byte(1)short(2)int(4)long(8)
boolean(1) 不明確。可以認爲是1個字節。
只有倆字結果,一個是true,另一個是false。
字符型:
char(2)
浮點型:
float(4)double(8)
2)引用類型:類,接口,數組。(先了解)
注意:
整數默認是int類型。long類型需要加L或者l後綴。
浮點數默認是double類型。float類型需要加F或者f後綴。
類型轉換
1、boolean類型不參與轉換。(因爲boolean值是常量,默認只有倆個值,要麼true,要麼false)
2、隱式轉換(從小到大)
自動類型提升,從小到大的提升。
(byte,short,char) --> int --> long --> float --> double
3、強制轉換(從大到小)
強制類型轉換,從大到小的轉換。
intb;b=(byte)(b+2)
格式:
(數據類型)數據;
表達式的數據類型自動提升
所有byte型、short型和char的值將被提升到int型。
如果一個操作數是long型,計算結果就是long型。
如果一個操作數是float型,計算結果就是float型。
如果一個操作數是double型,計算結果就是double型。
分析:
System.out.println(‘a’)與System.out.println(‘a’+1)的區別。
System.out.println(‘a’)打印的是a。
System.out.println(‘a’+1)打印的是98,自動類型提升,把a轉換成ASCII編碼值(97)與1相加。
變量的什麼時候定義?
當數據不確定時,需要對數據進行存儲時,就定義一個變量來完成存儲動作。
轉義字符
\n :換行
\b:退格
\r:按回車
\t:製表符
面試題:
byte b = 4;b = 3+7;
System.out.println(b);//打印出來是10
------------------------------------------------
byte b = 4;byte b1 = 3;byte b2 = 7;
b = b1 + b2;
System.out.println(b);
提示可能損失精度
byte b=4; 編譯器在編譯的時候,右邊默認是整型,但是他會判斷.這數字在不在byte字節這個範圍之內(-128~127),如果在的話,把這個4做了一個默認的強轉,把最後一個字節賦到b中,這時b是在byte範圍內所以編譯不會報錯。
b1和b2是變量,是不確定的值,不能檢查。
int x;
int x1 =Integer.MAX_VALUE;//2147483647Z最大數
int x2 = 2;
x = x1+x2;
System.out.println(x);
不出錯,打印出來是負數。
int是默認類型,一旦超出範圍,底層有強制轉換過程,只保留自己原有位,高位全捨棄。
5.運算符
(1)就是把常量和變量連接的符號,一般參與運算使用。
(2)分類:
算術運算符 +,-,*,/,%,++,--
+):正號,加法,字符串連接符。
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
%):取得餘數
左邊如果大於右邊,結果是餘數。
左邊如果小於右邊,結果是左邊。
左邊如果等於右邊,結果是0。
正負號跟左邊一致。
++與--:
++ 其實相當於把數據+1
- - 其實相當於把數據-1
單獨使用:在數據的前後,結果一致。
參與操作使用:
如果在數據的後邊,數據先操作,在++/--
如果在數據的前邊,數據先++/--,在操作。
賦值運算符 =,+=,-=,*=,/=,%=
int a = 10;
把10賦值給int類型的變量a。
a += 20;
把左邊和右邊的和賦值給左邊。
注意事項:
a = a + 20;
a += 20;
結果是等價的,理解不是等價的。
因爲+=這種運算符,內含了強制類型轉換功能。
比如:
short s = 2;
s+=3;
等價於 s = (short)(s+3);
關係運算符 ==,!=,>,>=,<,<=
特點:關係運算符的結果都是boolean類型。
請千萬注意:== 不要寫成 =
邏輯運算符
&與運算 |或運算 ^異或運算 !非運算 &&短路與運算 ||短路或運
&:符號的運算特點:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
&:運算規律:
&運算的兩邊只有有一個是false,結果肯定是false。
只有兩邊都爲true,結果纔是true。
|:符號的運算特點:true & true = true;
true & false = true;
false & true = true;
false & false = false;
|:運算規律:
|運算的兩邊只要有一個是true,結果肯定是true。
只有兩邊都爲false。結果是false。
^:異或 :和或有點不一樣。
^:運算特點。
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^異或的運算規律:
^符號的兩邊結果如果相同,結果是 false。
兩邊的結果不同,結果是true。
!:非運算,判斷事物的另一面。
!true =false
!false=true;
!!true=true;
面試題:
&&和&運算的結果是一樣的。但是運算過程有點小區別。
&:無論左邊的運算結果是什麼,右邊都參與運算。
&&:當左邊爲false時,右邊不參與運
||和|運算的結果是一樣的。但是運算過程有點小區別。
|:無論左邊的運算結果是什麼,右邊都參與運算。
||:當左邊爲true時,右邊不參與運算的。
位運算是直接對二進制進行運算
<<左移運算 >>右移運算 >>>無符號右移運算 &與運算 |或運算 ^異或運算 ~反碼運算
<<左移幾位其實就是該數據乘以2的幾次方。左移:可以完成2的次冪運算
>>右移幾位其實就是該數據除以2的幾次冪。右移:對於高位出現的空位,原來高位是什麼就用什麼補這個空位。
>>>:無符號右移:數據進行右移時,高位出現的空位,無論原高位是什麼,空位都用0補。
^一個數異或同一個數兩次,結果還是這個數。
練習:
對兩個整數變量的值進行互換(不需要第三方變量)
開發時,使用第三方變量的形式,因爲閱讀性強。
int a = 3,b = 5, c;
c = a ;a = b ;b = c ;
Sytem.out.println("a="+a+",b="+b);
這種方式不要用,如果兩個整數的數值過大,會超出int範圍,會強制轉換。數據會變化。
a= a + b;//a = 3 + 5;a = 8;
b= a - b;//3+5-5 = 3;b = 3;
a= a - b;//3+5-3 = 5;a = 5;
面試的時候用。
a= a ^ b;//a = 3 ^ 5;
b= a ^ b;//b = (3^5)^5; b = 3;
a= a ^ b;//a = (3^5)^3; a = 5;
三元運算符
格式:(條件表達式)?表達式1:表達式2 ;
如果條件爲true,運算後的結果是表達式1,
如果條件爲flase,運算後的結果是表達式2
示例:獲取兩個數中大數。
int x = 3, y = 4, z;
z = (x>y) ? x:y; //z變量存儲的就是兩個數的大數。