最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數(shù)據(jù)類型、運(yùn)算符和方法重點(diǎn)總結(jié)大全

 更新時(shí)間:2026年02月24日 09:09:28   作者:木井巳  
在大學(xué)Java編程課程中,數(shù)據(jù)類型和運(yùn)算符是構(gòu)建程序設(shè)計(jì)邏輯的基石,這篇文章主要介紹了Java數(shù)據(jù)類型、運(yùn)算符和方法重點(diǎn)總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、數(shù)據(jù)類型

1.1 兩種數(shù)據(jù)類型

在Java中,數(shù)據(jù)類型主要分為 基本數(shù)據(jù)類型 和 引用數(shù)據(jù)類型 。

1.1.1 基本數(shù)據(jù)類型

基本數(shù)據(jù)類型共有四類八種:

  • 整型:byte, short, int, long,
  • 浮點(diǎn)型:float, double,
  • 字符型:char,
  • 布爾型:boolean

八種基本數(shù)據(jù)類型的位數(shù)、取值范圍和默認(rèn)值如下表:

數(shù)據(jù)類型占用大?。ㄗ止?jié))位數(shù)取值范圍默認(rèn)值描述
byte18-128(-2?)到 127(2?-1)0最小的整數(shù)類型,適合用于節(jié)省內(nèi)存的場景
short216-32768(-2¹?)到32767(2¹?-1)0較少使用,通常用于需要節(jié)省內(nèi)存且數(shù)據(jù)范圍在該區(qū)間的場景
int432-2147483648(-2³¹)到2147483647(2³¹-1)0最常用的整數(shù)類型,可以滿足大多數(shù)日常編程中整數(shù)計(jì)算的需求,是Java中表示整數(shù)的默認(rèn)類型
long864-9223372036854775808(-2?³)到9223372036854775807(2?³-1)0L用于表示非常大的整數(shù),當(dāng) int 類型無法滿足需求時(shí)使用,定義時(shí)需要在數(shù)值后加上 L 或 l
float4321.4E - 45 到 3.4028235E380.0F單精度浮點(diǎn)數(shù),用于表示小數(shù),精度相對較低,定義時(shí)需要在數(shù)值后加上 F 或 f
double8644.9E - 324 到 1.7976931348623157E3080.0D雙精度浮點(diǎn)數(shù),精度比 float 高,是Java中表示小數(shù)的默認(rèn)類型
char216‘\u0000’(0)到 ‘\uffff’(65535)‘\u0000’用于表示單個(gè)字符,采用Unicode編碼,可表示各種語言的字符
boolean無明確字節(jié)大小無明確位數(shù)true 或 falsefalse用于邏輯判斷,只有兩個(gè)取值,常用于條件判斷和循環(huán)控制等邏輯場景

需要注意以下幾點(diǎn):

  • 與C/C++不同,無論在16位系統(tǒng)還是在32位系統(tǒng),int 類型都占用4字節(jié),long 類型都占用8字節(jié)。
  • 整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)都是默認(rèn)有符號的。
  • 整型數(shù)據(jù)默認(rèn)是 int ,浮點(diǎn)型數(shù)據(jù)默認(rèn)是 double 。
  • 定義 float 類型變量時(shí),賦值的數(shù)字后加上 f ,否則將被認(rèn)為 double 。
  • char 類型變量使用 Unicode 表示字符,可以存放整型數(shù)據(jù)和中文字符。
  • boolean 類型變量不可以和 int 類型相轉(zhuǎn)換,不存在 “1 表示 true,0 表示 false” 。

