无法得到预期的输出,我应该得到真实,但在执行时,我变得虚假?

时间:2015-12-11 06:28:46

标签: java string

当我运行HelloWorld java代码时,我变得虚假而不是变为真,不知道我哪里做错了?谢谢...

public class HelloWorld{
public static void main(String []args){
boolean b=mixStart("kixten");
System.out.println(b);
}
public static boolean mixStart(String str) {
String a="ix";
if(str.substring(1,3)==a){
System.out.println("true");
return true;
}
else{  
System.out.println("false");
return false;
}
}

2 个答案:

答案 0 :(得分:0)

您只需更改代码,

if(str.substring(1,3).equals(a)){...}

你做错了是,

  

您已使用'=='赋值运算符

     

它不是比较内容(这里,字符串)而不是它,它比较   两个比较字符串之间的内存位置。

     

很明显是假的,因为它有可能吗?那两个   不同的字符串指的是相同的内存位置。

     

所以这就是'=='关系运营商所做的一切。

     

如果你使用'equals(..)'那么它是比较字符串不同   存储器位置(==)。

答案 1 :(得分:0)

你应该使用。

str.substring(1,3).matches(a)

而不是

str.substring(1,3) == a

喜欢这个。

public static void main(String[] args) {
    boolean b = mixStart("kixten");
    System.out.println(b);
}

public static boolean mixStart(String str) {
    String a = "ix";
    if (str.substring(1, 3).matches(a)) {
        System.out.println("true");
        return true;
    } else {
        System.out.println("false");
        return false;
    }
}