国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
8種基本資料類型
2.1. int型別
2.2. 整數(shù)直接量是int型別
2.3. 整數(shù)資料除法運(yùn)算中的取整
2.4. 運(yùn)算時要防止溢出的發(fā)生
#3.1. long型別
3.2. 使用long型別進(jìn)行較大整數(shù)的運(yùn)算
3.3. 透過時間毫秒數(shù)來儲存日期和時間
4. double類型
4.1. 使用double進(jìn)行浮點(diǎn)數(shù)的運(yùn)算
4.2. 浮點(diǎn)數(shù)直接量是double類型
4.3. double運(yùn)算時會出現(xiàn)舍入誤差
5.1. char類型
5.2. 對char型變量賦值
5.3. 使用轉(zhuǎn)義字符
6. boolean類型
6.1. 使用boolean變量進(jìn)行關(guān)系運(yùn)算
7. 基本類型間轉(zhuǎn)換
7.1. 類型間轉(zhuǎn)換
7.2. 強(qiáng)制轉(zhuǎn)換時的精度喪失和溢出
7.3. 數(shù)值運(yùn)算時的自動轉(zhuǎn)換
7.4. byte、char、short轉(zhuǎn)換為int
首頁 Java Java基礎(chǔ) 八種基本資料類型分別是什麼

八種基本資料類型分別是什麼

Jul 02, 2021 pm 12:08 PM
java 基本資料類型

八種基本資料型別分別是:1、4種整數(shù)型別(byte、short、int、long);2、2種浮點(diǎn)數(shù)型別(float、double);3、1種字元型別「 char”;4、1種布林類型“boolean”。

八種基本資料類型分別是什麼

本教學(xué)操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

8種基本資料類型

java中有8種基本資料類型, 分別用於儲存整數(shù)、浮點(diǎn)數(shù)、字元資料和布林類型資料。要注意的是: 現(xiàn)在所介紹的只是基本資料類型,後續(xù)也會介紹很多非基本資料類型?;举Y料型別如圖– 1所示:

八種基本資料類型分別是什麼?

- 1

從圖- 1中可以看出, 基本資料型別主要分為4大類(整數(shù)型別、浮點(diǎn)型別、char、boolean), 整數(shù)型別又分為了4小類(byte、short、int、long), 浮點(diǎn)型別也分了2小類(float、double),這些資料型別的差別是怎麼樣的?透過圖– 2展示了這8種資料型別的儲存空間及使用情境:

?

- 2

如上這8種資料型別中,最常用的有5種,分別為int、long、double、char、boolean。其餘的資料類型幾乎不用,要求對這5種基本資料類型重點(diǎn)掌握,其餘的資料類型,有興趣了解就可以了。

2. int型別

2.1. int型別

int是最常用的整數(shù)型,一個int型別的變數(shù)佔用4個字節(jié),即32位元的記憶體空間。 Int的最大表示範(fàn)圍為:-231~231-1,即-2147483648 ~2147483647,約正負(fù)21億多。

2.2. 整數(shù)直接量是int型別

#所謂整數(shù)直接量(literal)就是直接寫出的整數(shù),例如:下面的語句中,100就是直接量。

int a = 100;
int a = 100;

關(guān)於整數(shù)直接量,需要注意如下要點(diǎn):

整數(shù)的直接量的類型預(yù)設(shè)為int類型,如果直接寫出的整數(shù)超過了int的表達(dá)範(fàn)圍,將會出現(xiàn)編譯錯誤,下面的語句,就是因為超出了整數(shù)的範(fàn)圍而導(dǎo)致的編譯錯誤。

int d = 10000000000; // 編譯錯誤10000000000這個數(shù)值寫出來就是錯誤的,因為Java認(rèn)為所有直接寫出的整數(shù)都是int類型,而這個數(shù)值超過了int的表達(dá)范圍。
int d = 10000000000; // 編譯錯誤10000000000這個數(shù)值寫出來就是錯誤的,因為Java認(rèn)為所有直接寫出的整數(shù)都是int類型,而這個數(shù)值超過了int的表達(dá)范圍。

除了通常的十進(jìn)位數(shù)字形式,整數(shù)直接量也可以寫成16進(jìn)位的形式(以0X或0x開頭)或8進(jìn)位的形式(以0開頭),請看如下直接量三種表現(xiàn)形式:

int a = 100000; // 10進(jìn)制 
int b = 0x186a0; // 16進(jìn)制 
int c = 0303240; // 8進(jìn)制 
int a = 100000; // 10進(jìn)制
int b = 0x186a0; // 16進(jìn)制
int c = 0303240; // 8進(jìn)制

2.3. 整數(shù)資料除法運(yùn)算中的取整

若對兩個整數(shù)相除,會捨棄小數(shù)的部分(注意:不是四捨五入),結(jié)果也是整數(shù)。範(fàn)例程式碼如下所示:

int c = 5/3;
System.out.println(c);  // c的值為1,取整
int total = 87;    
int error = 23;
int percent = error / total * 100;
System.out.println(percent+"%");  //結(jié)果為0%,23除以87整數(shù)部分為0,乘以100,為0 
percent = 100 * error / total;
System.out.println(percent + "%");  // 結(jié)果為26%,230除以87整數(shù)部分為26 
int c = 5/3;
System.out.println(c);  // c的值為1,取整
int total = 87;    
int error = 23;
int percent = error / total * 100;
System.out.println(percent+"%");  //結(jié)果為0%,23除以87整數(shù)部分為0,乘以100,為0
 
percent = 100 * error / total;
System.out.println(percent + "%");  // 結(jié)果為26%,230除以87整數(shù)部分為26

2.4. 運(yùn)算時要防止溢出的發(fā)生

當(dāng)兩個整數(shù)運(yùn)算時, 其結(jié)果可能會超過整數(shù)的範(fàn)圍而發(fā)生溢出,正數(shù)過大而產(chǎn)生的溢出,結(jié)果為負(fù)數(shù);負(fù)數(shù)過大而產(chǎn)生的溢出,結(jié)果為正數(shù)。範(fàn)例程式碼如下圖所示:

int a = 2147483647;    //int類型整數(shù)的上限
int b = -2147483648;    //int類型整數(shù)的下限
a = a + 1;
b = b - 1;
System.out.println("a=" + a);    //輸出結(jié)果: a=-2147483648 溢出,結(jié)果錯誤。 
System.out.println("b=" + b);    //輸出結(jié)果: b=2147483647溢出,結(jié)果錯誤。 
int a = 2147483647;    //int類型整數(shù)的上限
int b = -2147483648;    //int類型整數(shù)的下限
a = a + 1;
b = b - 1;
System.out.println("a=" + a);    //輸出結(jié)果: a=-2147483648 溢出,結(jié)果錯誤。
System.out.println("b=" + b);    //輸出結(jié)果: b=2147483647溢出,結(jié)果錯誤。

3. long型別

#3.1. long型別

在表示整數(shù)時,如果int類型的範(fàn)圍不夠,可以使用long類型,一個long型的變數(shù)佔用8個位元組(即64位元),最大表示範(fàn)圍為:-263 ~ 263-1,即-9223372036854775808 ~ 9223372036854775807。

如果要表示long直接量,需要以 L 或 l 結(jié)尾。範(fàn)例程式碼如下:

long a = 10000000000;   //會有編譯錯誤,因為10000000000編譯器認(rèn)為是int類型,而這個值,已經(jīng)超出了int的范圍
long b = 10000000000l;   //正確
long a = 10000000000;   //會有編譯錯誤,因為10000000000編譯器認(rèn)為是int類型,而這個值,已經(jīng)超出了int的范圍
long b = 10000000000l;   //正確

3.2. 使用long型別進(jìn)行較大整數(shù)的運(yùn)算

對於較大的整數(shù)運(yùn)算(超過int的表達(dá)範(fàn)圍),可以使用long型。範(fàn)例程式碼如下:

long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;  
//必須有一個long型數(shù)據(jù)參與的運(yùn)算結(jié)果才是long型 
System.out.println("distance1="+distance1);//distance1=547836957965889536 結(jié)果正確 
long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458; 
System.out.println("distance2="+ distance2);  //distance2=-1973211136 溢出,=號后面的數(shù)據(jù)默認(rèn)為int類型,超出了范圍,發(fā)生溢出。
long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;  
//必須有一個long型數(shù)據(jù)參與的運(yùn)算結(jié)果才是long型
System.out.println("distance1="+distance1);//distance1=547836957965889536 結(jié)果正確
 
long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458;
System.out.println("distance2="+ distance2);  //distance2=-1973211136 溢出,=號后面的數(shù)據(jù)默認(rèn)為int類型,超出了范圍,發(fā)生溢出。

