java x.length_Java中的length和length()
紅顏莎娜
稍微簡化一下,您可以認為它是一種特殊情況,而不是普通類(有點像基元,但不是)。字符串和所有集合都是類,因此獲取大小,長度或類似內(nèi)容的方法。我猜設(shè)計的原因是性能。如果他們今天創(chuàng)建了它,他們可能想出了一些類似數(shù)組支持的集合類。如果有人感興趣,下面是一小段代碼,以說明所生成代碼中兩者之間的區(qū)別,首先是源代碼:public class LengthTest {? public static void main(String[] args) {? ? int[] array = {12,1,4};? ? String string = "Hoo";? ? System.out.println(array.length);? ? System.out.println(string.length());? }}截斷javap -c在類上運行的字節(jié)代碼中不太重要的部分,最后兩行將得到以下結(jié)果:20: getstatic? ?#3; //Field java/lang/System.out:Ljava/io/PrintStream;23: aload_124: arraylength25: invokevirtual? ?#4; //Method java/io/PrintStream.println:(I)V28: getstatic? ?#3; //Field java/lang/System.out:Ljava/io/PrintStream;31: aload_232: invokevirtual? ?#5; //Method java/lang/String.length:()I35: invokevirtual? ?#4; //Method java/io/PrintStream.println:(I)V在第一種情況下(20-25),代碼僅向JVM請求數(shù)組的大小(在JNI中,這將是對GetArrayLength()的調(diào)用),而在String情況下(28-35),它需要執(zhí)行以下操作:方法調(diào)用以獲取長度。在1990年代中期,如果沒有良好的JIT和功能,僅使用java.util.Vector(或類似的東西),而不是像一個類卻表現(xiàn)得并不快的語言構(gòu)造,將完全喪失性能。他們當(dāng)然可以將屬性掩蓋為方法調(diào)用并在編譯器中進行處理,但是我認為在不是真正類的東西上使用方法會更加令人困惑。
總結(jié)
以上是生活随笔為你收集整理的java x.length_Java中的length和length()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java封装省市区三级json格式,微信
- 下一篇: php实现数字滚动效果,vue如何实现数