编译时的简单Java错误代码

时间:2011-11-16 15:17:06

标签: java

我正在尝试运行以下代码。它给了我错误

  

对于参数类型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();

        }

}

6 个答案:

答案 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()的来电置于其中