JAVA后端開發(fā)路線——基礎(chǔ)語法篇

JAVA后端開發(fā)學(xué)習(xí)路線列表


1. 一個(gè)簡單的JAVA應(yīng)用程序

public class FirstSample
{
    public static void main(String[] args)
    {
        System.out.println("hello world!");
    }
}

程序執(zhí)行后菲盾,控制臺上將會顯示hello world!

2.注釋

符號 作用
//注釋內(nèi)容 其注釋內(nèi)容從//開始到本行末尾
/*注釋內(nèi)容*/ 可以將一段比較長的注釋括起來
/**注釋內(nèi)容*/ 這種注釋可以用來自動生成文檔

3.數(shù)據(jù)類型

java數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型麦乞。
基本數(shù)據(jù)類型有int搅方、short廊蜒、long局雄、byte驳庭、float兼丰、double肘交、char笆载、boolean,其余數(shù)據(jù)類型都為引用數(shù)據(jù)類型,引用數(shù)據(jù)類型的默認(rèn)值為null凉驻,常見的引用數(shù)據(jù)類型有:String腻要,StringBuffer,ArrayList涝登,HashMap等雄家。

3.1整型

類型 存儲需求 默認(rèn)值 取值范圍
int 4字節(jié) 0 -2 147 483 648 ~ 2 147 483 647(正好超過20億)
short 2字節(jié) 0 -32 768 ~ 32767
long 8字節(jié) 0 -9 223 372 036 854 775 808 ~ 9223 372 036 854 775 807
byte 1字節(jié) 0 -128 ~ 127

3.2浮點(diǎn)類型

類型 存儲需求 默認(rèn)值 取值范圍
float 4字節(jié) 0.0f 大約±3.402 823 47E+38F
double 8字節(jié) 0.0d 大約±1.797 693 134 862 315 70E+308

浮點(diǎn)數(shù)值不適用于無法接受舍入誤差的金融計(jì)算中,如果在數(shù)值計(jì)算中不允許有任何舍入誤差胀滚,就應(yīng)該使用BigDecimal

3.3char類型

默認(rèn)值:'\u000'
char類型原本用于表示單個(gè)字符趟济。不過,現(xiàn)在情況已經(jīng)有所變化蛛淋。Unicode打破了傳統(tǒng)字符編碼機(jī)制的限制咙好。
我們強(qiáng)烈建議不要在程序中使用char類型,除非確實(shí)需要處理UTF-16代碼單元褐荷。最好將字符串作為抽象數(shù)據(jù)處理類型勾效。

<center><font size=4>特殊字符的轉(zhuǎn)義序列</font></center>

轉(zhuǎn)義序列 名稱 Unicode值
\b 退格 \u0008
\t 制表 \u0009
\n 換行 \u000a
\r 回車 \u000d
" 雙引號 \u0022
' 單引號 \u0027
\ 反斜杠 \u005c

3.4boolean類型

默認(rèn)值:false
boolean(布爾)類型有兩個(gè)值:falsetrue,用來判斷邏輯條件叛甫。整型值和布爾值之間不能進(jìn)行互相轉(zhuǎn)換层宫。

3.5數(shù)據(jù)類型之間的轉(zhuǎn)換

  • 合法轉(zhuǎn)換


    數(shù)值類型之間的合法轉(zhuǎn)換.png

實(shí)心箭頭表示無信息丟失的轉(zhuǎn)換,虛箭頭表示可能有精度損失的轉(zhuǎn)換其监。

  • 強(qiáng)制轉(zhuǎn)換
    例如有時(shí)需要將double轉(zhuǎn)換為int萌腿。
double x = 9.997;
int nx = (int) x;
//變量nx的值為9

4變量與常量

  • 類變量:獨(dú)立于方法之外的變量,用 static 修飾抖苦。
  • 實(shí)例變量:獨(dú)立于方法之外的變量毁菱,不過沒有 static 修飾。
  • 局部變量:類的方法中的變量锌历。
public class Variable{
    static int allClicks=0;    // 類變量
    String str="hello world";  // 實(shí)例變量
    public void mehod(){
        int i =0;  // 局部變量
    }
}

4.1變量命名規(guī)范

