我正在尝试运行以下代码。它给了我错误
对于参数类型String,void
,运算符+未定义
public class CompStrings{
String s1=null;
String s2=null;
public void testMethod(){
s1 = new String("Hello");
s2 = new String("Hello");
String str3="abc";
String str4 ="abc";
/**
* ==
*/
if(str3==str4){
System.out.println("str3==str4 is true");
}else{
System.out.println("str3==str4 is false");
}
if(str3.equals(str4)){
System.out.println("str1.equals(str2) is true");
}else{
System.out.println("str1.equals(str2) is false");
}
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s1 + " equals " + s2 + " -> " +
s1.equals(s2));
System.out.println(s1 + " == " + s2 + " -> " + (s1 == s2));
/*Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
System.out.println(i1.hashCode());
System.out.println(i2.hashCode());
1)String s1="hello";
String s2="hello";
2)String s1 = new String("Hello");
String s2 = new String("Hello");
3)String s1="hello";
string s2=s1;
**/
}
public static void main(String argv[]){
CompStrings obj= new CompStrings();
// \System.out.println("Calling My Method"+ obj.testMethod());
System.out.println("Hashcode for emp1 = " + obj.testMethod());// Here it gives Error
}
public boolean equals(Object o){
String s = (String) o;
if (s1.equals(s) ){
return true;
}else{
return false;
}
}
public int hashCode(){
return s1.hashCode();
}
}
答案 0 :(得分:4)
testMethod()
显然不会返回任何内容,这就是无法打印的原因。
答案 1 :(得分:3)
testMethod()
不会返回任何内容 - 那么当您尝试将表达式testMethod()
的值用于任何原因时,您会期望结果是什么? (在这种情况下,您恰好在字符串连接中使用它,但您无法将其分配给变量,将其作为参数传递等。)
听起来,确实希望它返回哈希码,给定System.out.println
调用的其余部分。可替换地:
System.out.println("Calling testMethod");
obj.testMethod();
System.out.println("testMethod finished");
答案 2 :(得分:1)
您的testMethod()
没有返回类型,如果您希望以这种方式使用它,它必须返回String或其他Object。我说Object是因为Java中的所有对象都继承自Object,因此将有一个toString()实现。
答案 3 :(得分:1)
你的obj.testMethod()
什么都不返回(void
)...所以你不能用字符串连接它。
请改为尝试:
System.out.println("Hashcode for emp1 = ");
obj.testMethod();
答案 4 :(得分:0)
首先,像那样写
会更干净String s1 =“Hello”; String s2 =“Hello”;
但问题是testMethod()没有返回字符串....它什么都不返回!
答案 5 :(得分:0)
testMethod()
应该返回String
而不是void
。
或者,不要将来自testMethod()
System.out.println()
的来电置于其中