java 語法_Java基礎語法

標識符

定義

給包,類,方法,變量起名字的符號。

組成規則

標識符由字母、數字、下劃線、美元符號組成。

命名原則:見名知意

包名:全部小寫,多級包用.隔開。

舉例:com.jourwon

類、接口:一個單詞首字母大寫,多個單詞每個單詞的首字母大寫。

舉例:Student,Car,HelloWorld

方法和變量:一個單詞首字母小寫,多個單詞從第二個單詞開始每個單詞的首字母大寫。

舉例:age,maxAge,show(),getAge()

常量:如果是一個單詞,所有字母大寫,如果是多個單詞,所有的單詞大寫,用下劃線區分每個單詞。

舉例:DATE,MAX_AGE

項目名:全部用小寫字母,多個單詞之間用橫桿-分割。

舉例:demo,spring-boot

注意事項

不能以數字開頭

不能是Java中的關鍵字

Java標識符大小寫敏感,長度無限制

標識符不能包含空格

關鍵字

定義

被Java語言賦予了特殊含義,用作專門用途的字符串(單詞),這些關鍵字不能用于常量、變量、和任何標識符的名稱。

Java關鍵字(Java 8版本)

2d290fbd0e0f

Java關鍵字(Java 8版本)

Java關鍵字(Java 8 以后版本)

2d290fbd0e0f

Java關鍵字(Java 8 以后版本)

注意事項

true,false和,null看起來像關鍵字,但它們實際上是文字; 您不能在程序中將它們用作標識符。

注釋

定義

用于解釋說明程序的文字

分類

單行注釋

格式: // 注釋文字

多行注釋

格式: /* 注釋文字 */

文檔注釋

格式:/** 注釋文字 */

作用

在程序中,尤其是復雜的程序中,適當地加入注釋可以增加程序的可讀性,有利于程序的修改、調試和交流。注釋的內容在程序編譯的時候會被忽視,不會產生目標代碼,注釋的部分不會對程序的執行結果產生任何影響。

注意事項

多行和文檔注釋都不能嵌套使用。

訪問修飾符

定義

Java中,可以使用訪問修飾符來保護對類、變量、方法和構造方法的訪問。Java 支持 4 種不同的訪問權限。

分類

private : 在同一類內可見。使用對象:變量、方法。 注意:不能修飾類(外部類)

default (即缺省,什么也不寫,不使用任何關鍵字): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。

protected : 對同一包內的類和所有子類可見。使用對象:變量、方法。 注意:不能修飾類(外部類)。

public : 對所有類可見。使用對象:類、接口、變量、方法

訪問修飾符圖

2d290fbd0e0f

訪問修飾符圖

分隔符

定義

空格、逗號、分號以及行結束符都被稱為分隔符,規定任意兩個相鄰標識符、數字、保留字或語句之間必須至少有一個分隔符,以便程序編譯時能夠識別。

分類

; 分號 用來終止一個語句

{} 花括號、大括號 用來包括自動初始化的數組的值,也用來定義程序塊、類、方法以及局部范圍

[] 方括號、中括號 用來聲明數組的類型,也用來表示撤消對數組值的引用

, 逗號 在變量聲明中,區分變量說明的各個變量。在for控制語句中,用來將圓括號內的語句連接起來

. 原點 用來將軟件包的名字與它的子包或類分隔。也用來將引用變量與變量或方法分隔

() 圓括號 在定義和調用方法時用來容納參數表。在控制語句或強制類型轉換組成的表達式中用來表示執行或計算的優先權

注意事項

必須都是半角下的英文符號。

轉義字符

定義

轉義字符是一種特殊的字符常量。轉義字符以反斜線""開頭,后跟一個或幾個字符。轉義字符具有特定的含義,不同于字符原有的意義,故稱“轉義”字符。

常見轉義字符表

2d290fbd0e0f

常見轉義字符表

Java中需要轉義的字符

在Java中,不管是String.split(),還是正則表達式,有一些特殊字符需要轉義,這些字符是

( [ { / ^ - $ | } ] ) ? * + .

轉義方法為字符前面加上"\",這樣在split、replaceAll時就不會報錯。不過要注意,String.contains()方法不需要轉義。

空行

空白行,或者有注釋的行,Java編譯器都會忽略掉

進制

定義

進制也就是進位計數制,是人為定義的帶進位的計數方法。

十進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x進位。

常用進制類型

二進制