變量名必須是一個(gè)以字母開頭并由字母或數(shù)字構(gòu)成的序列贮庞。大小寫敏感。
字母包括'A' ~ 'Z'究西、'a' ~ 'z'窗慎、'_'、'$'
數(shù)字包括‘0~9’
變量名不能是java中的保留關(guān)鍵字

java中的保留關(guān)鍵字

4.2類變量

  • 類變量也稱為靜態(tài)變量卤材,在類中以 static 關(guān)鍵字聲明遮斥,但必須在方法之外。
  • 無論一個(gè)類創(chuàng)建了多少個(gè)對象扇丛,類只擁有類變量的一份拷貝术吗。
  • 靜態(tài)變量除了被聲明為常量外很少使用,靜態(tài)變量是指聲明為 public/private帆精,final 和 static 類型的變量较屿。靜態(tài)變量初始化后不可改變材蹬。
  • 靜態(tài)變量儲存在靜態(tài)存儲區(qū)。經(jīng)常被聲明為常量吝镣,很少單獨(dú)使用static聲明變量堤器。
  • 靜態(tài)變量在第一次被訪問時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷毀末贾。
  • 與實(shí)例變量具有相似的可見性闸溃。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型拱撵。
  • 默認(rèn)值和實(shí)例變量相似辉川。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false拴测,引用類型默認(rèn)值是null乓旗。變量的值可以在聲明的時(shí)候指定,也可以在構(gòu)造方法中指定集索。此外屿愚,靜態(tài)變量還可以在靜態(tài)語句塊中初始化。
  • 靜態(tài)變量可以通過:ClassName.VariableName的方式訪問务荆。
  • 類變量被聲明為public static final類型時(shí)妆距,類變量名稱一般建議使用大寫字母。如果靜態(tài)變量不是public和final類型函匕,其命名方式與實(shí)例變量以及局部變量的命名方式一致娱据。

4.3實(shí)例變量

  • 實(shí)例變量聲明在一個(gè)類中,但在方法盅惜、構(gòu)造方法和語句塊之外中剩;
  • 當(dāng)一個(gè)對象被實(shí)例化之后,每個(gè)實(shí)例變量的值就跟著確定抒寂;
  • 實(shí)例變量在對象創(chuàng)建的時(shí)候創(chuàng)建结啼,在對象被銷毀的時(shí)候銷毀;
  • 實(shí)例變量的值應(yīng)該至少被一個(gè)方法蓬推、構(gòu)造方法或者語句塊引用妆棒,使得外部能夠通過這些方式獲取實(shí)例變量信息澡腾;
  • 實(shí)例變量可以聲明在使用前或者使用后沸伏;
  • 訪問修飾符可以修飾實(shí)例變量;
  • 實(shí)例變量對于類中的方法动分、構(gòu)造方法或者語句塊是可見的毅糟。一般情況下應(yīng)該把實(shí)例變量設(shè)為私有。通過使用訪問修飾符可以使實(shí)例變量對子類可見澜公;
  • 實(shí)例變量具有默認(rèn)值姆另。數(shù)值型變量的默認(rèn)值是0喇肋,布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null迹辐。變量的值可以在聲明時(shí)指定蝶防,也可以在構(gòu)造方法中指定;
  • 實(shí)例變量可以直接通過變量名訪問明吩。但在靜態(tài)方法以及其他類中间学,就應(yīng)該使用完全限定名:ObejectReference.VariableName。

4.4局部變量

  • 局部變量聲明在方法印荔、構(gòu)造方法或者語句塊中低葫;
  • 局部變量在方法、構(gòu)造方法仍律、或者語句塊被執(zhí)行的時(shí)候創(chuàng)建嘿悬,當(dāng)它們執(zhí)行完成后,變量將會被銷毀水泉;
  • 訪問修飾符不能用于局部變量善涨;
  • 局部變量只在聲明它的方法、構(gòu)造方法或者語句塊中可見草则;
  • 局部變量是在棧上分配的躯概。
  • 局部變量沒有默認(rèn)值,所以局部變量被聲明后畔师,必須經(jīng)過初始化娶靡,才可以使用。

4.5常量

