卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

做java Java中String接受的最大字符串的長(zhǎng)度是多少?

Java中String接受的最大字符串的長(zhǎng)度是多少?數(shù)組最大的長(zhǎng)度為Integer.MAX_VALUE1.不過(guò),我們?cè)诰帉?xiě)源代碼的時(shí)候,如果使用 Sting str = "aaaa"的形式定義一個(gè)字符

Java中String接受的最大字符串的長(zhǎng)度是多少?

數(shù)組最大的長(zhǎng)度為Integer.MAX_VALUE1.不過(guò),我們?cè)诰帉?xiě)源代碼的時(shí)候,如果使用 Sting str = "aaaa"的形式定義一個(gè)字符串,那么雙引號(hào)里面的ASCII字符最多只能有 65534 個(gè)。2.因?yàn)樵赾lass文件的規(guī)范中, CONSTANT_Utf8_info表中使用一個(gè)16位的無(wú)符號(hào)整數(shù)來(lái)記錄字符串的長(zhǎng)度的,最多能表示 65536個(gè)字節(jié),而java class 文件是使用一種變體UTF-8格式來(lái)存放字符的,null值使用兩個(gè)字節(jié)來(lái)表示,因此只剩下 65536- 2 = 65534個(gè)字節(jié)。3.也正是變體UTF-8的原因,如果字符串中含有中文等非ASCII字符,那么雙引號(hào)中字符的數(shù)量會(huì)更少(一個(gè)中文字符占用三個(gè)字節(jié))。如果超出這個(gè)數(shù)量,在編譯的時(shí)候編譯器會(huì)報(bào)錯(cuò)。

java怎么獲取字符串的長(zhǎng)度?

第一步、我們首先需要知道在java中獲取數(shù)組長(zhǎng)度用數(shù)組的length屬性,獲取字符串長(zhǎng)度用字符串類(lèi)的length()方法,如下圖所示:


第二步、下面我們來(lái)看一下具體代碼,通過(guò)“String s="abcdefgkhj" int a=s.length()System.out.println("s字符串的長(zhǎng)度:" a)”代碼,獲取字符串s的長(zhǎng)度,如下圖所示:


第三步、運(yùn)行程序,可以看到字符串s的長(zhǎng)度為10,如下圖所示:


第四步、輸入“int data[]={12,23,34,45,16,78}int c=data.lengthSystem.out.println(“data數(shù)組的長(zhǎng)度:" c)”代碼,獲取data數(shù)組的長(zhǎng)度,如下圖所示:


第五步、運(yùn)行程序,可以看到data數(shù)組的長(zhǎng)度為6,如下圖所示:

為什么說(shuō)java里面只有值傳遞?

關(guān)于這個(gè)問(wèn)題,不同人對(duì)它的理解不盡相同。對(duì)初學(xué)Java的同學(xué)來(lái)說(shuō),可能簡(jiǎn)單的認(rèn)為Java中參數(shù)傳遞就是分為值傳遞和引用傳遞,至于為什么,因?yàn)檎n本上就是這么說(shuō)的。對(duì)于有些工作年限的程序員來(lái)說(shuō),可能認(rèn)為如果傳遞的參數(shù)類(lèi)型是普通類(lèi)型,那么就是值傳遞,如果參數(shù)是對(duì)象,那么就是引用傳遞。還有一些人認(rèn)為Java中只有值傳遞,就是題主問(wèn)題中的主題。

對(duì)Java編程語(yǔ)言來(lái)說(shuō),前兩種理解是錯(cuò)誤的,Java中只有值傳遞。對(duì)于我來(lái)說(shuō),剛開(kāi)始也是理解有值傳遞和引用傳遞一說(shuō)的,但是隨著自己寫(xiě)代碼的積累,慢慢發(fā)現(xiàn)并不是那么回事。那為什么只有值傳遞呢?

首先,來(lái)了解一下什么是值傳遞,什么是引用傳遞?

值傳遞是說(shuō)在調(diào)用函數(shù)時(shí),將實(shí)際參數(shù)值復(fù)制一份傳遞到被調(diào)用函數(shù)中,在被調(diào)函數(shù)中修改參數(shù)值不會(huì)影響原實(shí)參值。

引用傳遞是說(shuō)在調(diào)用函數(shù)時(shí),將實(shí)際參數(shù)的地址直接傳遞到被調(diào)用的函數(shù)中,在被調(diào)函數(shù)中修改參數(shù)值會(huì)影響原實(shí)參值。

如果傳遞的參數(shù)類(lèi)型是普通基本類(lèi)型,那么一定是復(fù)制一份實(shí)參值傳遞給形參的,但是當(dāng)參數(shù)類(lèi)型是對(duì)象的時(shí)候,也是復(fù)制的一份參數(shù)值傳遞給形參,只不過(guò)復(fù)制的是對(duì)象引用的地址,也就是在內(nèi)存中分配的存儲(chǔ)地址,不是直接傳遞的引用地址。

此時(shí),可能有人會(huì)說(shuō)那為什么將一個(gè)對(duì)象傳到另一個(gè)方法中,在這個(gè)方法中修改了這個(gè)對(duì)象的屬性值時(shí),原調(diào)用方法中的對(duì)象屬性值也跟著變了,它不就是引用傳遞嗎?

其實(shí),這是一個(gè)很容易迷惑的點(diǎn)。你仔細(xì)看看上面的陳述就會(huì)發(fā)現(xiàn),不是這么回事。將一個(gè)對(duì)象傳到另一個(gè)方法中,傳遞的是什么?傳遞的是對(duì)象引用的地址,這個(gè)對(duì)象引用的地址在另一個(gè)方法中被修改了嗎?原對(duì)象引用有受影響嗎?并沒(méi)有吧!

所以,Java中并沒(méi)有引用傳遞,只有值傳遞,不要再搞錯(cuò)了!

我是『Java實(shí)戰(zhàn)技術(shù)』,關(guān)注我獲取更多原理分析、實(shí)戰(zhàn)技術(shù)!