面試題1:int 和 long 是多少位、多少字節(jié)的?

  • int 類型是32位、占4個(gè)字節(jié),是一種有符號的整數(shù)類型,其取值范圍是:-2³¹到2³¹-1。若在一個(gè)簡單的計(jì)數(shù)器程序中使用 int 類型來存儲計(jì)數(shù)值,可以表示的最大值是 2,147,483,647,超過這個(gè)值就會發(fā)生溢出,導(dǎo)致結(jié)果不符合預(yù)期。
  • long 類型是64位、占8個(gè)字節(jié),也是一種有符號的整數(shù)類型,其取值范圍比 int 類型大,為:-2?³到2?³-1。在處理較大的整數(shù)數(shù)值時(shí),若 int 類型不夠用,就可以使用 long 類型。如在一個(gè)文件傳輸程序中,文件的大小可能會很大,此時(shí)使用 int 類型很有可能溢出導(dǎo)致數(shù)據(jù)異常,使用 long 類型就可以解決。

面試題2:long 和 int 可以互相轉(zhuǎn)換嗎?

  • 在Java中,long 和 int 是可以相互轉(zhuǎn)換的。由于 long 的數(shù)據(jù)范圍比 int 的數(shù)據(jù)范圍大,當(dāng) int 轉(zhuǎn)換為 long 時(shí)是沒有問題的,但是當(dāng) long 轉(zhuǎn)換為 int 時(shí)可能會發(fā)生截?cái)鄬?dǎo)致的溢出問題
  • int(小范圍類型)轉(zhuǎn)換成 long(大范圍類型)是可以自動(dòng)完成轉(zhuǎn)換的,直接進(jìn)行賦值即可。如:int valInt = 10; long valLong = valInt;
  • long(大范圍類型)轉(zhuǎn)換成 int(小范圍類型)需要強(qiáng)制手動(dòng)轉(zhuǎn)換,可能導(dǎo)致數(shù)據(jù)溢出。如:long valLong = 10000L; int valInt = (int) valLong;

面試題3:數(shù)據(jù)類型的轉(zhuǎn)換方式有哪些?

  • 自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換):當(dāng)目標(biāo)類型的數(shù)值范圍大于原類型的數(shù)值范圍時(shí),Java會自動(dòng)將原類型轉(zhuǎn)換為目標(biāo)類型,無需手動(dòng)轉(zhuǎn)換。如:將 int 轉(zhuǎn)換為 long,將 float 轉(zhuǎn)換為 double 等。
  • 強(qiáng)制類型轉(zhuǎn)換(顯示轉(zhuǎn)換):當(dāng)目標(biāo)類型的數(shù)值范圍小于原類型的數(shù)值范圍時(shí),需要手動(dòng)強(qiáng)制轉(zhuǎn)換,語法:目標(biāo)類型 變量名稱 = (目標(biāo)類型) 原類型變量。由于目標(biāo)類型數(shù)值范圍較小,轉(zhuǎn)換后可能導(dǎo)致數(shù)據(jù)丟失或溢出。如:將 long 轉(zhuǎn)換為 int,將 double 轉(zhuǎn)換為 float 等。
  • 字符串轉(zhuǎn)換:Java提供了將字符串表示的數(shù)據(jù)轉(zhuǎn)換為其他類型數(shù)據(jù)的方法。如:將字符串轉(zhuǎn)換為 int 類型可以使用 Integer.parseInt() 方法;將字符串轉(zhuǎn)換為 double 類型可以使用 Double.parseDouble() 方法等。
  • 數(shù)值之間的轉(zhuǎn)換:Java提供了一些數(shù)值類型之間的相互轉(zhuǎn)換方法,如將整型轉(zhuǎn)換為字符型,將字符型轉(zhuǎn)換為整型等。這些轉(zhuǎn)換方式可以通過包裝類來實(shí)現(xiàn)如 Character 類、Integer 類等提供了相應(yīng)的轉(zhuǎn)換方法。