在Java中看锉,利用關(guān)鍵字final指示常量姿锭。關(guān)鍵字final表示這個(gè)變量只能被賦值一次。一旦被賦值以后伯铣,就不能再被更改了呻此。習(xí)慣上,常量名使用全大寫腔寡。
在Java中焚鲜,經(jīng)常希望某個(gè)常量可以在一個(gè)類中的多個(gè)方法中使用,通常將這些常量稱為類常量放前》薨酰可以使用關(guān)鍵字 static final 設(shè)置一個(gè)類常量,類常量定義于main方法的外部凭语。

5運(yùn)算符

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

算術(shù)運(yùn)算符
  • 整數(shù)被0除會產(chǎn)生一個(gè)異常葱她,而浮點(diǎn)數(shù)被0除將會得到無窮大或NaN結(jié)果。
  • x++前綴形式會先完成加一似扔,而++x后綴形式會使用變量原來的值吨些。
    int m = 7;
    int n = 7;
    int a = 2 * ++m;//a為16搓谆,m為8
    int b = 2 * n++;//b為14,n為8
    
    建議不要在表達(dá)式中使用++豪墅,不易讀且易出bug泉手。

5.2位運(yùn)算符

設(shè)a = 60 (0011 1100),b = 13 (0000 1101)


位運(yùn)算符

5.2結(jié)合賦值和運(yùn)算符

x += 4 等價(jià)于 x = x + 4
一般的偶器,要把運(yùn)算符放在 = 號左邊螃诅,如 *= 或 %=。

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

設(shè)A為10状囱,B為20.


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

5.4邏輯運(yùn)算符

設(shè)布爾值A(chǔ)為真术裸,B為假


邏輯運(yùn)算符

5.5三元運(yùn)算符

condition ? expression1:expressionw2
如果condition為true,則返回expression1亭枷,如果condition為false袭艺,則返回expression2.

//設(shè)x=1,y=2
x < y ? x : y
//結(jié)果會返回x

5.6運(yùn)算符的優(yōu)先級

運(yùn)算符的優(yōu)先級

6字符串

6.1String類與常用方法

//創(chuàng)建一個(gè)簡單的字符串
String a = "hello world!";
  • 求長度(length)
String a = "hello world!";
int b = a.length();
//b為12

空格也算一個(gè)字符

  • 拼接( + )
String a = "hello";
String b = "world";
String c = a + b;
//c為helloworld
  • 碼點(diǎn)(charAt)
String a = "hello world!";
char b = a.charAt(4);
//b為o

charAt(4)叨粘,取索引位置4猾编,即從左到右數(shù)第5個(gè)字符。

  • 子串(substring):
String a = "hello world!";
String b = a.substring(0,3);
//b為hel

substring(0,3)升敲,取索引位置從0到2答倡,即從左到右數(shù)第1、2驴党、3個(gè)字符瘪撇。

  • 比較(equals)
String a = "hello";
boolean b = a.equals("hello");
//b為true

可以用equals方法檢測兩個(gè)字符串是否相等。

  • 替換(replace)
String a = "hello world";
String b = a.replace("world" , "java");
//a為hello java

replace("舊的字符串","新的字符串")

  • 分割(split)
String a = "hello-world-!";
String[] words =  a.split("-");//此時(shí)words數(shù)組為[hello,world,!]
for (String word : words) {
    System.out.print(word);
}
//控制臺輸出helloworld!

split() 方法根據(jù)匹配給定的正則表達(dá)式來拆分字符串港庄,返回字符串?dāng)?shù)組倔既。

更多方法參考
String類官方文檔

6.2字符串比較(==與equals)

  • ==:基本數(shù)據(jù)類型==比較的是值,引用數(shù)據(jù)類型==比較的是內(nèi)存地址鹏氧。
  • equals:不能比較基本數(shù)據(jù)類型渤涌。
    equals() 方法存在兩種使用情況:
    情況 1:類沒有覆蓋 equals()方法。則通過 equals()比較該類的兩個(gè)對象時(shí)把还,等價(jià)于通過“==”比較這兩個(gè)對象实蓬。使用的默認(rèn)是 Object類equals()方法。
    情況 2:類覆蓋了 equals()方法吊履。一般安皱,我們都覆蓋 equals()方法來兩個(gè)對象的內(nèi)容相等;若它們的內(nèi)容相等率翅,則返回 true(即练俐,認(rèn)為這兩個(gè)對象相等)袖迎。
