猿问

初学java,今天写一段代码时遇到了关于判断一个字符串变量的问题,具体代码如下(问题在注释里已说明)

public class HelloWorld {
    public static void main(String[] args) {
        
        String fileName = "HelloWorld.java";


        
        int index = fileName.indexOf('.');
        
        String prefix = fileName.substring(index+1,index+5);        
        System.out.println(prefix);                              //这里输出prefix的值是java     

        if ( prefix=="java" ) {                                      //而if中判断prefix=="java"不成立
            System.out.println("第一次检测Java文件名正确");
        } else {
            System.out.println("第一次检测Java文件名无效");
        }
        
        
        prefix = "java";                                             //给prefix重新赋值java
        System.out.println(prefix);                           //第二次输出prefix值还是java                               
        if ( prefix=="java" ) {                                    //但是if中判断prefix=="java"却成立了???       

System.out.println("第二次Java文件名正确");
        } else {
            System.out.println("第二次Java文件名无效");
        }
    }
}

慕粉18895320593
浏览 1352回答 1
1回答

摩诃迦叶

String是对象,你用==比较的是他们的引用而不是在比较“java”字符串。     prefix = "java" 和 "java" 都是属于一个对象的"java",   String prefix = fileName.substring(index+1,index+5); 是另一个对象的"java"。 所以前一个比较是false,后一个比较是true。  比较字符串你应该用equals方法,prefix.equals("java");
随时随地看视频慕课网APP

相关分类

Java
我要回答