Java-If语句不工作(比较字符串)
当我从打开的套接字获取IP地址时,由于有人向我发送了一个流,我注意到IP有一个正斜杠 我只是打算略去它。但首先我要验证字符串中的第一个字符是正斜杠:Java-If语句不工作(比较字符串),java,string,if-statement,compare,Java,String,If Statement,Compare,当我从打开的套接字获取IP地址时,由于有人向我发送了一个流,我注意到IP有一个正斜杠 我只是打算略去它。但首先我要验证字符串中的第一个字符是正斜杠: String dataSource = data.getAddress().toString(); if(dataSource.substring(0,1) == "/"){ System.out.println("trailing forward slash, delete it "); dataSource = dataS
String dataSource = data.getAddress().toString();
if(dataSource.substring(0,1) == "/"){
System.out.println("trailing forward slash, delete it ");
dataSource = dataSource.substring(1);
}
未检测到此IF语句
有人看到我做错了什么吗?您正在将字符串与
==
进行比较,这意味着您正在检查这两个字符串是否确实是相同的字符串引用
使用equal()
检查两个字符串是否包含相同的字符
请参阅:您应该使用
.equals
进行字符串比较
所以
应该是
if ("/".equals(dataSource.substring(0,1)))
对于字符串比较,请使用
equals
方法,因为它比使用=
运算符更可靠(它在=
复制引用时比较内容):
尝试使用equals
方法:
if(dataSource.substring(0,1).equals("/")){
使用.equals(Object)
或.equalsIgnoreCase(String)
比较字符串。请使用.equals
if("/".equals(dataSource.substring(0,1))){
System.out.println("trailing forward slash, delete it ");
dataSource = dataSource.substring(1);
}
你需要做的不是==而是
dataSource.substring(0,1).equals(“/”)
,它实际上检查字符串的内容<代码>=仅检查两侧是否为同一对象。尝试此操作
if((“要检查的字符串”).equals(myString)){
doSomething();
}如果您只想测试第一个字符,您可以尝试该方法
dataSource.charAt(0)='/'在比较值时始终使用
equals
。已经说过,您可以根据自己的目的使用indexOf
方法
if (dataSource.indexOf('/') == 0) {
dataSource = dataSource.substring(1);
}
运行这个程序。这起作用了。为什么要使用字符串?你只是在给自己制造这个问题。使用提供的数据类型:
InetAddress dataSource = data.getInetAddress();
或
然后在这两种情况下都有一个语义感知的
.equals()
方法。使用.equals
来比较内容<代码>=始终按引用进行比较。@nHahdh这是真的。然而,他显然是一个初学者(没有冒犯),没有理由为此而贬低他。我用一个向上的投票来反驳。合法的问题,是的,但不是一个愚蠢的问题,而且措辞正确。@Sean F是的,他正在努力。我以前也遇到过类似的事情,看看比较引用和原始数据类型(Srinivas B有一个很好的观点)。在您了解了这一点之后,请看一下字符串对象池和实习,只是让您自己有点困惑!;)
String dataSource = "/hell";
if(dataSource.substring(0,1).equalsIgnoreCase("/")){
System.out.println("trailing forward slash, delete it ");
dataSource = dataSource.substring(1);
}
InetAddress dataSource = data.getInetAddress();
SocketAddress dataSource = data.getRemoteSocketAddress();