String a = new String("ab"); // a 為一個(gè)引用
String b = new String("ab"); // b為另一個(gè)引用,對象的內(nèi)容一樣
String aa = "ab"; // 放在常量池中
String bb = "ab"; // 從常量池中查找
if (aa == bb) // true
    System.out.println("aa==bb");
if (a == b) // false冕臭,非同一對象
    System.out.println("a==b");
if (a.equals(b)) // true
    System.out.println("aEQb");
if (42 == 42.0) { // true
    System.out.println("true");

String 中的 equals 方法是被重寫過的腺晾,因?yàn)?Object 的 equals 方法是比較的對象的內(nèi)存地址,而 String 的 equals 方法比較的是對象的值辜贵。
當(dāng)創(chuàng)建 String 類型的對象時(shí)悯蝉,虛擬機(jī)會在常量池中查找有沒有已經(jīng)存在的值和要創(chuàng)建的值相同的對象,如果有就把它賦給當(dāng)前引用托慨。如果沒有就在常量池中重新創(chuàng)建一個(gè) String 對象鼻由。

6.3空串與null串

  • 空串是一個(gè)java對象,有自己的串長度(0)和內(nèi)容(空)厚棵。
//檢查一個(gè)字符串是否為空串
if(str.length() == 0)
//或
if(str.equals(""))
  • null表示沒有任何對象與該變量關(guān)聯(lián)
//檢查一個(gè)字符串是否為null
if(str == null)

有時(shí)需要檢查一個(gè)字符串既不是null也不是空串

if(str !=null && str.length() != 0)

6.4StringBuilder與StringBuffer

String對象不可變蕉世,而StringBuilder與StringBuffer對象是可變的。
StringBuffer線程安全婆硬,StringBuilder線程不安全狠轻。
StringBuilder相比于StringBuffer有10%~15%的性能提升。

操作少量的數(shù)據(jù): 適用 String彬犯。
單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù): 適用 StringBuilder向楼。
多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù): 適用 StringBuffer。

7輸入輸出

7.1讀取輸入

Scanner in = new Scanner(System.in);//可以實(shí)現(xiàn)輸入操作

System.out.println("你的名字是谐区?");
String name = in.nextLine();//使用nextLine方法是因?yàn)樵谳斎胄兄锌赡馨崭?
System.out.println("你的年齡是湖蜕?");
int age = in.nextInt();

System.out.println("你好," + name + "宋列,明年你" + (age + 1) +"歲昭抒。");

輸出結(jié)果

你的名字是?
小明
你的年齡是炼杖?
20
你好戈鲁,小明,明年你21歲嘹叫。

7.2文件輸入輸出

要想對文件進(jìn)行讀取婆殿,就需要一個(gè)用File對象構(gòu)造一個(gè)Scanner對象,如下所示:

Scanner in = new Scanner(Paths.get("myfile.txt"),"UTF-8");

如果文件名中包含反斜杠符號罩扇,就要記住在每個(gè)反斜杠之前再加一個(gè)額外的反斜杠:“c:\mydirectory\myfile.txt”婆芦。
現(xiàn)在就可以利用任何一個(gè)Scanner方法對文件進(jìn)行讀取。
要想寫入文件喂饥,就需要構(gòu)造一個(gè)PrintWriter對象消约。在構(gòu)造器中,只需要提供文件名:

PrintWriter out = new PrintWriter("myfile.txt","UTF-8");

如果文件不存在员帮,創(chuàng)建該文件或粮。可以向輸入到System.out一樣使用print捞高、println以及printf命令氯材。

PrintWriter out = new PrintWriter("D:\\myfile.txt","UTF-8");
out.println("hello world");
out.close();

Scanner in = new Scanner(Paths.get("D:\\myfile.txt"),"UTF-8");
while (in.hasNext()){
    String str = in.nextLine();
    System.out.println(str);
}

8流程控制

8.1塊作用域

塊(block)
塊(即復(fù)合語句)是指有一對大括號括起來的若干條簡單的Java語句渣锦。塊確定了變量的作用域。一個(gè)塊可以嵌套在另一個(gè)塊中氢哮。