面試題4:基本數(shù)據(jù)類型互相轉(zhuǎn)換會出現(xiàn)什么問題?

  • 當(dāng)小范圍數(shù)據(jù)類型轉(zhuǎn)換成大范圍數(shù)據(jù)類型:Java會自動(dòng)進(jìn)行轉(zhuǎn)換,這種轉(zhuǎn)換方式一般不會出現(xiàn)問題,是安全的。
  • 當(dāng)大范圍數(shù)據(jù)類型轉(zhuǎn)換成小范圍數(shù)據(jù)類型:需要手動(dòng)強(qiáng)行轉(zhuǎn)換,這種轉(zhuǎn)換方式可能會發(fā)生數(shù)據(jù)溢出或者精度損失的問題:前者主要是由于大范圍數(shù)據(jù)在轉(zhuǎn)換成小范圍數(shù)據(jù)的過程中被截?cái)嗔烁呶蛔止?jié),這將會導(dǎo)致數(shù)據(jù)錯(cuò)誤;后者是由于浮點(diǎn)數(shù)類型數(shù)據(jù)的精度不一致在進(jìn)行轉(zhuǎn)換時(shí)發(fā)生的精度損失,同樣也會導(dǎo)致數(shù)據(jù)錯(cuò)誤。

1.1.2 引用數(shù)據(jù)類型

引用數(shù)據(jù)類型不同于基本數(shù)據(jù)類型存儲值,它們存儲的是地址

在Java中,字符串、八種基本數(shù)據(jù)類型的包裝類 和 BigDecimal 是引用數(shù)據(jù)類型。

字符串

int 和 字符串間相互轉(zhuǎn)換:

//int轉(zhuǎn)字符串
int num = 10;
String str1 = num + "";               //法1
String str2 = String.valueOf(num);    //法2

//字符串轉(zhuǎn)int
String str = "100";
int n = Integer.parseInt(str);

在這里我們只需要掌握字符串和基本數(shù)據(jù)類型的相互轉(zhuǎn)換就可以了。

八種基本數(shù)據(jù)類型的對應(yīng)包裝類

包裝類的誕生目的:Java中的一些集合要求必須是對象才能進(jìn)行操作,但是基本數(shù)據(jù)類型不是對象,因此設(shè)計(jì)包裝類以解決該矛盾。

// 集合類中只能存放對象元素
List<Integer> list = new ArrayList<>();

包裝類的本質(zhì)就是:將基本數(shù)據(jù)類型封裝為對象,使得我們能夠通過各種方法進(jìn)行操作數(shù)據(jù)

基本數(shù)據(jù)類型對應(yīng)包裝類
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
  • 除了 int 和 char ,其他數(shù)據(jù)類型的包裝類均是原數(shù)據(jù)類型名首字母改大寫。
  • 由于包裝類是引用類型數(shù)據(jù)(存放地址),因此值可以為 null,但是基本數(shù)據(jù)類型不可以為 null

基本數(shù)據(jù)類型和對應(yīng)包裝類的相互轉(zhuǎn)換方式是裝箱和拆箱:

  • 裝箱 是將值類型隱式或顯式轉(zhuǎn)換為引用類型的操作。 當(dāng)將一個(gè)值類型(如int、float)賦值給對象變量時(shí),系統(tǒng)會自動(dòng)在堆(Heap)上創(chuàng)建新對象,復(fù)制原始值到該對象中,并返回對象的引用。這相當(dāng)于“包裝”值類型成一個(gè)獨(dú)立的對象。
  • 拆箱 是將引用類型顯式轉(zhuǎn)換回值類型的操作。它與裝箱相反,系統(tǒng)將從堆上的對象中提取原始值,復(fù)制到棧內(nèi)存中。拆箱必須顯式指定目標(biāo)類型(不像裝箱可能隱式)。
int i = 10;
Integer objInt = i;  // 自動(dòng)裝箱
int j = objInt;  // 自動(dòng)拆箱,也可以顯式定義目標(biāo)類:(int) objInt

BigDecimal

在基本數(shù)據(jù)類型中,浮點(diǎn)數(shù)有 float 和 double,它們在某些場景(如資金計(jì)算)中可能會出現(xiàn)精度問題:

System.out.println(0.05 + 0.01);  // 0.06
System.out.println(1.0 - 0.42);  // 0.58
System.out.println(4.015 * 100);  // 401.5
System.out.println(123.3 / 100);  // 1.233

/*
實(shí)際輸出:
0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999
*/