3.3. 透過時間毫秒數(shù)來儲存日期和時間

JDK提供System.currentTimeMillis() 方法,傳回1970年1月1日零點(diǎn)到此時此刻所經(jīng)歷的毫秒數(shù),資料太大,故其資料型態(tài)為long。範(fàn)例程式碼如下:

long time = System.currentTimeMillis();
System.out.println(time);     //輸出的結(jié)果為: 1383835712828
long time = System.currentTimeMillis();
System.out.println(time);     //輸出的結(jié)果為: 1383835712828

透過上面的程式碼可以看出,輸出的結(jié)果已經(jīng)超出int型別的最大值,因此,JDK設(shè)計的回傳型別為long型,該方法常常被用於計時操作。

4. double類型

4.1. 使用double進(jìn)行浮點(diǎn)數(shù)的運(yùn)算

前面所學(xué)習(xí)的int、long都是用于存儲整數(shù)的,小數(shù)即為浮點(diǎn)數(shù),包括: float(單精度)和double(雙精度),double類型的精度值是float類型的兩倍,因此而得名雙精精,在實際的應(yīng)用開發(fā)中,float應(yīng)用極少,大多數(shù)場合使用double表示浮點(diǎn)數(shù)。示例代碼如下:

double pi = 3.14;
double r = 8;
double s = pi * r * r;
System.out.println("s=" + s);   // 輸出的結(jié)果為:s=200.96
double pi = 3.14;
double r = 8;
double s = pi * r * r;
System.out.println("s=" + s);   // 輸出的結(jié)果為:s=200.96

4.2. 浮點(diǎn)數(shù)直接量是double類型

浮點(diǎn)數(shù)的直接量有兩種寫法:1)通常寫法,如:3.14、314、0.1、.5。 2)科學(xué)計數(shù)法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。

默認(rèn)的浮點(diǎn)直接量為double型,如果需要表示float類型的直接量,需要加“f”或“F”后綴。例如:

float f1 = 3.14   //編譯錯誤,應(yīng)該寫成3.14f
float f1 = 3.14   //編譯錯誤,應(yīng)該寫成3.14f

4.3. double運(yùn)算時會出現(xiàn)舍入誤差

2進(jìn)制系統(tǒng)中無法精確的表示1/10,就好像十進(jìn)制系統(tǒng)中無法精確的表示1/3一樣,

所以,2進(jìn)制表示10進(jìn)制會有一些舍入誤差,對于一些要求精確運(yùn)算的場合會導(dǎo)致代碼的缺陷。示例代碼如下所示:

double money = 3.0; 
double price = 2.9; 
System.out.println(money - price);   //輸出的結(jié)果是: 0.10000000000000009 
double money = 3.0;
double price = 2.9;
System.out.println(money - price);   //輸出的結(jié)果是: 0.10000000000000009

如果需要精確的運(yùn)算可以考慮放棄使用double或float而采用BigDecimal 類來實現(xiàn)。關(guān)于這一點(diǎn),將在后續(xù)的章節(jié)中介紹。

5. char類型

5.1. char類型

字符類型char事實上是一個16位無符號整數(shù)(都是正數(shù)),這個值是對應(yīng)字符的編碼,Java字符類型采用Unicode字符集編碼(通用碼、統(tǒng)一碼、萬國碼),而Unicode是世界通用的定長字符集,所有的字符都是16位來表示。例如:字符a實際的值為97,字符A實際的值為65,字符0實際的值為48。

字符直接量可以采用諸如:‘中’的形式,也可以采用16進(jìn)制的表示形式,例如: ‘\u4e2d’,代碼如下所示:

char c1 = ‘中’;   //c1中存的是”中”的編碼 
char c2 = '\u4e2d';   //‘4e2d’為‘中’所對應(yīng)的16位Unicode編碼的16進(jìn)制表示形式
System.out.println(c1);
System.out.println(c2);
char c1 = ‘中’;   //c1中存的是”中”的編碼
char c2 = '\u4e2d';   //‘4e2d’為‘中’所對應(yīng)的16位Unicode編碼的16進(jìn)制表示形式
System.out.println(c1);
System.out.println(c2);

如上代碼的輸出結(jié)果:c1的值為中,c2值也為中,但c1和c2內(nèi)部存儲的其實是”中”這個字符所對應(yīng)的Unicode碼,即:一個無符號的整數(shù)。