public static void main(String[] args)
{
    int n;
    ...
    {
        int k;
        ...
    }//k的只作用域到此為止
}

但是袋毙,不能再嵌套的兩個(gè)塊中聲明同名的變量。例如冗尤,下面的代碼就有錯誤听盖,而無法通過編譯:

public static void main(String[] args)
{
    int n;
    ...
    {
        int k;
        int n;//Error--不能在這個(gè)區(qū)塊中定義
        ...
    }
}

8.2條件語句

  • if條件語句
int a = 100;
if(a == 100) {
    System.out.println(a);
}
//控制臺輸出100
  • if-else條件語句
int grade = 80;        // 聲明,成績?yōu)?0

if(grade >= 60) {    // if判斷語句判斷成績是否大于等于60
    System.out.println("及格");
} else {            // if條件不成立
    System.out.println("不及格");
}
//控制臺輸出及格
  • if-else-if條件語句
int grade = 70;        // 聲明裂七,成績?yōu)?0
if (grade == 100){      //不滿足條件皆看,跳過塊
    System.out.println("滿分");
} else if (grade >= 80) {   //不滿足條件,跳過塊
    System.out.println("優(yōu)秀");
} else if (grade >= 60){    //滿足條件背零,執(zhí)行塊
    System.out.println("及格");
} else {            
    System.out.println("不及格");
}
//控制臺輸出及格
  • switch多分支語句
    在處理多個(gè)選項(xiàng)時(shí)悬蔽,使用if/else結(jié)構(gòu)顯得有些笨拙。用以使用switch語句
//建立一個(gè)包含4個(gè)選項(xiàng)的菜單系統(tǒng)
Scanner in = new Scanner(System.in);
System.out.println("請輸入1捉兴、2蝎困、3、4其中一個(gè)數(shù)字");
int choice = in.nextInt();
switch (choice){
    case 1:
        ...
        break;
    case 2:
        ...
        break;
    case 3:
        ...
        break;
    case 4:
        ...
        break;
    default:
        ...
        break;
}

switch語句將從與選項(xiàng)值相匹配的case標(biāo)簽處開始執(zhí)行直到遇到break語句倍啥,或者執(zhí)行到switch語句結(jié)束處為止禾乘。如果沒有相匹配的case標(biāo)簽,而有default子句虽缕,就執(zhí)行這個(gè)子句始藕。
case的標(biāo)簽可以是:

類型為char、byte氮趋、short或int的常量表達(dá)式伍派。
枚舉常量
從Java SE 7開始,case標(biāo)簽還可以是字符串字面量剩胁。

8.3循環(huán)語句

  • while循環(huán)

while循環(huán)語句的循環(huán)方式為利用一個(gè)條件來控制是否要繼續(xù)反復(fù)執(zhí)行這個(gè)語句诉植。

int count = 3;
while (count > 0)
{
    count--;
    System.out.println("剩余" + count +"次");
}

輸出結(jié)果:

剩余2次
剩余1次
剩余0次

  • do-while循環(huán)

do-while循環(huán)語句先執(zhí)行一次循環(huán)體后,再判斷條件是否成立昵观。

int a = 3;
int b = 3;
while (a == 2)
{
    a--;
    System.out.println("while成功執(zhí)行");
}
        
do {
    b--;
    System.out.println("do-while成功執(zhí)行");
}while (b == 2);

輸出結(jié)果:

do-while成功執(zhí)行
do-while成功執(zhí)行

由于while的條件不成立晾腔,所以不執(zhí)行while的循環(huán)體。
do-while先執(zhí)行一次循環(huán)體啊犬,輸出一次灼擂,由于b-1,滿足了b==2的條件觉至,再執(zhí)行一次循環(huán)體剔应,b再減一,不滿足條件,結(jié)束峻贮。

  • for循環(huán)

for循環(huán)語句是Java程序設(shè)計(jì)中最有用的循環(huán)語句之一席怪。一個(gè)for循環(huán)可以用來重復(fù)執(zhí)行某條語句,直到某個(gè)條件得到滿足月洛。

for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3)
{
    循環(huán)體何恶;
}