因此在涉及到資金問題時(shí),我們可以使用Java引進(jìn)的 BigDecimal類。

BigDecimal類時(shí)Java提供的用于任意精度計(jì)算的類,在java.math包中

使用BigDecimal來計(jì)算:

import java.math.BigDecimal

// BigDecimal對象的創(chuàng)建,注意只能用字符串來創(chuàng)建,用浮點(diǎn)數(shù)會存在精度問題
BigDecimal a = new BigDecimal("11.1");
BigDecimal b = new BigDecimal("0.8");

// 計(jì)算兩數(shù)之積
System.out.println(b.multiply(a));

// 結(jié)果:8.88

面試題1:裝箱和拆箱是什么?

  • 為了使基本數(shù)據(jù)類型能夠用于集合和泛型等需要操作元素為對象的場景,Java允許通過“裝箱”和“拆箱”操作實(shí)現(xiàn)基本數(shù)據(jù)類型和引用數(shù)據(jù)類型(對象)的相互轉(zhuǎn)換。
  • Java會在賦值時(shí)會自動(dòng)進(jìn)行裝箱和拆箱操作。在Java 1.5以后,編譯器支持在給變量賦值時(shí)自動(dòng)進(jìn)行裝箱或拆箱操作。
  • 調(diào)用方法時(shí),編譯器同樣也會自動(dòng)進(jìn)行裝箱或拆箱操作。
  • 需要注意自動(dòng)裝箱和拆箱有一定的開銷,在循環(huán)這種重復(fù)同一個(gè)操作的場景不適用,否則性能開銷太大。

面試題2:Java為什么有Integer?

  • Integer 是基本數(shù)據(jù)類型 int 的包裝類,即把 int 類型數(shù)據(jù)包裝陳 object 對象。
  • 封裝成對象有很多好處,可以將數(shù)據(jù)和操作數(shù)據(jù)的方法結(jié)合在一塊。如 Integer 中有 parseInt() 等方法用于專門處理 int 類型數(shù)據(jù)。
  • 此外另一個(gè)原因是Java中一切皆是對象,集合類必須要求首先是對象才能操作,而基本數(shù)據(jù)類型不是對象,導(dǎo)致集合類無法對基本數(shù)據(jù)類型進(jìn)行處理,因此有包裝類是很有必要的。

面試題3:Integer相比int來說,有哪些優(yōu)點(diǎn)?

  • Integer作為類封裝了很多操作數(shù)據(jù)的方法(parseInt()、compareTo()等),而int只能存儲數(shù)值
  • 支持在集合類和泛型中使用:Java的集合框架(如ArrayList、HashMap等)要求存儲對象而非基本數(shù)據(jù)類型,Integer作為對象可以直接用于集合,而int無法使用。使用集合能夠高效管理數(shù)據(jù),極大地簡化數(shù)據(jù)存儲和處理邏輯。
  • 提供自動(dòng)裝箱/拆箱功能:Java提供了自動(dòng)裝箱和自動(dòng)拆箱的機(jī)制,能夠允許基本數(shù)據(jù)類型和對象類型隨時(shí)轉(zhuǎn)換,提高了開發(fā)的效率。
  • Integer作為對象成員變量時(shí),默認(rèn)值為 null,能夠明確表示“缺失值
    ”或“未初始化”,避免與零值混淆。當(dāng)對未初始化的Integer變量進(jìn)行操作時(shí)會拋出空指針異常。