5.2. 對char型變量賦值

在對char型變量賦值時,可以采用如下三種方式:

方式一:

字符直接量:形如‘A’,變量中實際存儲的是該字符的Unicode編碼(無符號整數(shù)值),一個char型變量只能存儲一個字符。示例如下:

char c1 = 'A';   
char c1 = 'A';

方式二:

整型直接量:范圍在0~65535之間的整數(shù),變量中實際存儲的即該整數(shù)值,但表示的是該整數(shù)值所對應(yīng)的Unicode字符。示例如下:

char c2 = 65;    
char c2 = 65;

Unicode形式:形如‘\u0041’,Unicode字符的16進(jìn)制形式。示例如下:

char c3 = '\u0041'; 
char c3 = '\u0041';

5.3. 使用轉(zhuǎn)義字符

字符直接量需要包含在一對’’單引號之中,那如果想表示單引號’的字符時,需要怎么表示?想表示回車、換行符時,怎么表示?

因為單引號為特殊意義的字符, 那么,對于不方便輸出的字符可以采用轉(zhuǎn)義字符來表示,示例代碼如下:

char c = '\\';
System.out.println(c);  //輸出的結(jié)果為:\ 
char c = '\\';
System.out.println(c);  //輸出的結(jié)果為:\

常用轉(zhuǎn)義字符如下圖 – 2所示:

- 2

6. boolean類型

6.1. 使用boolean變量進(jìn)行關(guān)系運(yùn)算

boolean類型適用于關(guān)系、邏輯運(yùn)算, 表示某個條件是否成立, 只允許取值true或false,true表示條件成立, 而false表示條件不成立。

boolean型變量經(jīng)常用于存儲關(guān)系運(yùn)算的結(jié)果,所謂關(guān)系運(yùn)算就是比較兩個變量的大小相等等關(guān)系(此知識點(diǎn),后續(xù)詳細(xì)介紹)。boolean示例代碼如下所示:

int age = 18;
boolean isChild = age<16;  
System.out.println(isChild);   // isChild的值為false
boolean running = true; 
boolean closed = false; 
int age = 18;
boolean isChild = age<16;  
System.out.println(isChild);   // isChild的值為false
boolean running = true;
boolean closed = false;

7. 基本類型間轉(zhuǎn)換

7.1. 類型間轉(zhuǎn)換

不同的基本類型直接可以相互轉(zhuǎn)化,主要有兩種方式:

自動類型轉(zhuǎn)化(隱式類型轉(zhuǎn)換):從小類型到大類型可以自動完成。類型的大小關(guān)系如下圖 - 3所示:

- 3

強(qiáng)制轉(zhuǎn)化:從大類型到小類型需要強(qiáng)制轉(zhuǎn)換符,語法如下:

(需要轉(zhuǎn)換成的類型)變量

因為大類型的精度值大于小類型,取值范圍大于小類型,所以,當(dāng)使用強(qiáng)制轉(zhuǎn)化時,有可能會造成精度的損失或者溢出,所以,在使用強(qiáng)制轉(zhuǎn)化時要求顯式的告訴編譯器,正在進(jìn)行強(qiáng)制轉(zhuǎn)換。

7.2. 強(qiáng)制轉(zhuǎn)換時的精度喪失和溢出

基本類型轉(zhuǎn)化如下示例所示,注意強(qiáng)制轉(zhuǎn)換時可能會造成的精度喪失和溢出。

int a = 100;
int b = 200;
long c = a + b;  //自動將int轉(zhuǎn)化為long 
long l1 = 1024l; 
int i = (int) l1;  //需要加強(qiáng)制轉(zhuǎn)化符由于1024在int的范圍內(nèi),所以沒有產(chǎn)生溢出 
long l = 1024L * 1024 * 1024 * 4;
int j = (int) l;    //會產(chǎn)生溢出
System.out.println(j);  // 結(jié)果為:0 
double pi = 3.1415926535897932384;
float f = (float) pi;   //會造成精度的損失,因為單精度的精確度小于double
System.out.println(f);  //結(jié)果為:3.1415927 
int a = 100;
int b = 200;
long c = a + b;  //自動將int轉(zhuǎn)化為long
 