表達(dá)式1為初始化表達(dá)式孽锥;表達(dá)式2為循環(huán)條件判斷表達(dá)式嚼黔;表達(dá)式3為循環(huán)后操作表達(dá)式負(fù)責(zé)修整變量,改變循環(huán)條件惜辑。

//用for循環(huán)語句求100以內(nèi)所有偶數(shù)的和唬涧。
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println(sum);
//控制臺輸出5050
  • for each循環(huán)

是一種增強(qiáng)的for循環(huán),可以用來依次處理數(shù)組中的每個(gè)元素(其他元素的元素集合亦可)而不必為指定下標(biāo)值而分心盛撑。

//遍歷一個(gè)數(shù)組
int array[] = {1, 2, 3};
for (int arr : array) {
     System.out.println(arr);
}

8.4跳轉(zhuǎn)語句

  • break

break語句剛剛在switch中已經(jīng)見過了碎节,是用來中止case的。實(shí)際上break語句在for抵卫、while狮荔、do···while循環(huán)語句中,用于強(qiáng)行退出當(dāng)前循環(huán)介粘。假設(shè)有兩個(gè)循環(huán)嵌套使用殖氏,break用在內(nèi)層循環(huán)下,則break只能跳出內(nèi)層循環(huán)

for(int i=0; i<n; i++) {    // 外層循環(huán)
    for(int j=0; j<n ;j++) {    // 內(nèi)層循環(huán)
        break;
    }
}
  • continue

continue語句只能用于for姻采、while雅采、do···while循環(huán)語句中,用于跳過本次循環(huán)慨亲,進(jìn)行下一次循環(huán)婚瓜。

  • return

return語句可以從一個(gè)方法返回,并把控制權(quán)交給調(diào)用它的語句刑棵。

9數(shù)組

數(shù)組是一種數(shù)據(jù)結(jié)構(gòu)巴刻,用來存儲同一類型值的集合。通過一個(gè)整型下標(biāo)可以訪問數(shù)組中的每一個(gè)值蛉签。

9.1數(shù)組的聲明

//兩種方式
int[] a;
int b[];

創(chuàng)建一個(gè)可以存儲100個(gè)整數(shù)的數(shù)組并賦值:

int[] a = new int[100];
for (int i = 0; i < 100; i++) {
    a[i] = i;
}

這個(gè)數(shù)組的下標(biāo)從099(不是1100)冈涧,如果試圖訪問元素a[100](或任何在0~100之外的下標(biāo)),程序就會引發(fā)"array index out of bounds"異常而終止執(zhí)行正蛙。
一旦創(chuàng)建了數(shù)組督弓,就不能再改變它的大小。如果經(jīng)常需要在運(yùn)行過程中擴(kuò)展數(shù)組的大小乒验,就應(yīng)該使用另一種數(shù)據(jù)結(jié)構(gòu)——數(shù)組列表(array list)

9.2數(shù)組的初始化

  • 方式一
//分配長度為 4 個(gè) int 型的內(nèi)存空間愚隧,并分別賦初始值1,2,3狂塘,4
int[] array = new int[]{1, 2, 3, 4};
  • 方式二
//方式一的簡寫
int[] array = {1, 2, 3, 4};
  • 方式三
//分配長度為 4 的內(nèi)存空間录煤,并全部賦為默認(rèn)值 0
//相當(dāng)于 int[] array = new int[4]{0, 0, 0, 0} 的簡寫
int[] array = new int[4];
  • 數(shù)組的默認(rèn)值
數(shù)組類型 默認(rèn)初始值
byte 0
short 0
int 0
long 0
char 編碼為0的字符
float 0.0
double 0.0
String null
boolean false
  • 數(shù)組拷貝
// 一、淺拷貝荞胡,兩個(gè)變量將引用同一個(gè)數(shù)組妈踊。
int[] arrays1 = new int[]{1, 2, 3, 4};
int[] arrays2 = arrays1;
System.out.println(arrays1 == arrays2);
System.out.println(Arrays.toString(arrays1));
System.out.println(Arrays.toString(arrays2));

// 二、clone方法泪漂,深拷貝廊营,將一個(gè)數(shù)組的所有值拷貝到一個(gè)新的數(shù)組中
int[] arrays3 = new int[]{1, 2, 3, 4};
int[] arrays4 = arrays3.clone();
System.out.println(arrays3 == arrays4);
System.out.println(Arrays.toString(arrays3));
System.out.println(Arrays.toString(arrays4));