面試題4:既然Integer這么好用,為什么還要保留int類型呢?

  • 性能方面,int類型比Integer類型要快。int是基本數(shù)據(jù)類型,Integer是引用數(shù)據(jù)類型。Java中的基本數(shù)據(jù)類型是預(yù)定義的,不需要實(shí)例化就可以使用;而引用類型數(shù)據(jù)需要實(shí)例化成對象后才能使用。這意味著,使用int來存儲一個(gè)整數(shù)時(shí),不需要為其分配額外內(nèi)存,但是使用Integer時(shí)必須為其分配額外內(nèi)存以存儲對象。因此,int類型在讀寫方面的效率比Integer類型要高效。此外,在進(jìn)行條件比較時(shí),int類型可以直接使用“==”來比較,但是Integer類型只能通過“.equals()或.intValue() ”來比較,增加了復(fù)雜度。
  • 存儲方面,int類型占用的字節(jié)數(shù)比Integer類型要少。在64位JVM上,開啟引用壓縮情況下,一個(gè)Integer對象占用至少16字節(jié)的內(nèi)存空間,但是一個(gè)int類型數(shù)據(jù)只占用4字節(jié)的內(nèi)存空間。

面試題5:Integer的緩存機(jī)制是什么?

  • 當(dāng)通過valueOf()方法自動(dòng)裝箱方式創(chuàng)建Integer對象時(shí),對于特定范圍內(nèi)的值(默認(rèn)是−128到127),Java會優(yōu)先從緩存池中返回已有的實(shí)例,而非每次都創(chuàng)建新對象。這樣做有利于顯著提升小整數(shù)操作效率(尤其在集合類中),同時(shí)降低了對象創(chuàng)建的成本。

面試題6:為什么精確計(jì)算時(shí)使用BigDecimal而不用double?

  • 在涉及精確計(jì)算場景時(shí)通常不使用double的原因在于:計(jì)算機(jī)中的二進(jìn)制浮點(diǎn)數(shù)無法精確表示十進(jìn)制小數(shù)。double等浮點(diǎn)數(shù)采用IEEE 754標(biāo)準(zhǔn)的二進(jìn)制小數(shù)表示法,部分十進(jìn)制分?jǐn)?shù)在二進(jìn)制中是無限循環(huán)小數(shù)(如0.1=1/10在二進(jìn)制中是0.0001100110011…),這將會導(dǎo)致存儲時(shí)被截?cái)?。同時(shí),使用double進(jìn)行連續(xù)計(jì)算時(shí),會將誤差擴(kuò)大,導(dǎo)致結(jié)果不準(zhǔn)確。
  • BigDecimal在存儲數(shù)值時(shí)采用十進(jìn)制整數(shù)+縮放比例的結(jié)構(gòu),這樣保存的小數(shù)比二進(jìn)制浮點(diǎn)數(shù)要精確。

二、運(yùn)算符

2.1 算術(shù)運(yùn)算符

Java中的算術(shù)運(yùn)算符有:

  • 四則運(yùn)算符(+ - * / %)
  • 增量運(yùn)算符(+= -= *= /= %=)
  • 自增/自減運(yùn)算符(++ --)。
int a = 20;
int b = 10;

System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0,求余數(shù),得數(shù)為零表示 a 能被 b 整除
 
System.out.println(a += b); // 相當(dāng)于 a = a + b,30
System.out.println(a -= b); // 相當(dāng)于 a = a - b,10
System.out.println(a *= b); // 相當(dāng)于 a = a * b,200
System.out.println(a /= b); // 相當(dāng)于 a = a / b,2
System.out.println(a %= b);// 相當(dāng)于 a = a % b,0
 
System.out.println(a ++);// 先使用 a 再運(yùn)算,相當(dāng)于 a = a + 1,21
System.out.println(a --);// 先使用 a 再運(yùn)算,相當(dāng)于 a = a - 1,19
System.out.println(++ a);// 先運(yùn)算再使用 a ,相當(dāng)于 a = a + 1,21
System.out.println(-- a);// 先運(yùn)算再使用 a ,相當(dāng)于 a = a - 1,19

需要注意的是:

  • 四則運(yùn)算符均是二元運(yùn)算符,必須有兩個(gè)操作數(shù)
  • 除法運(yùn)算的時(shí)候,int 類型和 int 類型的除法運(yùn)算得到的結(jié)果仍然是 int 類型(舍去小數(shù)部分)。
  • 進(jìn)行取模運(yùn)算時(shí),右操作數(shù)不可以是 0 ,并且可以對浮點(diǎn)型數(shù)據(jù)進(jìn)行取模。
  • 當(dāng)多種類型的數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),結(jié)果會自動(dòng)向數(shù)據(jù)范圍大的類型轉(zhuǎn)型。