long l1 = 1024l;
int i = (int) l1;  //需要加強(qiáng)制轉(zhuǎn)化符由于1024在int的范圍內(nèi),所以沒有產(chǎn)生溢出
 
long l = 1024L * 1024 * 1024 * 4;
int j = (int) l;    //會產(chǎn)生溢出
System.out.println(j);  // 結(jié)果為:0
 
double pi = 3.1415926535897932384;
float f = (float) pi;   //會造成精度的損失,因為單精度的精確度小于double
System.out.println(f);  //結(jié)果為:3.1415927

7.3. 數(shù)值運(yùn)算時的自動轉(zhuǎn)換

如果在一個表達(dá)式中出現(xiàn)了多種數(shù)據(jù)類型,則運(yùn)算結(jié)果會自動的向較大的類型進(jìn)行轉(zhuǎn)化,

示例如下:

//由于有l(wèi)ong型的直接量參與,整個表達(dá)式的結(jié)果為long 
long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;
 
//由于有double型的直接量599.0參與,整個表達(dá)式的結(jié)果為 double 
double change = 800 - 599.0;
    
//結(jié)果為0.0,右邊都是int型數(shù)據(jù)運(yùn)算結(jié)果也為int類型,結(jié)果為0,再賦值給double
將0轉(zhuǎn)化為 0.0
double persent1 = 80 / 100;  
//結(jié)果為0.8,右邊表達(dá)式有double型直接量參與, 運(yùn)算結(jié)果為double型
double persent2 = 80.0 / 100;  
//由于有l(wèi)ong型的直接量參與,整個表達(dá)式的結(jié)果為long
long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;
 
//由于有double型的直接量599.0參與,整個表達(dá)式的結(jié)果為 double
double change = 800 - 599.0;
    
//結(jié)果為0.0,右邊都是int型數(shù)據(jù)運(yùn)算結(jié)果也為int類型,結(jié)果為0,再賦值給double
型,將0轉(zhuǎn)化為 0.0
double persent1 = 80 / 100;
    
//結(jié)果為0.8,右邊表達(dá)式有double型直接量參與, 運(yùn)算結(jié)果為double型
double persent2 = 80.0 / 100;

7.4. byte、char、short轉(zhuǎn)換為int

在前面所介紹的8種數(shù)據(jù)類型中,byte、char、short、int、long都表示整數(shù)類型,而整型的直接量為int,在實際使用中,為了方便使用,遵循了如下的規(guī)則:

int直接量可以直接賦值給byte、char和short,只要不超過其表示范圍。示例如下:

byte  b  = 97;
short  s  = 97;
char  c  = 97;
byte  b  = 97;
short  s  = 97;
char  c  = 97;

byte、char、short三種類型參與運(yùn)算時,先一律轉(zhuǎn)換成int類型再進(jìn)行運(yùn)算。示例如下:

byte  b  =  97;
int  num = b + b;   //num的值為194

相關(guān)視頻教程推薦:Java視頻教程

以上是八種基本資料類型分別是什麼的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動管理內(nèi)存的機(jī)制,通過回收不可達(dá)對象釋放堆內(nèi)存,減少內(nèi)存洩漏風(fēng)險。 1.GC從根對象(如棧變量、活動線程、靜態(tài)字段等)出發(fā)判斷對象可達(dá)性,無法到達(dá)的對像被標(biāo)記為垃圾。 2.基於標(biāo)記-清除算法,標(biāo)記所有可達(dá)對象,清除未標(biāo)記對象。 3.採用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時較長的MajorGC;Metaspace存儲類元數(shù)據(jù)。 4.JVM提供多種GC器:SerialGC適用於小型應(yīng)用;ParallelGC提升吞吐量;CMS降

比較Java構(gòu)建工具:Maven vs. Gradle 比較Java構(gòu)建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

以身作則,解釋說明 以身作則,解釋說明 Aug 02, 2025 am 06:26 AM

defer用於在函數(shù)返回前執(zhí)行指定操作,如清理資源;參數(shù)在defer時立即求值,函數(shù)按後進(jìn)先出(LIFO)順序執(zhí)行;1.多個defer按聲明逆序執(zhí)行;2.常用於文件關(guān)閉等安全清理;3.可修改命名返回值;4.即使發(fā)生panic也會執(zhí)行,適合用於recover;5.避免在循環(huán)中濫用defer,防止資源洩漏;正確使用可提升代碼安全性和可讀性。

See all articles