做java Java中String接受的最大字符串的長度是多少?
Java中String接受的最大字符串的長度是多少?數(shù)組最大的長度為Integer.MAX_VALUE1.不過,我們在編寫源代碼的時候,如果使用 Sting str = "aaaa"的形式定義一個字符
Java中String接受的最大字符串的長度是多少?
數(shù)組最大的長度為Integer.MAX_VALUE1.不過,我們在編寫源代碼的時候,如果使用 Sting str = "aaaa"的形式定義一個字符串,那么雙引號里面的ASCII字符最多只能有 65534 個。2.因為在class文件的規(guī)范中, CONSTANT_Utf8_info表中使用一個16位的無符號整數(shù)來記錄字符串的長度的,最多能表示 65536個字節(jié),而java class 文件是使用一種變體UTF-8格式來存放字符的,null值使用兩個字節(jié)來表示,因此只剩下 65536- 2 = 65534個字節(jié)。3.也正是變體UTF-8的原因,如果字符串中含有中文等非ASCII字符,那么雙引號中字符的數(shù)量會更少(一個中文字符占用三個字節(jié))。如果超出這個數(shù)量,在編譯的時候編譯器會報錯。
java怎么獲取字符串的長度?
第一步、我們首先需要知道在java中獲取數(shù)組長度用數(shù)組的length屬性,獲取字符串長度用字符串類的length()方法,如下圖所示:
第二步、下面我們來看一下具體代碼,通過“String s="abcdefgkhj" int a=s.length()System.out.println("s字符串的長度:" a)”代碼,獲取字符串s的長度,如下圖所示:
第三步、運行程序,可以看到字符串s的長度為10,如下圖所示:
第四步、輸入“int data[]={12,23,34,45,16,78}int c=data.lengthSystem.out.println(“data數(shù)組的長度:" c)”代碼,獲取data數(shù)組的長度,如下圖所示:
第五步、運行程序,可以看到data數(shù)組的長度為6,如下圖所示:
為什么說java里面只有值傳遞?
關于這個問題,不同人對它的理解不盡相同。對初學Java的同學來說,可能簡單的認為Java中參數(shù)傳遞就是分為值傳遞和引用傳遞,至于為什么,因為課本上就是這么說的。對于有些工作年限的程序員來說,可能認為如果傳遞的參數(shù)類型是普通類型,那么就是值傳遞,如果參數(shù)是對象,那么就是引用傳遞。還有一些人認為Java中只有值傳遞,就是題主問題中的主題。
對Java編程語言來說,前兩種理解是錯誤的,Java中只有值傳遞。對于我來說,剛開始也是理解有值傳遞和引用傳遞一說的,但是隨著自己寫代碼的積累,慢慢發(fā)現(xiàn)并不是那么回事。那為什么只有值傳遞呢?
首先,來了解一下什么是值傳遞,什么是引用傳遞?
值傳遞是說在調用函數(shù)時,將實際參數(shù)值復制一份傳遞到被調用函數(shù)中,在被調函數(shù)中修改參數(shù)值不會影響原實參值。
引用傳遞是說在調用函數(shù)時,將實際參數(shù)的地址直接傳遞到被調用的函數(shù)中,在被調函數(shù)中修改參數(shù)值會影響原實參值。
如果傳遞的參數(shù)類型是普通基本類型,那么一定是復制一份實參值傳遞給形參的,但是當參數(shù)類型是對象的時候,也是復制的一份參數(shù)值傳遞給形參,只不過復制的是對象引用的地址,也就是在內存中分配的存儲地址,不是直接傳遞的引用地址。
此時,可能有人會說那為什么將一個對象傳到另一個方法中,在這個方法中修改了這個對象的屬性值時,原調用方法中的對象屬性值也跟著變了,它不就是引用傳遞嗎?
其實,這是一個很容易迷惑的點。你仔細看看上面的陳述就會發(fā)現(xiàn),不是這么回事。將一個對象傳到另一個方法中,傳遞的是什么?傳遞的是對象引用的地址,這個對象引用的地址在另一個方法中被修改了嗎?原對象引用有受影響嗎?并沒有吧!
所以,Java中并沒有引用傳遞,只有值傳遞,不要再搞錯了!