2.2 關(guān)系運(yùn)算符

關(guān)系運(yùn)算符主要有:== != < > <= >= 六種,它們的運(yùn)算結(jié)果均是布爾值

int a = 10;
int b = 20;

System.out.println(a == b);    // 對于基本數(shù)據(jù)類型來說,比較的是數(shù)值,false
System.out.println(a != b);    // true
System.out.println(a < b);     // true
System.out.println(a > b);     // false
System.out.println(a <= b);    // true
System.out.println(a >= b);    // false

面試題:Java中的“==”和 equals()方法有什么區(qū)別?

  • ==:用于比較基本數(shù)據(jù)類型時(shí),比較的是兩個(gè)數(shù)據(jù)的數(shù)值大小;用于比較引用數(shù)據(jù)類型(對象)的時(shí)候,比較的是兩個(gè)引用存儲的地址,若地址相同說明兩個(gè)引用指向的是同一個(gè)對象。
  • equals():源自O(shè)bject類的方法,很多類重寫了該方法使其能夠?qū)σ脭?shù)據(jù)類型進(jìn)行內(nèi)容的比較。

2.3 邏輯運(yùn)算符

邏輯運(yùn)算符主要有:&& || ! ,它們的運(yùn)算結(jié)果均是布爾值true或false。

其中,&&和 || 兩個(gè)運(yùn)算符是二元運(yùn)算符,必須有兩個(gè)操作數(shù);!是一元運(yùn)算符,只需要一個(gè)操作數(shù)即可。

它們的邏輯功能如下:

  • 邏輯與&&:兩個(gè)表達(dá)式都是真(true)結(jié)果才是真(true),否則結(jié)果均是假(false)。
  • 邏輯或||:兩個(gè)表達(dá)式都是假(false)結(jié)果才是假(false),否則結(jié)果均是真(true)。
  • 邏輯非?。赫孀兗伲僮冋?。

短路現(xiàn)象:

  • 當(dāng)&&左側(cè)表達(dá)式的值是false時(shí),整個(gè)結(jié)果一定是false,此時(shí)右側(cè)表達(dá)式不會被執(zhí)行;
  • 當(dāng) || 左側(cè)表達(dá)式的值是true時(shí),整個(gè)結(jié)果一定是true,此時(shí)右側(cè)表達(dá)式不會被執(zhí)行。

2.4 位運(yùn)算符

位運(yùn)算符主要包括:& | ~ ^ ,除了 ~ 是一元運(yùn)算符,其余都是二元運(yùn)算符。

按位運(yùn)算就是以二進(jìn)制位進(jìn)行運(yùn)算。

  • 按位與 & :如果兩個(gè)二進(jìn)制位都是1,則結(jié)果也是1,否則為0。
  • 按位或 | : 如果兩個(gè)二進(jìn)制位都是0,則結(jié)果也是0,否則為1。
  • 按位取反 ~ :1變0,0變1。
  • 按位異或 ^ : 如果兩個(gè)二進(jìn)制位數(shù)字相同,則結(jié)果是0,否則為1。

注意:

  • 以0x開頭的數(shù)字是十六進(jìn)制數(shù)字,0xf表示十六進(jìn)制數(shù)字15,換算成二進(jìn)制數(shù)字是1111。
  • 按位與 & 和按位或 | 不支持短路求值。

2.5 移位運(yùn)算符

移位運(yùn)算符主要有三個(gè):<< >> >>> ,且全部都是二元運(yùn)算符,都是按照二進(jìn)制位運(yùn)算的。

  • 左移運(yùn)算符 << :將二進(jìn)制位的最左側(cè)的數(shù)去掉,右側(cè)補(bǔ)0。(正負(fù)可能改變)
  • 右移運(yùn)算符 >> :將二進(jìn)制位的最右側(cè)的數(shù)去掉,左側(cè)補(bǔ)0(正數(shù))或1(負(fù)數(shù))。
  • 無符號右移運(yùn)算符 >>> :將二進(jìn)制位的最右側(cè)的數(shù)去掉,左側(cè)補(bǔ)0。
    注意:

