java 这个程序中创建了多少个字符串对象?[已关闭]

k2arahey  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(100)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

21小时前关门了。
Improve this question

String s1 = "Hello";
    String s2 = " ";
    String s3 = "world";
    String s4 = "Hello" + " " + "world";
    String s5 = "Hello world";
    String s6 = s1;
    String s7 = s1 + s2;
    String s8 = s1 + s2 + s3;
    String s9 = new String("Hello");
    String s10 = new String("world");
    String s11 = new String(s9 + " " + s10);
    String s12 = new String("HELLO WORLD");
    String s13 = s12.toLowerCase();
    String s14 = s12.toUpperCase();

我想知道在这个程序中如何计算字符串对象的个数。是不是9?非常感谢!

9bfwbjaz

9bfwbjaz1#

你可以假设字符串常量是内部的,如果另一个字符串是内部的,它将引用相同内容的字符串常量(==)。
所以你可以这样自己探索:

public class Test {
    public static void main(String[] args) {
        String s1 = "Hello";
        System.out.println(s1=="Hello");
        String s2 = " ";
        System.out.println(s2==" ");
        String s3 = "world";
        System.out.println(s3=="world");
        String s4 = "Hello" + " " + "world";
        System.out.println(s4=="Hello world");
        String s5 = "Hello world";
        System.out.println(s5=="Hello world");
        String s6 = s1;
        System.out.println(s6==s1);
        String s7 = s1 + s2;
        System.out.println(s7=="Hello ");
        String s8 = s1 + s2 + s3;
        System.out.println(s8=="Hello world");
        String s9 = new String("Hello");
        System.out.println(s9=="Hello");
        String s10 = new String("world");
        System.out.println(s10=="world");
        String s11 = new String(s9 + " " + s10);
        System.out.println(s11=="Hello world");
        String s12 = new String("HELLO WORLD");
        System.out.println(s12=="HELLO WORLD");
        String s13 = s12.toLowerCase();
        System.out.println(s13=="hello world");
        String s14 = s12.toUpperCase();
        System.out.println(s14=="HELLO WORLD");
    }
}

注意:不是每个true都意味着创建一个新的interned String,s6是重用一个预先存在的字符串。
注意:你通常会比较String.equals(),这是一个例外。

相关问题