在Java中检查字符串值
我想知道字符串的前两个字母是否是“hi”。如果它这样做,它应该返回true,否则它应该返回false。我使用substring来查找给定字符串的值,但是当条件变为true时,它不会返回true。我一定不了解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
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中只对字符串使用比较运算符,或者?我编辑了我的答案。希望这能对你有所帮助。非常感谢。