左移一位,相當(dāng)于該數(shù) * 2;左移 N 位,相當(dāng)于該數(shù) * 2的 N 次方。
右移一位,相當(dāng)于該數(shù) / 2;右移 N 位,相當(dāng)于該數(shù) / 2的 N 次方。

2.6 條件運(yùn)算符

條件運(yùn)算符是一個(gè)三目運(yùn)算符,其形式是:表達(dá)式1 ?表達(dá)式2 : 表達(dá)式3。

它的運(yùn)算邏輯是:判斷表達(dá)式1的真值,若真值為1就返回表達(dá)式2,否則返回表達(dá)式3

int a = 10;
int b = 20;

int max = a>b ? a : b;    //返回a和b的最大值
System.out.println(max); // 返回 20

三、方法

3.1 方法的定義

若某一個(gè)問題頻繁出現(xiàn),每一次都要寫一遍代碼那么效率簡直太低了。

對于類似的問題,往往會將解決該類問題的代碼封裝在一個(gè)小黑盒——這個(gè)盒子就是方法,每當(dāng)需要解決這種問題的時(shí)候就可以調(diào)用這個(gè)方法來解決。

方法就是用于解決特定問題的東西,和C語言中的函數(shù)是一個(gè)性質(zhì)。

方法定義格式:

修飾符 返回值類型 方法名稱([參數(shù)類型 形參 ...]){
方法體代碼;
[return 返回值];
}

例如下面的一個(gè)用于實(shí)現(xiàn)判斷閏年的方法:

public static boolean IsLeapYear(int year) {    //判斷閏年
        if((year%4==0 && year%100!=0) || year%400==0) {
            return true;
        } else {
            return false;
        }
}

public static void main(String[] args) {
    int year = 2000;
    if(IsLeapYear(year)) {
        System.out.println("Yes");
    } else {
        System.out.println("No");
    }
}

方法的形參和調(diào)用方法時(shí)傳入的實(shí)參這兩個(gè)的內(nèi)存不一樣,形參是實(shí)參的一份拷貝。

public static void swap(int x, int y) {
    int t = x;
    x = y;
    y = t;
}

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    System.out.println("a = "+a+" b = "+b);
    swap(a,b);
    System.out.println("a = "+a+" b = "+b);
}

調(diào)用方法 swap 可以發(fā)現(xiàn),兩次打印 a 和 b 的值都是一樣的,說明 swap 方法沒有成功將兩數(shù)的值進(jìn)行交換,從而證明了改變形式參數(shù)并不能夠影響實(shí)際參數(shù)的值。

只需要將形參和實(shí)參的類型換成 引用類型 即可,如數(shù)組。

public static void swap(int[] arr) {
    int t = arr[0];
    arr[0] = arr[1];
    arr[1] = t;
}

public static void main(String[] args) {
    int[] arr = {10,20};
    System.out.println("arr[0] = "+arr[0]+" arr[1] = "+arr[1]);
    swap(arr);
    System.out.println("arr[0] = "+arr[0]+" arr[1] = "+arr[1]);
}

3.2 方法重載

Java中,經(jīng)常使用IDEA的方法但是能夠發(fā)現(xiàn)同一個(gè)名字有多個(gè)方法:

這就是方法重載,具有以下特點(diǎn):

  • 方法名相同
  • 參數(shù)列表(參數(shù)的個(gè)數(shù)/類型/順序)不同
  • 返回值可能相同也可能不相同。

總結(jié)

