Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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_Substring_String Literals - Fatal编程技术网

Java 当字符串对象是通过字符串文字变量和字符串的串联创建的?

Java 当字符串对象是通过字符串文字变量和字符串的串联创建的?,java,string,substring,string-literals,Java,String,Substring,String Literals,输出:false 请解释为什么输出是错误的 我无法理解这种对象创建背后的逻辑。根据我的说法,两者都应该提到同一个例子,答案应该是正确的。 请解释一下 它们是不同的对象引用。Java中的字符串是不可变的 如果要比较字符串的实际内容,请使用.equals方法。您如何理解对象内存?可能是更好的副本。请注意,如果您说的是final String s=Sachin;结果是真的。但是您仍然不应该使用==来比较字符串。当然。我从不使用==比较字符串。这个问题是在一次采访中提出的。所以我需要解释一下,字符串sa

输出:false

请解释为什么输出是错误的

我无法理解这种对象创建背后的逻辑。根据我的说法,两者都应该提到同一个例子,答案应该是正确的。
请解释一下

它们是不同的对象引用。Java中的字符串是不可变的


如果要比较字符串的实际内容,请使用.equals方法。

您如何理解对象内存?可能是更好的副本。请注意,如果您说的是final String s=Sachin;结果是真的。但是您仍然不应该使用==来比较字符串。当然。我从不使用==比较字符串。这个问题是在一次采访中提出的。所以我需要解释一下,字符串sachindulkar是一个对象。通过连接Sachin和Tendulkar创建的字符串是另一个对象。顺便说一句,它们的值相同,但这与它们的对象性无关,==正在比较对象地址。我想了解它背后的逻辑。我同意你的观点,字符串应该与equals方法进行比较。请解释一下逻辑,它是如何在java中发生的???@Randhishkumar逻辑是代码完全按照你看到的那样执行。当与==运算符比较时,幕后没有神秘的机制使sb神奇地等于sbc。如果你认为有,告诉我们你认为是什么。这是一个措辞拙劣的面试问题,而不是一个表现出很强的能力或面试官真正感兴趣的问题。
public class SubString1
{
public static void main(String[] args)
{
String s="Sachin";
String sb=s+"Tendulkar";
String sbc="SachinTendulkar";
System.out.println(sb==sbc);
}
}