計算機底層都是使用二進制進行存儲以及運算

0b****;(以0b或者0B開始,*表示0或1)比如:010101

原碼、反碼、補碼

原碼

原碼:將一個整數轉換成二進制表示

以 int 類型為例,int類型占4個字節、共32位。

例如:

2 的原碼為:00000000 00000000 00000000 00000010

-2的原碼為:10000000 00000000 00000000 00000010

反碼

反碼

正數的反碼:與原碼相同

負數的反碼:原碼的符號位不變,其他位取反

例如,-2 的反碼為:11111111 11111111 11111111 11111101

補碼

補碼

正數的補碼:與原碼相同

負數的補碼:反碼+1

例如,-2 的補碼為:01111111 11111111 11111111 11111110

注意事項

二進制的最高位是符號位(“0”代表正數,“1”代表負數);

Java中沒有無符號數;

計算機以整數的補碼進行運算;

八進制

0****;(以數字0開始,*表示0到7任意數字 比如:012345)

十進制

0~9組成 比如:100

十六進制

0x****;(以0x或者0X開始,*表示09或者af組成 比如:0x12c)

進制轉換

十進制轉二進制

方法為:十進制數除2取余法,即十進制數除2,余數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。

150十進制轉二進制

2d290fbd0e0f

150十進制轉二進制

二進制轉十進制

方法為:把二進制數按權展開、相加即得十進制數。

150二進制轉十進制

2d290fbd0e0f

150二進制轉十進制

流程控制語句

定義

流程是指程序運行時,各語句的執行順序。流程控制語句就是用來控制程序中各語句執行的順序。

分類

順序結構

定義

順序結構是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先后順序,依次執行,程序中大多數的代碼都是這樣執行的

舉例

/*

* 順序結構:從上往下,依次執行

*/

public class OrderDemo {

public static void main(String[] args) {

System.out.println("開始");

System.out.println("語句A");

System.out.println("語句B");

System.out.println("語句C");

System.out.println("結束");

}

}

分支結構(選擇結構)

定義

條件語句可根據不同的條件執行不同的語句。包括if條件語句與switch多分支語句。

分類

if分支結構

第一種格式

格式

if(條件表達式){

執行的代碼塊;

}

執行流程

執行流程圖

2d290fbd0e0f

if語句格式1

執行流程說明

首先判斷關系表達式看其結果是true還是false

如果是true就執行語句體

如果是false就不執行語句體

舉例

public class IfDemo {

public static void main(String[] args) {

System.out.println("開始");

// 定義兩個變量

int a = 10;

int b = 20;

if (a == b) {

System.out.println("a等于b");

}

int c = 10;

if (a == c) {

System.out.println("a等于c");

}

System.out.println("結束");

}

}

第二種格式

格式

if(條件表達式){

執行的代碼塊;

}else{

執行的代碼塊;

}

執行流程

執行流程圖

2d290fbd0e0f

if語句格式2

執行流程說明

首先判斷關系表達式看其結果是true還是false

如果是true就執行語句體1

如果是false就執行語句體2

舉例

public class IfDemo2 {

public static void main(String[] args) {

System.out.println("開始");

// 判斷給定的數據是奇數還是偶數

// 定義變量

int a = 100;

// 給a重新賦值

a = 99;

if (a % 2 == 0) {

System.out.println("a是偶數");

} else {

System.out.println("a是奇數");

}

System.out.println("結束");

}

}

第三種格式

格式

if(條件表達式){

執行的代碼塊;

}else if(條件表達式){

執行的代碼塊;

}......(此處省略N個else if)

else{

執行代碼塊;

}

執行流程

執行流程圖

2d290fbd0e0f

if語句格式3

執行流程說明

首先判斷關系表達式1看其結果是true還是false

如果是true就執行語句體1

如果是false就繼續判斷關系表達式2看其結果是true還是false

如果是true就執行語句體2

如果是false就繼續判斷關系表達式…看其結果是true還是false

如果沒有任何關系表達式為true,就執行語句體n+1

舉例

