在Java中检查字符串值

在Java中检查字符串值,java,string,substring,Java,String,Substring,我想知道字符串的前两个字母是否是“hi”。如果它这样做,它应该返回true,否则它应该返回false。我使用substring来查找给定字符串的值,但是当条件变为true时,它不会返回true。我一定不了解Java,这是我的新手 这是我的密码: class Main { public boolean startHi(String str) { String str1 = str.substring(0,1); String str2 = str.sub

我想知道字符串的前两个字母是否是“hi”。如果它这样做,它应该返回true,否则它应该返回false。我使用substring来查找给定字符串的值,但是当条件变为true时,它不会返回true。我一定不了解Java,这是我的新手

这是我的密码:

class Main {
    public boolean startHi(String str) {


        String str1 = str.substring(0,1);
        String str2 = str.substring(1,2);

        if(str1=="h" && str2=="i"){
            return true;
        }
        if(str!="hi" || str.length()<=2){
            return false;
        }
        else{
            return false;
        }
    }
    public static void main(String[] args) {
        System.out.println(new Main().startHi("hi ho"));
        System.out.println(new Main().startHi("hi"));
        System.out.println(new Main().startHi("howhi"));
    }
}
主类{
公共布尔startHi(字符串str){
字符串str1=str.substring(0,1);
字符串str2=str.substring(1,2);
如果(str1==“h”和&str2==“i”){
返回true;
}
如果(str!=“hi”| | str.length()您可以使用

因此,毕竟您可能不需要自己的
startHi()
方法,但可以使用标准的JavaAPI

因此,毕竟您可能不需要自己的
startHi()
方法,但可以使用标准Java API。

试试这个

 if(str1.equals("h") && str2.equals("i")) //equals use instead of (==) Operator.
而不是

if(str1 =="h"  && str2 == "i")

试试这个

 if(str1.equals("h") && str2.equals("i")) //equals use instead of (==) Operator.
而不是

if(str1 =="h"  && str2 == "i")


它不会返回
true
,因为您必须将字符串与
equals()
方法进行比较

    if("h".equals(str1) && "i".equals(str2)){
        return true;
    }
如果您使用
==
比较对象,它将检查对象是否为同一对象,从而检查对象的内存地址是否相同

string类重写
equals()
方法以检查内容

如果要创建这样的字符串

String s1 = "Hi";
Java将把
“Hi”
放在所谓的字符串文本池中 因此,如果要创建第二个字符串

 String s2 = "Hi"; 
Java不会创建第二个对象,但会引用字符串文本池中的“Hi”

现在您可以比较两个字符串,如
s1==s2
,结果将是
true
因为两个引用
s1
s2
指向同一个对象


但是
substring()
方法所做的是
newstring(“xyz”)
如果您声明这样的字符串,将创建一个新对象,与
=
的比较将返回false,因为两个引用显然不指向同一个对象。

它不会返回
true
,因为您必须使用
equals()
方法比较字符串

    if("h".equals(str1) && "i".equals(str2)){
        return true;
    }
如果您使用
==
比较对象,它将检查对象是否为同一对象,从而检查对象的内存地址是否相同

string类重写
equals()
方法以检查内容

如果要创建这样的字符串

String s1 = "Hi";
Java将把
“Hi”
放在所谓的字符串文本池中 因此,如果要创建第二个字符串

 String s2 = "Hi"; 
Java不会创建第二个对象,但会引用字符串文本池中的“Hi”

现在您可以比较两个字符串,如
s1==s2
,结果将是
true
因为两个引用
s1
s2
指向同一个对象


但是
substring()
方法所做的是
newstring(“xyz”)
如果您声明这样的字符串,将创建一个新对象,与
=
的比较将返回false,因为这两个引用显然不指向同一个对象。

这很有效,谢谢。您不能在Java中仅对字符串使用比较运算符?我编辑了我的答案。希望这对您有所帮助非常感谢。这很有效,谢谢。你不能在Java中只对字符串使用比较运算符,或者?我编辑了我的答案。希望这能对你有所帮助。非常感谢。