Java數(shù)組判斷循環(huán), since 2021-08-16

(2021-08-16)

數(shù)組

Java的數(shù)組被創(chuàng)建后晒来,只能用來存儲指定類型的信息竭宰。比如可以有int數(shù)組兼贡、String對象的數(shù)組或數(shù)組的數(shù)組屡拨,但一個數(shù)組不能同時存儲String對象和int值只酥。

一個規(guī)避這種限制的方法:一個數(shù)組可同時存儲特定類及其所有子類的對象,因此一個Object數(shù)據(jù)可包含任何Java對象洁仗,包括與基本類型對應(yīng)的類的對象层皱。

在Java中創(chuàng)建數(shù)組,按下面過程進(jìn)行

  1. 生命一個用于存儲數(shù)組的變量
  2. 創(chuàng)建一個數(shù)組對象赠潦,并將它賦給數(shù)組變量
  3. 在數(shù)組中存儲信息

數(shù)組聲明

聲明的數(shù)組變量指出了數(shù)組將存儲的對象或數(shù)據(jù)類型以及數(shù)組的名稱叫胖。聲明方式有兩種,即類型后加[]和變量名后加[]她奥。

String[] a;
Point[] b; //數(shù)組存儲的對象是Point的對象
float[] c;
// 下面這樣的形式與上面等效
String a[];
Point b[];
float c[];

數(shù)組是一個對象瓮增。
(2021.08.18 Wed)

創(chuàng)建數(shù)組對象

因數(shù)組是對象怎棱,創(chuàng)建時需要new關(guān)鍵字。

String[] players = new String[10]; //定義了一個長度是10的String數(shù)組

使用new創(chuàng)建數(shù)組對象時绷跑,其所有元素都被自動的初始化拳恋。

類型 默認(rèn)初值
數(shù)字 0
boolean false
char '\0'
對象 null

數(shù)組賦初值的方式,可逐一賦值砸捏,比如

Interger[] series = new Integer[3];
series[0] = new Integer(10);
series[1] = new Integer(5);
series[2] = new Integer(999);

或者在初始化時將數(shù)組元素放在大括號中谬运,用逗號分隔

Point[] m = {new Point(1,5), new Point(996, 0), new Point(7, 24)};

注意到String對象可以不用new來創(chuàng)建和初始化,用作字符串?dāng)?shù)組時垦藏,也可以如下初始化

String[] t = {"Mr.", "Mrs.", "Miss", "Dr."};

所有數(shù)組都有一個名為length的實(shí)例變量梆暖,指出了數(shù)組包含多少個元素。如剛剛定義的字符串?dāng)?shù)組t掂骏,有t.length = 4轰驳。

訪問數(shù)組元素時,index不能超過length變量弟灼,否則Java編譯器返回錯誤消息ArrayIndexOutOfBoundsException级解。
訪問數(shù)組和修改數(shù)組的方式同Python。

注:指定整數(shù)字面量時田绑,將每3位編組并用下劃線_分割勤哗,讓數(shù)字更加容易閱讀。

short[] a = new short[2];
a[0] = 10_000; 

多維數(shù)組

數(shù)組可以多維辛馆,僅需在聲明時加入相應(yīng)個數(shù)的中括號俺陋。

int[][] dayValue = new int[53][7]; // 定義了一個53行7列的數(shù)組
int[][][] cen = new int[100][53][7]; // 定義了一個100*53*7的數(shù)組
System.out.println('Elements in 1st dimension: ' + cen.length);
System.out.println('Elements in 2nd dimension: ' + cen[0].length);
System.out.println('Elements in 3rd dimension: ' + cen[0][0].length);

塊語句

用花括號(brace)括起來的內(nèi)容是一個塊語句(block statement)。Java塊中聲明的局部變量創(chuàng)建了作用域昙篙,在塊中定義的變量僅能在塊中使用腊状。在塊執(zhí)行完畢后,在塊中定義的變量將不復(fù)存在苔可。

void testBlock() {
    int x = 10;
    {
        int y = 40;
        y = y + x;
    } // y的作用域到此結(jié)束
}

判斷和循環(huán)語句

if條件語句

Java要求if的測試返回值只能是boolean值缴挖,即true/false,而在Python焚辅、C和C++中映屋,測試可以返回整數(shù)值。

...
String server;
if (arguments.length < 1) {
    server = "localhost";
} else {
    server = "xxx";
}
// 另一個例子
if (operation == '+')
    add(o1, o2);
else if (operation == '-')
    subtract(o1, o2)
else if (operation == '*')
    multiply(o1, o2)
else if (operation == '/')
    divide(o1, o2)

switch條件語句

if語句的最后一個例子同蜻,是嵌套if語句棚点。和C/C++相同,Java提供了一個更好的方式處理這種情況湾蔓,也就是switch語句瘫析。

