相关疑难解决方法(0)

什么是Java字符串池以及"s"与新String("s")有何不同?

String Pool是什么意思?以下声明之间有什么区别:

String s = "hello";
String s = new String("hello");
Run Code Online (Sandbox Code Playgroud)

JVM存储这两个字符串有什么区别吗?

java string

111
推荐指数
5
解决办法
6万
查看次数

关于Java的字符串池的问题

考虑以下代码:

String first = "abc"; 
String second = new String("abc");
Run Code Online (Sandbox Code Playgroud)

使用new关键字时,Java会abc String再次创建吗?这会存储在常规堆还是String池中?多少人String在将s结尾String池?

java string string-pool

68
推荐指数
3
解决办法
2万
查看次数

String s = new String("xyz").执行这行代码后,有多少个对象被生成?

这个访谈问题的共同商定答案是代码创建了两个对象.但我不这么认为; 我写了一些代码来确认.

public class StringTest {
    public static void main(String[] args) {
        String s1 = "a";
        String s2 = "a";
        String s3 = new String("a");
        System.out.println("s1: "+s1.hashCode());
        System.out.println("s2: "+s2.hashCode());
        System.out.println("s3: "+s3.hashCode());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

应用输出

这是否意味着只创建了一个对象?

重申:我的问题是以下代码创建了多少个对象:

String s = new String("xyz")
Run Code Online (Sandbox Code Playgroud)

而不是StringTest代码.

在@Don Branson的启发下,我调试了以下代码:

public class test {
    public static void main(String[] args) {
        String s = new String("abc");
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

s的id是84,"abc"的id是82.这究竟是什么意思?

java jvm

26
推荐指数
2
解决办法
7万
查看次数

Java Strings何时实施?

受到关于这个问题的评论的启发,我很确定Java String是在运行时而不是编译时间实现的 - 当然,事实上可以在不同的时间编译类,但在运行时仍然会指向相同的引用.

我似乎无法找到任何证据支持这一点.谁能证明这一点?

java string

18
推荐指数
1
解决办法
2164
查看次数

字符串连接期间创建的对象数

有人可以告诉我System.out.println在下面的代码中执行语句时将创建多少个对象

int i=0;
int j=1;
System.out.print("i value is "+ i + "j value is "+j);
Run Code Online (Sandbox Code Playgroud)

java string object

11
推荐指数
3
解决办法
4232
查看次数

标签 统计

java ×5

string ×4

jvm ×1

object ×1

string-pool ×1