到此這篇關(guān)于Java數(shù)據(jù)類型、運(yùn)算符和方法重點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)類型、運(yùn)算符和方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • protobuf簡介及使用流程

    protobuf簡介及使用流程

    本文介紹了Protocol Buffers(protobuf)的數(shù)據(jù)結(jié)構(gòu)序列化和反序列化框架,包括其特點(diǎn)、使用流程和快速上手,通過一個(gè)簡單的通訊錄示例,展示了如何創(chuàng)建.proto文件、添加注釋、編寫消息定義、編譯.proto文件以及進(jìn)行序列化和反序列化操作,感興趣的朋友一起看看吧
    2025-02-02
  • 關(guān)于各種排列組合java算法實(shí)現(xiàn)方法

    關(guān)于各種排列組合java算法實(shí)現(xiàn)方法

    這篇文章介紹了幾種用JAVA實(shí)現(xiàn)的排列組合算法,有需要的朋友可以參考一下
    2013-06-06
  • SpringBoot中9個(gè)內(nèi)置過濾器用法的完整指南

    SpringBoot中9個(gè)內(nèi)置過濾器用法的完整指南

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中9個(gè)內(nèi)置過濾器用法的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一
    2025-08-08
  • java 裝飾模式(Decorator Pattern)詳解及實(shí)例代碼

    java 裝飾模式(Decorator Pattern)詳解及實(shí)例代碼

    裝飾器模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝
    2016-10-10
  • SpringBoot使用@Async注解實(shí)現(xiàn)異步調(diào)用

    SpringBoot使用@Async注解實(shí)現(xiàn)異步調(diào)用

    這篇文章主要介紹了SpringBoot使用@Async注解實(shí)現(xiàn)異步調(diào)用,異步調(diào)用是相對于同步調(diào)用而言的,同步調(diào)用是指程序按預(yù)定順序一步步執(zhí)行,每一步必須等到上一步執(zhí)行完后才能執(zhí)行,異步調(diào)用則無需等待,程序執(zhí)行完即可執(zhí)行,可以減少程序執(zhí)行時(shí)間,需要的朋友可以參考下
    2023-10-10
  • MyBatis實(shí)戰(zhàn)之動(dòng)態(tài)生成SQL詳解

    MyBatis實(shí)戰(zhàn)之動(dòng)態(tài)生成SQL詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用MyBatis實(shí)現(xiàn)動(dòng)態(tài)生成SQL,可以告別硬編碼,擁抱智能SQL生成,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07
  • Maven如何手動(dòng)安裝依賴到本地倉庫

    Maven如何手動(dòng)安裝依賴到本地倉庫

    這篇文章主要介紹了Maven如何手動(dòng)安裝依賴到本地倉庫問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • JVM 命令行工具的使用

    JVM 命令行工具的使用

    造成Java應(yīng)用出現(xiàn)性能問題的因素非常多,想要定位這些問題,一款優(yōu)秀的性能診斷工具必不可少,本文主要介紹了JVM 命令行工具的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Java技巧分享之利用RxJava打造可觀測數(shù)據(jù)RxLiveData

    Java技巧分享之利用RxJava打造可觀測數(shù)據(jù)RxLiveData

    這篇文章主要來和大家分享一個(gè)Java技巧,那就是利用RxJava打造可觀測數(shù)據(jù)RxLiveData,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-06-06
  • jdbc中class.forname的作用

    jdbc中class.forname的作用

    這篇文章主要介紹了jdbc中class.forname的作用,使用示例說明了他作用及使用方法,大家參考使用吧
    2014-01-01

最新評論

鞍山市| 湘西| 昌图县| 蓬溪县| 游戏| 承德县| 温宿县| 云浮市| 秭归县| 三明市| 马边| 湘乡市| 峨边| 象州县| 大同县| 黄石市| 特克斯县| 黄陵县| 吉林省| 柘城县| 府谷县| 平和县| 广水市| 思茅市| 民勤县| 霍林郭勒市| 馆陶县| 宜兰县| 库伦旗| 新宾| 怀来县| 前郭尔| 大理市| 绥阳县| 安阳县| 横峰县| 密山市| 克拉玛依市| 鄂尔多斯市| 特克斯县| 宁都县|