public class IfDemo3 {

public static void main(String[] args) {

// x和y的關系滿足如下:

// x>=3 y = 2x + 1;

// -1<=x<3 y = 2x;

// x<=-1 y = 2x – 1;

// 根據給定的x的值,計算出y的值并輸出。

// 定義變量

int x = 5;

/*

int y;

if (x >= 3) {

y = 2 * x + 1;

} else if (x >= -1 && x < 3) {

y = 2 * x;

} else if (x <= -1) {

y = 2 * x - 1;

}else {

y = 0;

}

*/

int y = 0;

if (x >= 3) {

y = 2 * x + 1;

} else if (x >= -1 && x < 3) {

y = 2 * x;

} else if (x <= -1) {

y = 2 * x - 1;

}

System.out.println("y的值是:"+y);

}

}

注意事項

1、一旦滿足某個條件表達式,則進入其執行語句塊執行,執行完畢后不會執行其一下的條件語句。

2、如果多個條件表達式之間為“互斥”關系,多個語句之間可以上下調換順序,一旦是包含關系,要求條件表達式范圍小的寫到范圍大的上邊;

switch分支結構

執行流程

執行流程說明

首先計算出表達式的值

其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。

最后,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然后程序結束掉。

執行流程圖

2d290fbd0e0f

switch執行流程

舉例

public class SwitchDemo {

public static void main(String[] args) {

//創建鍵盤錄入對象

Scanner sc = new Scanner(System.in);

//接收數據

System.out.println("請輸入一個數字(1-7):");

int weekday = sc.nextInt();

//switch語句實現選擇

switch(weekday) {

case 1:

System.out.println("星期一");

break;

case 2:

System.out.println("星期二");

break;

case 3:

System.out.println("星期三");

break;

case 4:

System.out.println("星期四");

break;

case 5:

System.out.println("星期五");

break;

case 6:

System.out.println("星期六");

break;

case 7:

System.out.println("星期日");

break;

default:

System.out.println("你輸入的數字有誤");

break;

}

}

}

注意事項

1、swich(表達式)中表達式的返回值必須是以下幾種類型之一:

byte,short,char,int,枚舉(jdk1.5),String(jdk1.7)

2、case子句中的值必須是常量,且所有case子句中的值應是不同的;

3、default子句是可任選的,當沒有匹配的case時,執行default;

4、break語句用來在執行完一個case分支后使程序跳出swich語句塊;如果沒有break程序會順序執行到swich結尾;

if分支結構和switch分支結構區別

if和swich語句很想,如果判斷的具體數值不多,而且復合byte、short、int、char這四種類型。建議使用swich語句,因為效率稍高;

其他情況:對區間進行判斷,對結果為boolean類型進行判斷,使用if,if的使用范圍比較廣泛。

循環結構

定義

循環語句就是在滿足一定條件的情況下反復執行某一個操作。包括while循環語句、do···while循環語句和for循環語句。

分類

for循環語句

執行流程

執行流程圖

2d290fbd0e0f

for循環語句的執行流程圖

執行流程說明

A:執行初始化語句

B:執行判斷條件語句,看其結果是true還是false

如果是false,循環結束。

如果是true,繼續執行。

C:執行循環體語句

D:執行控制條件語句

E:回到B繼續

格式

for(初始化語句;判斷條件語句;控制條件語句) {

循環體語句;

}

舉例

public class ForDemo {

public static void main(String[] args) {

//原始寫法

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("-------------------------");

//用循環改進

for(int x=1; x<=10; x++) {

System.out.println("HelloWorld");

}

}

}

foreach循環語句

執行流程

執行流程說明

和for循環執行流程相似

格式

for (聲明語句 : 表達式) {

//代碼句子

}

舉例

public class Test {

public static void main(String args[]) {

int [] numbers = {10, 20, 30, 40, 50};

for ( int x : numbers ) {

System.out.print( x );

System.out.print(",");

}

System.out.print();

String [] names = {"James", "Larry", "Tom", "Lacy"};

for ( String name : names ) {

System.out.print( name );

System.out.print(",");

}

}

}

定義

它是Java5后新增的for語句的特殊簡化版本,并不能完全替代for語句,但所有foreach語句都可以改寫為for語句。foreach語句在遍歷數組等時為程序員提供了很大的方便。

while循環語句

格式

基本格式

while(判斷條件語句) {

循環體語句;

}

擴展格式

初始化語句;

while(判斷條件語句) {

循環體語句;

控制條件語句;

}

執行流程

執行流程圖

2d290fbd0e0f

while循環語句的執行流程圖

執行流程說明

while循環語句的循環方式為利用一個條件來控制是否要繼續反復執行這個語句。

舉例

