日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础之String深入解析

發布時間:2024/2/28 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础之String深入解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java基礎之String深入解析


以下是本文目錄大綱

  • 生成地方和地址指向,intern()方法
  • String可否被繼承?

  • 1. 生成地方和地址指向,intern()方法


    先看代碼

    String s1 = new String("abc");String s2 = "abc";String s3 = new String("abc");System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s2 == s3);

    問題:

  • s1,s2,s3分別在哪?生成了幾個對象?
  • 結果是什么?

  • 先看程序運行的結果

    false false false

    解析:

    • String s1 = new String("abc");
      "abc" 會在字符串常量池里面生成一個字符串abc
      new String("abc"); 會在堆里面生成 abc的對象
    • String s2 = "abc";
      由于"abc"在字符串常量池里,所以可以直接引用
    • String s3 = new String("abc");
      “abc” 先在常量池里找,找到了就不在常量池里生成了,但是
      new String("abc");會在堆里面再生成一個對象abc

    畫圖如下:

    結論:
    1. 生成3個abc對象,一個在字符串常量池里,兩個在堆里
    2. 結果如上


    擴展加強

    先看代碼

    String s1 = new String("abc");String s2 = "abc";String s3 = new String("abc");System.out.println(s1 == s1.intern());System.out.println(s2 == s2.intern());System.out.println(s1.intern() ==s2.intern());

    備注:當使用intern()方法時,查詢字符串常量池是否存在當前字符串,若不存在則將當前字符串復制到字符串常量池中,并返回字符串常量池中的引用。


    問題:

  • 結果是分別是什么?

  • 解析:

    • s1.intern()返回常量池里中abc對象,s1是堆對象abc,所以false
    • 同理,s2,s2.intern()都指向字符串常量池中的對象abc,所以true
    • s1.intern()和s2.intern()都指向字符串常量池中的對象abc,所以true

    畫圖如下:


    結論:

    false true true

    2. String可否被繼承?


    先看代碼

    String s4 = "java";String s5 = "ja";String s6 = "va";System.out.println(s4 == "java");System.out.println(s4 == (s5 + s6));System.out.println(s4 == "ja" + s6);System.out.println((s5+s6)== "ja" + s6);

    解析:

    • s4 == "java",都是常量池里的對象,返回true
    • (s5+s6)會在堆里面生成 “java”,所以s4 == (s5 + s6)返回false
    • 同理"ja" + s6也會在堆里面生成 “java”,所以(s5+s6)== "ja" + s6返回false
    • (s5+s6) == "ja" + s6 等號兩邊引用的對象雖然相同,但是生成的對象是不一樣的,所以返回false

    畫圖如下:

    總結

    以上是生活随笔為你收集整理的Java基础之String深入解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。