char grade = 'D';
switch (grade) {
    case 'A':
        System.out.println("Superb!");
        break;
    case 'B':
        System.out.println("not bad");
        break;
    case 'C':
        System.out.println("so so");
        break;
    case 'D':
        System.out.println("work harder please");
        break;
    default:
        System.out.print("wth");
}

每個case語句之后,可以有任何數(shù)目的語句,不必像if語句那樣用花括號括起來贬循。

每個case都有一個break語句咸包,用于指出何時停止執(zhí)行語句。如果case中沒有break語句杖虾,則找到匹配的情況后烂瘫,該case中的語句及其后到breakswitch末尾的所有語句都將執(zhí)行。請記得多數(shù)情況下為每個case語句加入break語句奇适。

int x = 5;
switch (x) {
    case 2:
    case 4:
    case 8:
        System.out.println("even number");
        break;
    default:
        System.out.println("odd number");
}

上面這個指令返回odd number坟比。

int month = 10;
switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        count = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        count = 30;
        break;
    case 2:
        count = 28
}

上面代碼的返回結(jié)果是31

(2021.08.19 Thur)

三目運(yùn)算符

也叫條件運(yùn)算符滤愕,格式為

test? trueResult:falseResult

相當(dāng)于if判斷温算。比如比較myScoreyourScore兩個變量,返回其中比較大的那個并返回賦值給變量bestScore间影。

bestScore = myScore > yourScore? myScore: yourScore;

該語句等效于

if (myScore > yourScore) {
    bestScore = myScore;
} else {
    bestScore = yourScore;
}

三目運(yùn)算符的優(yōu)先級很低,通常在所有子表達(dá)式計(jì)算完畢后才被計(jì)算茄茁,唯一比它優(yōu)先級低的運(yùn)算符是賦值運(yùn)算魂贬。

for循環(huán)

格式如下

for (initialisation; test; increment) {
statement;
}

其中的test部分是boolean格式的表達(dá)式,當(dāng)不滿足該條件裙顽,則停止循環(huán)付燥。一個例子

String[] salutation = new String[10];
byte i;
for (i = 0; i < salutation.length; i++) {
    salutation[i] = "Dr.";
}

一種特殊情況是每次循環(huán)什么都不做,可以簡單的表達(dá)為

for (i = 0; i < salutation.length; i++);

while和do循環(huán)

這兩類循環(huán)讓Java代碼重復(fù)執(zhí)行愈犹,直到滿足條件為止键科。
while循環(huán)

while (i < 10) {
    x += i;
}

這個循環(huán)中因只有一條語句,所以不用花括號也可以使用漩怎,但如果循環(huán)體內(nèi)有多條語句勋颖,用花括號是必需的。

do循環(huán)與while循環(huán)類似勋锤,區(qū)別在于檢測條件的位置饭玲,且do循環(huán)檢測條件之前,至少執(zhí)行循環(huán)體一次叁执。

long i = 1;
do {
    i += 1111;
    System.out.println(i + " ");
} while (i < 3_000_000_000);

跳出和繼續(xù)循環(huán) break和continue

break跳出循環(huán)茄厘,continue執(zhí)行下一次循環(huán)。

Reference

1 R. Cadenhead著谈宛,袁國忠譯次哈,21天學(xué)通Java(第7版),中國工信出版集團(tuán)吆录,人民郵電出版社

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窑滞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葛假,老刑警劉巖障陶,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異聊训,居然都是意外死亡抱究,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門带斑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼓寺,“玉大人,你說我怎么就攤上這事勋磕÷韬颍” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵挂滓,是天一觀的道長苦银。 經(jīng)常有香客問我,道長赶站,這世上最難降的妖魔是什么幔虏? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮贝椿,結(jié)果婚禮上想括,老公的妹妹穿的比我還像新娘。我一直安慰自己烙博,他們只是感情好瑟蜈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渣窜,像睡著了一般铺根。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上图毕,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天夷都,我揣著相機(jī)與錄音,去河邊找鬼予颤。 笑死囤官,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛤虐。 我是一名探鬼主播党饮,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驳庭!你這毒婦竟也來了刑顺?” 一聲冷哼從身側(cè)響起氯窍,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹲堂,沒想到半個月后狼讨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柒竞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年政供,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朽基。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡布隔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稼虎,到底是詐尸還是另有隱情衅檀,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布霎俩,位于F島的核電站哀军,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茸苇。R本人自食惡果不足惜排苍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望学密。 院中可真熱鬧,春花似錦传藏、人聲如沸腻暮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哭靖。三九已至,卻和暖如春侈离,著一層夾襖步出監(jiān)牢的瞬間试幽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工卦碾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铺坞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓洲胖,卻偏偏與公主長得像济榨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绿映,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

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