Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串常量池查询_Java_String_Constants - Fatal编程技术网

Java 字符串常量池查询

Java 字符串常量池查询,java,string,constants,Java,String,Constants,连接s2中的两个字符串常量时,不会产生新的字符串对象(字符串对象仅在使用new或连接时使用类似s1的perm引用时创建)。请说明为什么o/p是假的 在s2中连接2个字符串常量不会产生新的字符串对象 当使用字符串连接运算符执行时,这是正确的,但这不是您在这里要做的。您正在手动调用String.concat,因此这不是一个常量表达式,也不是在编译时计算的 如果您使用: public class D2 { public static void main(String[] args) {

连接s2中的两个字符串常量时,不会产生新的字符串对象(字符串对象仅在使用new或连接时使用类似s1的perm引用时创建)。请说明为什么o/p是假的

在s2中连接2个字符串常量不会产生新的字符串对象

当使用字符串连接运算符执行时,这是正确的,但这不是您在这里要做的。您正在手动调用
String.concat
,因此这不是一个常量表达式,也不是在编译时计算的

如果您使用:

public class D2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String s1="java";
        String s2="ja".concat("va");
        System.out.println(s1==s2);
    }
}
然后,编译器将执行串联,并且
s1
s2
将引用相同的对象

提供有关导致常量表达式的详细信息,其中不包括方法调用

在s2中连接2个字符串常量不会产生新的字符串对象

当使用字符串连接运算符执行时,这是正确的,但这不是您在这里要做的。您正在手动调用
String.concat
,因此这不是一个常量表达式,也不是在编译时计算的

如果您使用:

public class D2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String s1="java";
        String s2="ja".concat("va");
        System.out.println(s1==s2);
    }
}
然后,编译器将执行串联,并且
s1
s2
将引用相同的对象


提供有关导致常量表达式的详细信息,其中不包括方法调用。

concat
会创建一个新的
字符串。这可能是运行时语句,编译器在编译代码时无法判断运行时语句的结果,因此,新的“java”将是新字符串,而不是第一次从字符串池中得到的相同字符串。。我被复制了。
concat
确实创建了一个新的
字符串。这可能是运行时语句,编译器在编译代码时无法判断运行时语句的结果,因此,新的“java”将是新字符串,而不是第一次从字符串池中得到的相同字符串。。我被复制了。你是有史以来最快的JLS报价人。你是有史以来最快的JLS报价人。