// 三、copyOf方法萝勤,深拷貝露筒,將一個(gè)數(shù)組的所有值拷貝到一個(gè)新的數(shù)組中
int[] arrays5 = new int[]{1, 2, 3, 4};
//第二個(gè)參數(shù)是新數(shù)組的長度,這個(gè)方法通常用來增加數(shù)組的大小
//如果新數(shù)組小于原始數(shù)組的長度敌卓,則只拷貝最前面的數(shù)據(jù)元素
int[] arrays6 = Arrays.copyOf(arrays5, arrays5.length);
System.out.println(arrays5 == arrays6);
System.out.println(Arrays.toString(arrays5));
System.out.println(Arrays.toString(arrays6));

9.3數(shù)組的常用方法

  • 排序
static void sort(type[] a)

這個(gè)方法使用了優(yōu)化的快速排序算法慎式。

  • 轉(zhuǎn)成字符串
static String toString(type[] a)

返回一個(gè)包含數(shù)組元素的字符串,這些元素被放置在括號內(nèi)趟径,并用逗號分隔瘪吏,如[2,3,5,7,11,13]

  • 填充
static void fill(type[] ,type v)

將數(shù)組的所有數(shù)據(jù)元素值設(shè)置為v蜗巧。

  • 比較(equals)
static boolean equals(type[] a, type[] b)

如果兩個(gè)數(shù)組大小相同掌眠,并且下標(biāo)相同元素都對應(yīng)相等,返回true惧蛹。

9.4多維數(shù)組

實(shí)質(zhì)上扇救,Java 高維數(shù)組還是一維數(shù)組,只不過這個(gè)一維數(shù)組的元素比較特殊香嗓,是由低一維的數(shù)組這種引用類型的引用構(gòu)成的迅腔。

  • 方式一
int[][] array = new int[3][2];

即創(chuàng)建了一個(gè) 3*2 的二維數(shù)組,array 里有三個(gè)數(shù)組元素靠娱,三個(gè)數(shù)組元素都是長度為 2 的一維數(shù)組的引用沧烈。

  • 方式二
int[][] array = new int[3][];
//由于二維數(shù)組相當(dāng)于是一維數(shù)組這種引用類型的引用組成的
//所以此時(shí)等價(jià)于 int[][] array = {null, null, null}
//下面可以為 array 數(shù)組分別賦上長度不同的一維數(shù)組
array[0] = new int[1];
array[1] = new int[2];
array[2] = new int[3];
  • 方式三
int[][] array = {{1, 2}, {1, 3, 5}, {2}};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市像云,隨后出現(xiàn)的幾起案子锌雀,更是在濱河造成了極大的恐慌,老刑警劉巖迅诬,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腋逆,死亡現(xiàn)場離奇詭異,居然都是意外死亡侈贷,警方通過查閱死者的電腦和手機(jī)惩歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撑蚌,你說我怎么就攤上這事上遥。” “怎么了争涌?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵粉楚,是天一觀的道長。 經(jīng)常有香客問我亮垫,道長模软,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任包警,我火速辦了婚禮撵摆,結(jié)果婚禮上底靠,老公的妹妹穿的比我還像新娘害晦。我一直安慰自己,他們只是感情好暑中,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布壹瘟。 她就那樣靜靜地躺著,像睡著了一般鳄逾。 火紅的嫁衣襯著肌膚如雪稻轨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天雕凹,我揣著相機(jī)與錄音殴俱,去河邊找鬼。 笑死枚抵,一個(gè)胖子當(dāng)著我的面吹牛线欲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汽摹,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼李丰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逼泣?” 一聲冷哼從身側(cè)響起趴泌,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拉庶,沒想到半個(gè)月后嗜憔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氏仗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年吉捶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帚稠,死狀恐怖谣旁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滋早,我是刑警寧澤榄审,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站杆麸,受9級特大地震影響搁进,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昔头,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一饼问、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揭斧,春花似錦莱革、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旦万,卻和暖如春闹击,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背成艘。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工赏半, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淆两。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓断箫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親琼腔。 傳聞我的和親對象是個(gè)殘疾皇子瑰枫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容