相关疑难解决方法(0)

如果==比较Java中的引用,为什么它使用这些字符串评估为true?

正如所述,==运算符比较对象引用以检查它们是否引用堆上的同一对象.如果是这样,我为什么要获得这段代码的"平等"?

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)

java string reference

14
推荐指数
1
解决办法
872
查看次数

对Java字符串使用'=='而不是.equals

可能重复:
什么使参考比较(==)适用于Java中的某些字符串?

我知道之前已经问过,但是尽管建议使用.equals()而不是==比较运算符,我发现它==一直都有效:

String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2); // true
Run Code Online (Sandbox Code Playgroud)

谁能给我一个==操作员失败的例子?

java equals

9
推荐指数
3
解决办法
9821
查看次数

在字符串比较中使用 == 而不是 equals 不会被 Sonar 捕获

我有以下代码:

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)

java sonarqube sonarlint sonarlint-intellij

5
推荐指数
0
解决办法
915
查看次数

使用新运算符创建了多少个对象?

可能重复:
Java字符串:"String s = new String("silly");"

如果我写

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)

java

4
推荐指数
1
解决办法
2791
查看次数

Java字符串池对象创建

我怀疑我的概念在字符串池中是否清晰.请研究以下一组代码,并检查我的答案在以下一组陈述后创建的对象数量是否正确: -

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

4
推荐指数
1
解决办法
629
查看次数

如果我有2个引用类型,具有相同的值,那么这意味着内存中只有1个对象

我是Java的新手,并且已经阅读了我认为的相互矛盾的陈述.请考虑以下代码.

String str1 = "dave";
String str2 = "dave";
Run Code Online (Sandbox Code Playgroud)

str1和str2虽然是唯一变量,但它们引用完全相同的值.那么,在内存中创建了多少个唯一对象?1或2,可以解释一下为什么?

java pointers

4
推荐指数
3
解决办法
1994
查看次数

字符串引用?

我们制作以下String对象?

String str1 = new String("ABC");
String str2 = new String("ABC");
String str3 = "ABC";
String str4 = "ABC";
Run Code Online (Sandbox Code Playgroud)

以上两个问题:

  1. system.out.println("valof str1 "+str1 );- 它打印str1为ABC但是当我们比较时if(str1==str2),它会比较字符串对象的参考.jvm如何达到差异?

  2. str1具有不同的充参考str2str3,但str3str4具有相同的引用,这样做的JVM检查,如果我们要以平等的运营商(而不是新)已经存在(如果它存在,它不会创建新的对象只是指定相同refernce新变量来建立一个字符串ie str4)但是在新操作员的情况下它不会做这个验证?

java string

3
推荐指数
1
解决办法
351
查看次数

Java字符串和StringPool

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

2
推荐指数
1
解决办法
737
查看次数

JAVA和+运算符的字符串类

请检查我的代码并回答,告诉我它在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)

java

2
推荐指数
1
解决办法
91
查看次数

BufferedReader.readLine不起作用

我的程序在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)

java

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