正如所述,==运算符比较对象引用以检查它们是否引用堆上的同一对象.如果是这样,我为什么要获得这段代码的"平等"?
public class Salmon {
public static void main(String[] args) {
String str1 = "Str1";
String str2 = "Str1";
if (str1 == str2) {
System.out.println("Equal");
} else {
System.out.println("Not equal");
}
}
}
Run Code Online (Sandbox Code Playgroud) 我知道之前已经问过,但是尽管建议使用.equals()而不是==比较运算符,我发现它==一直都有效:
String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2); // true
Run Code Online (Sandbox Code Playgroud)
谁能给我一个==操作员失败的例子?
我有以下代码:
String s1 = "a";
String s2 = "a";
if (s1 == s2) {
System.out.println("string not equal");
}
Run Code Online (Sandbox Code Playgroud)
当我使用 SonarLint 分析这段代码时,它没有被捕获。我希望这应该被以下规则所捕获
鱿鱼:S1698-“==”和“!=”当“等于”被覆盖时不应使用
我已经使用 Sonar Qube 7.0 在独立模式和连接模式下检查了这一点。有人知道为什么声纳会这样吗?
- - - - - - - -编辑 - - - - - - - - -
同样的情况也发生在:
Integer x= 500;
Integer y= 500;
if (x==y){
System.out.println("not equal");
}
Run Code Online (Sandbox Code Playgroud) 如果我写
String s= new String("how many object b created by this method ");
Run Code Online (Sandbox Code Playgroud)
与这样做相比,将创建多少个参考对象和对象:
Sting s1="Is this method is good as compare to upper";
Run Code Online (Sandbox Code Playgroud) 我怀疑我的概念在字符串池中是否清晰.请研究以下一组代码,并检查我的答案在以下一组陈述后创建的对象数量是否正确: -
1)
String s1 = "abc";
String s2 = "def";
s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)
2)
String s1 = "abc";
String s2 = "def";
s2 = s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)
3)
String s1 = "abc";
String s2 = "def";
String s3 = s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)
4)
String s1 = "abc";
String s2 = "def";
s2 + "xyz";
String s3 = "defxyz";
Run Code Online (Sandbox Code Playgroud)
根据我所知的概念,在上面的4个案例中,在执行每组行之后将创建4个对象.
我是Java的新手,并且已经阅读了我认为的相互矛盾的陈述.请考虑以下代码.
String str1 = "dave";
String str2 = "dave";
Run Code Online (Sandbox Code Playgroud)
str1和str2虽然是唯一变量,但它们引用完全相同的值.那么,在内存中创建了多少个唯一对象?1或2,可以解释一下为什么?
我们制作以下String对象?
String str1 = new String("ABC");
String str2 = new String("ABC");
String str3 = "ABC";
String str4 = "ABC";
Run Code Online (Sandbox Code Playgroud)
以上两个问题:
system.out.println("valof str1 "+str1 );- 它打印str1为ABC但是当我们比较时if(str1==str2),它会比较字符串对象的参考.jvm如何达到差异?
str1具有不同的充参考str2和str3,但str3与str4具有相同的引用,这样做的JVM检查,如果我们要以平等的运营商(而不是新)已经存在(如果它存在,它不会创建新的对象只是指定相同refernce新变量来建立一个字符串ie str4)但是在新操作员的情况下它不会做这个验证?
public String makinStrings() {
String m = "Fred47";
String s = "Fred";
s = s + "47";
s = s.substring(0);
return s.toString();
}
Run Code Online (Sandbox Code Playgroud)
代码创建了多少个对象?
我做了一个简单的测试:
public static void main(String[] args) {
String m = "a";
m += "bc";
String s1 = "mabc".substring(1);
String s2 = "abc";
System.out.println(m == "abc");
System.out.println(m == s1);
System.out.println(m == s2);
System.out.println(s1 == s2);
}
Run Code Online (Sandbox Code Playgroud)
如果m,s1,s2指向同一个对象("abc"),结果不应该是"真,真,真,真"吗?相反,结果是"假,假,假,假"!
请检查我的代码并回答,告诉我它在java技术中是如何工作的.
String s1 = "roushan8";
String s2 = "roushan"+8;
String s3 = "roushan"+s1.length();
System.out.println(s1==s2);
System.out.println(s2==s3);
System.out.println(s3==s1);
Run Code Online (Sandbox Code Playgroud)
结果是:
true
false
false
Run Code Online (Sandbox Code Playgroud) 我的程序在readLine调用之后被卡住了,if语句不起作用.我究竟做错了什么?#java的第一定时器
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class nums {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Number Mania!!!");
System.out.println("Pick your favourite number from 1 to 5");
String favNum = br.readLine();
if (favNum=="3"){
System.out.println("Your favourite number is three!");
}
else{
System.out.println("hi!");
}
}
}
Run Code Online (Sandbox Code Playgroud)