public class WhileDemo {

public static void main(String[] args) {

//輸出10次HelloWorld

/*

for(int x=1; x<=10; x++) {

System.out.println("HellloWorld");

}

*/

//while循環實現

int x=1;

while(x<=10) {

System.out.println("HellloWorld");

x++;

}

}

}

do…while循環語句

格式

基本格式

do {

循環體語句;

}while((判斷條件語句);

擴展格式

初始化語句;

do {

循環體語句;

控制條件語句;

} while((判斷條件語句);

執行流程

執行流程圖

2d290fbd0e0f

do...while循環語句的執行流程圖

執行流程說明

A:執行初始化語句;

B:執行循環體語句;

C:執行控制條件語句;

D:執行判斷條件語句,看是true還是false

如果是true,回到B繼續

如果是false,就結束

舉例

public class DoWhileDemo {

public static void main(String[] args) {

//輸出10次 HelloWorld

/*

for(int x=1; x<=10; x++) {

System.out.println("HelloWorld");

}

*/

//do...while改寫

int x=1;

do {

System.out.println("HelloWorld");

x++;

}while(x<=10);

}

}

三種循環的區別

雖然可以完成同樣的功能,但是還是有小區別:

do…while循環至少會執行一次循環體。

for循環和while循環只有在條件成立的時候才會去執行循環體

for循環語句和while循環語句的小區別:

使用區別:控制條件語句所控制的那個變量,在for循環結束后,就不能再被訪問到了,而while循環結束還可以繼續使用,如果你想繼續使用,就用while,否則推薦使用for。原因是for循環結束,該變量就從內存中消失,能夠提高內存的使用效率。

跳轉語句(控制循環結構)

定義

Java語言中提供了3種跳轉語句,分別是break語句、continue語句和return語句。

分類

break

break的使用場景

break的使用場景:

在選擇結構switch語句中,在循環語句中

離開使用場景的存在是沒有意義的

break的作用:跳出單層循環

舉例

/*

* break:中斷的意思

* 使用場景:

* A:switch語句中

* B:循環中

* 注意:

* 離開使用場景是沒有意義的。

* 作用:

* 跳出循環,讓循環提前結束

*/

public class BreakDemo {

public static void main(String[] args) {

//break;

for(int x=1; x<=10; x++) {

if(x == 3) {

break;

}

System.out.println("HelloWorld");

}

}

}

continue

continue的使用場景

continue的使用場景:

在循環語句中

離開使用場景的存在是沒有意義的

continue的作用:

單層循環對比break,然后總結兩個的區別

break 退出當前循環

continue 退出本次循環

舉例

/*

* continue:繼續的意思

* 使用場景:

* 循環中

* 注意:

* 離開使用場景是沒有意義的

* 作用:

* 結束一次循環,繼續下一次的循環

* 區別:

* break:退出循環

* continue:結束一次循環,繼續下一次的循環

*/

public class ContinueDemo {

public static void main(String[] args) {

//continue;

for(int x=1; x<=10; x++) {

if(x == 3) {

//break;

continue;

}

System.out.println("HelloWorld");

}

}

}

return

return的使用場景

return的使用場景:

在循環語句中

在方法中

return的作用:可以從一個方法返回,并把控制權交給調用它的語句。

直接結束整個方法,從而結束循環。

舉例

public class ReturnDemo {

public static void main(String[] args) {

getStr();

}

public String getStr() {

return "Hello";

}

}

表達式

定義

用運算符把常量或者變量連接起來符號java語法的式子就可以稱為表達式。

類型和值

表達式值的數據類型即為表達式的類型。

對表達式中操作數進行運算得到的結果是表達式的值。

運算順序

應按照運算符的優先級從高到低的順序進行;

優先級相同的運算符按照事先約定的結合方向進行;

舉例

a + b

3.14 + a

(x + y) * z + 100

boolean b= i < 10 && (i%10 != 0)

運算符

定義

分類

算術運算符

2d290fbd0e0f

算術運算符

/ % ++ -- +

注意事項

1、/ 左右兩端的類型需要一致;

2、%最后的符號和被模數相同;

3、前++;先+1,后運算 后++;先運算,后+1;

4、+:當String字符串與其他數據類型只能做連接運算;并且結果為String類型;

比較運算符(關系運算符)

= += -= *= /= %=

比較運算符1

2d290fbd0e0f

比較運算符

比較運算符2

2d290fbd0e0f

比較運算符2

注意事項

1、比較運算符的兩端都是boolean類型,也就是說要么是true,要么是false;

2、比較運算符的"=="與"="的作用是不同的,使用的時候需要小心。

賦值運算符

= += -= *= /= %=

基本的賦值運算符:=

擴展的賦值運算符:+=,-=,*=,/=,%=

+=: a+=20;相當于a = (a的數據類型)(a + 20);

邏輯運算符(符號的兩端都是boolean類型)

& | ^ ! && ||

注意事項

1、& 與 &&以及|與||的區別:

&:左邊無論真假,右邊都會進行運算;

&&:如果左邊為假,則右邊不進行運算;

| 與 || 的區別同上;在使用的時候建議使用&&和||;

2、(^)與或(|)的不同之處是:當左右都為true時,結果為false。

邏輯運算符

2d290fbd0e0f

邏輯運算符

位運算符(兩端都是數值型的數據)

位運算符1

2d290fbd0e0f

位運算符1

位運算符2

2d290fbd0e0f

位運算符2

三元運算符(三目運算符)

三元運算符

2d290fbd0e0f

三元運算符

注意事項

1、表達式1與表達式2的類型必須一致;

2、使用三元運算符的地方一定可以使用if..else代替,反之不一定成立;

運算符的優先級

2d290fbd0e0f

運算符的優先級

優先級按照從高到低的順序書寫,也就是優先級為1的優先級最高,優先級14的優先級最低。使用優先級為 1 的小括號可以改變其他運算符的優先級。

變量

定義

在程序執行的過程中,在某個范圍內其值可以發生改變的量。

從本質上講,變量其實是內存中的一小塊區域

分類

按被聲明的位置劃分

成員變量

方法外部,類內部定義的變量

類變量(靜態變量):獨立于方法之外的變量,用 static 修飾。

類變量也稱為靜態變量,在類中以static關鍵字聲明,但必須在方法構造方法和語句塊之外。

無論一個類創建了多少個對象,類只擁有類變量的一份拷貝。

靜態變量除了被聲明為常量外很少使用。常量是指聲明為public/private,final和static類型的變量。常量初始化后不可改變。

靜態變量儲存在靜態存儲區。經常被聲明為常量,很少單獨使用static聲明變量。

靜態變量在第一次被訪問時創建,在程序結束時銷毀。

與實例變量具有相似的可見性。但為了對類的使用者可見,大多數靜態變量聲明為public類型。

默認值和實例變量相似。數值型變量默認值是0,布爾型默認值是false,引用類型默認值是null。變量的值可以在聲明的時候指定,也可以在構造方法中指定。此外,靜態變量還可以在靜態語句塊中初始化。

靜態變量可以通過:ClassName.VariableName的方式訪問。

類變量被聲明為public static final類型時,類變量名稱一般建議使用大寫字母。如果靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。

實例變量(非靜態變量):獨立于方法之外的變量,不過沒有 static 修飾。

實例變量聲明在一個類中,但在方法、構造方法和語句塊之外;

當一個對象被實例化之后,每個實例變量的值就跟著確定;

實例變量在對象創建的時候創建,在對象被銷毀的時候銷毀;

實例變量的值應該至少被一個方法、構造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息;

實例變量可以聲明在使用前或者使用后;

訪問修飾符可以修飾實例變量;

實例變量對于類中的方法、構造方法或者語句塊是可見的。一般情況下應該把實例變量設為私有。通過使用訪問修飾符可以使實例變量對子類可見;

實例變量具有默認值。數值型變量的默認值是0,布爾型變量的默認值是false,引用類型變量的默認值是null。變量的值可以在聲明時指定,也可以在構造方法中指定;

實例變量可以直接通過變量名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName。

類變量和實例變量的區別

調用方式

靜態變量也稱為類變量,可以直接通過類名調用。也可以通過對象名調用。這個變量屬于類。

成員變量也稱為實例變量,只能通過對象名調用。這個變量屬于對象。

存儲位置

靜態變量存儲在方法區長中的靜態區。

成員變量存儲在堆內存。

生命周期

靜態變量隨著類的加載而存在,隨著類的消失而消失。生命周期長。

成員變量隨著對象的創建而存在,隨著對象的消失而消失。

與對象的相關性

靜態變量是所有對象共享的數據。

成員變量是每個對象所特有的數據。

局部變量

局部變量:類的方法中的變量。

局部變量聲明在方法、構造方法或者語句塊中;

局部變量在方法、構造方法、或者語句塊被執行的時候創建,當它們執行完成后,變量將會被銷毀;

訪問修飾符不能用于局部變量;

局部變量只在聲明它的方法、構造方法或者語句塊中可見;

局部變量是在棧上分配的。

局部變量沒有默認值,所以局部變量被聲明后,必須經過初始化,才可以使用。

成員變量和局部變量的區別

作用域

成員變量:針對整個類有效。

局部變量:只在某個范圍內有效。(一般指的就是方法,語句體內)

存儲位置

成員變量:隨著對象的創建而存在,隨著對象的消失而消失,存儲在堆內存中。

局部變量:在方法被調用,或者語句被執行的時候存在,存儲在棧內存中。當方法調用完,或者語句結束后,就自動釋放。

生命周期

成員變量:隨著對象的創建而存在,隨著對象的消失而消失

局部變量:當方法調用完,或者語句結束后,就自動釋放。

初始值

成員變量:有默認初始值。

局部變量:沒有默認初始值,使用前必須賦值。

使用原則

在使用變量時需要遵循的原則為:就近原則

首先在局部范圍找,有就使用;接著在成員位置找。

按所屬的數據類型劃分

基本數據類型變量

基本數據類型

byte,short,int,long,float,double,char,boolean

變量的定義格式

數據類型 變量名 = 初始化值;

注意

整數默認是int類型,定義long類型的數據時,要在數據后面加L。

浮點數默認是double類型,定義float類型的數據時,要在數據后面加F。

引用數據類型變量

定義格式

數據類型 變量名 = 初始化值;

注意:格式是固定的,記住格式,以不變應萬變

舉例

public class Variable{

// 類變量

static int allClicks=0;

// 實例變量

String str="hello world";

public void method(){

// 局部變量

int i =0;

}

}

注意事項

類外面不能有變量的聲明

常量

定義

常量定義:在程序執行的過程中,其值不可以發生改變的量。常量不同于常量值,它可以在程序中用符號來代替常量值使用,因此在使用前必須先定義。

常量值定義:常量和常量值是不同的概念,常量值又稱為字面常量,它是通過數據直接表示的。

關系:常量值是常量的具體和直觀的表現形式,常量是形式化的表現。通常在程序中既可以直接使用常量值,也可以使用常量。

分類

字符串常量 用雙引號括起來的內容(“HelloWorld”)

整數常量 所有整數(12,-23)

小數常量 所有小數(12.34)

字符常量 用單引號括起來的內容(‘a’,’A’,’0’)

布爾常量 較為特有,只有true和false

空常量 null(數組部分講解)

舉例

Java 語言使用 final 關鍵字來定義一個常量

final int COUNT=10;

final float HEIGHT=10.2F;

注意事項

在定義常量時就需要對該常量進行初始化。

final 關鍵字不僅可以用來修飾基本數據類型的常量,還可以用來修飾對象的引用或者方法。

為了與變量區別,常量取名一般都用大寫字符。

數據類型

定義

Java語言是強類型語言,對于每一種數據都定義了明確的具體的數據類型,在內存中分配了不同大小的內存空間。

分類

基本數據類型

數值型

整數類型(byte,short,int,long)

浮點類型(float,double)

字符型(char)

布爾型(boolean)

引用數據類型

類(class)

接口(interface)

數組([])

計算機存儲單元

定義:變量是內存中的小容器,用來存儲數據。那么計算機內存是怎么存儲數據的呢?無論是內存還是硬盤,計算機存儲設備的最小信息單元叫“位(bit)”,我們又稱之為“比特位”,通常用小寫的字母b表示。而計算機最小的存儲單元叫“字節(byte)”,通常用大寫字母B表示,字節是由連續的8個位組成。

常用存儲單元關系

1B= 8b

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

Java基本數據類型圖

2d290fbd0e0f

Java基本數據類型

數據類型轉換

定義

數據類型的轉換是在所賦值的數值類型和被變量接收的數據類型不一致時發生的,它需要從一種數據類型轉換成另一種數據類型。

分類

隱式轉換

定義

在運算過程中,由于不同的數據類型會轉換成同一種數據類型,所以整型、浮點型以及字符型都可以參與混合運算。自動轉換的規則是從低級類型數據轉換成高級類型數據。

轉換規則

數值型數據的轉換:byte→short→int→long→float→double。

字符型轉換為整型:char→int。

轉換條件

自動類型轉換的實現需要同時滿足兩個條件:①兩種數據類型彼此兼容,②目標類型的取值范圍大于源數據類型(低級類型數據轉換成高級類型數據)。例如 byte 類型向 short 類型轉換時,由于 short 類型的取值范圍較大,會自動將 byte 轉換為 short 類型。

顯式轉換

定義

當兩種數據類型不兼容,或目標類型的取值范圍小于源類型時,自動轉換將無法進行,這時就需要進行強制類型轉換。

語法格式

目標類型 變量名 = (目標類型) (被轉換的數據);

舉例:int b = (byte)(a + b);

注意

如果超出了被賦值的數據類型的取值范圍得到的結果會與你期望的結果不同

不建議強制轉換,因為會有精度的損失。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540035.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

POJ1061:青蛙的約會——題解

http://poj.org/problem?id1061 Description 兩只青蛙在網上相識了&#xff0c;它們聊得很開心&#xff0c;于是覺得很有必要見一面。它們很高興地發現它們住在同一條緯度線上&#xff0c;于是它們約定各自朝西跳&#xff0c;直到碰面為止。可是它們出發之前忘記了一件很重要的…

用了mysql報oracle錯誤_mysql數據遷移到oracle錯誤總結

最近處理一個需求&#xff0c;使用腳本方式將mysql里的數據遷移到oracle中。處理思路主要是利用mysqldump導出的insert dump文件&#xff0c;oracle中建立相同表結構執行insert。記錄本次操作中遇到的問題與處理方式&#xff1a;1、超4000字節字符串導入問題描述oracle varchar…

運行Hadoop自帶的wordcount單詞統計程序

1.使用示例程序實現單詞統計 &#xff08;1&#xff09;wordcount程序 wordcount程序在hadoop的share目錄下&#xff0c;如下&#xff1a; 123456789[rootleaf mapreduce]# pwd /usr/local/hadoop/share/hadoop/mapreduce[rootleaf mapreduce]# ls hadoop-mapreduce-client-app…

java for 線程_如何在for循環中使用多線程

import java.util.concurrent.Executor;import java.util.concurrent.Executors;public class Test {private final static Executor executor Executors.newCachedThreadPool();//啟用多線程public static void main(String[] args) {for(int i0;i<3;i){final int ji; …

office2010安裝出現錯誤1935的解決方法

安裝Office2010 professional plus 2010過程中彈出錯誤&#xff0c;提示錯誤 1935&#xff0c;安裝程序集組件的過程中發生錯誤。HRESULT:0x800070BC9 如下圖所示&#xff1a; 這個錯誤是由于電腦.net framework 未安裝或安裝有錯誤導致的。解決方法為&#xff1a;下載.net fra…

java linux 服務_java項目部署Linux服務器幾種啟動方式總結經驗

一&#xff1a;兩種部署包&#xff1a;部署之前先說下兩種包&#xff0c;java項目部署到服務器一般有用war包的&#xff0c;也有用jar包的&#xff0c;微服務spring-cloud普及后大部分打包都是jar&#xff0c;部署之前先搞清楚自己要打war包還是jar包&#xff0c;下面小介紹兩種…

HTML溫故知新1

什么是 HTML&#xff1f; HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言 (Hyper Text Markup Language)HTML 不是一種編程語言&#xff0c;而是一種標記語言 (markup language)標記語言是一套標記標簽 (markup tag)HTML 使用標記標簽來描述網頁 HTML 標簽 HTML 標…

java 接口與包_java常用類包接口

類StringIntegerLongFileDateThread(java.lang.ThreadThread類的定義&#xff1a;public class Thread extends Object implements Runnable)包java.lang.*;java.io.*;java.util.*;java.sql.*;java.math.*;接口:ComparableCollectionMapListRunnable(java.lang.Runnable 該接口…

當使用easyui時,表單的onchange事件失效

功能&#xff1a;新增信徒頁面&#xff0c;當選擇未受洗&#xff0c;設置受洗時間&#xff0c;教堂選項 disabled。 步驟&#xff1a; 在<select>標簽里加入 οnchange"xxxxx()"。 在js里編寫xxxxx()方法。 測試 教堂選項沒有 disabled。 原因&#xff1…

shell腳本:批量修改文件名(文件名中添加字符)

舉例如下&#xff1a;批量創建10個隨機字符串的文件&#xff0c;要求每個文件名后面添加_aaa,后綴名不變&#xff1b; [rootlocalhost goodboy]# ls adddbbdedf.html baacjaiija.html bhcfaabcfh.html dgjdcdfbca.html efejadfdji.html agdhcdeaje.html bgffbffjcg.html …

java 格式化小數_java-如何格式化小數位數精度

正如評論中指出的那樣,如果您只有一個String表示形式,那么就無法判斷它實際上是否有重復的部分,或者精度是否不夠高.更新我正在研究一個用分子和分母表示為BigIntegers的有理數的類(并假定盡可能地簡化).在那里,我實現了一種以十進制字符串形式表示的方法,并提出了以下方法&…

當使用easyui時,jquery的設置disabled屬性方法失效

功能&#xff1a;選擇未受洗&#xff0c;設置受洗時間&#xff0c;教堂選項 disabled 步驟&#xff1a; 使用了常規的jquery的方法 //兩種方法設置disabled屬性$(#areaSelect).attr("disabled",true);$(#areaSelect).attr("disabled","disabled&quo…

用戶登錄提交前,密碼加密傳輸

需求&#xff1a; 因為OA放在外網&#xff0c;為了提高安全性&#xff0c;用戶登錄時&#xff0c;密碼加密傳輸&#xff0c;數據庫密碼加密保存。 解決方案&#xff1a; 前臺加密用JQUERY MD5插件&#xff0c;這個工具從網上下載的。 后臺密碼加密&#xff0c;用java的MD5工…

java 內存分布_一圖看懂JVM內存分布,永久記住!

經常在說JVM內存分布&#xff0c;也經常去看&#xff0c;但是總是在面試的時候說不清楚或者模糊&#xff0c;甚至有可能說錯&#xff0c;只有真正的理解&#xff0c;并且在心中有一個總結構圖才能記得清楚說的清楚&#xff01;| JVM總覽圖java內存區域主要分程序計數器、Java虛…

Winodows10 安全登錄(Administrator賬戶與Microsoft Account關聯

我們都知道windows系統最大的管理員是administrator&#xff0c;linux是root&#xff0c;從windows7時代開始&#xff0c;安裝操作系統的時候會在最后一步提示創建一個本地賬戶一直延續到windows8、windows8.1、windows10。近期微軟發布了windows10后&#xff0c;很多用戶都開始…

微信企業號三個連接模式

在銀行里做微信企業號開發有半年多了&#xff0c;因銀行封裝了調用微信企業號的方法&#xff0c;說是微信企業號開發&#xff0c;其實就是jsp&#xff0c;java代碼的編寫&#xff0c;銀行用的開發工具是EOS&#xff0c;對這個工具我只想說&#xff0c;用久了&#xff0c;就找不…

java opencv安裝路徑_Java搭建opencv開發環境

由本菜13歷經4天才搭建的好的Java OpenCv開發環境帶來 .PS:不保證過程都是必須的,必要的.反正我自己成功了... 嘿嘿嘿.官方網站SourceForge點擊FilesFiles因為我的機器是Mac,所以選擇了unix. 然后下載3.4.3版本3.4.3PS:主要是因為剛開始接觸這個OpenCv的時候是用HomeBrew裝的, …

iBatis——執行原理

a) 執行原理 1、 將一個對象作為 參數&#xff08;對象可以是Java Bean&#xff0c;Map實現和基本類型的包裝類&#xff09;&#xff0c;參數對象將為SQL修改語句和查詢語句設定參數值。 2、 執行 mapped statement。這是SQL Maps最重要的步驟。SQL Map框架將創建一個PreparedS…

讓IT工作者過度勞累的12個壞習慣

1. QQ、MSN、Gtalk&#xff0c;一個都不少。壞習慣 由于聊天對象與聊天內容的不可控制性&#xff0c;使用即時通訊軟件是降低工作效率的罪魁禍首。有調查顯示&#xff0c;使用即時通訊軟件&#xff0c;工作效率會降低 20%. 2. “總想多看一點點”——忘記上網的目的。 本想查找…

flux java_Java反應式框架Reactor中的Mono和Flux

1. 前言最近寫關于響應式編程的東西有點多&#xff0c;很多同學反映對Flux和Mono這兩個Reactor中的概念有點懵逼。但是目前Java響應式編程中我們對這兩個對象的接觸又最多&#xff0c;諸如Spring WebFlux、RSocket、R2DBC。我開始也對這兩個對象頭疼&#xff0c;所以今天我們就…