黑马程序员技术交流社区

标题: 错在哪了? [打印本页]

作者: 杨雯雯    时间: 2012-12-23 19:12
标题: 错在哪了?
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println(“s.doSomething() returns ” + doSomething());
}
public String doSomething() {
return “Do something …”;
}
}
哪里错了呢?

作者: 高会仁    时间: 2012-12-23 19:22
public String doSomething() {
return “Do something …”;
}
这个方法应该定义为静态方法,String前面加上static,
因为mian()方法是静态的,所以在主函数中直接调用的方法应该是静态方法
作者: 焦健    时间: 2012-12-23 19:29
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println(“s.doSomething() returns ” + doSomething());//这行引号你用的好像是中文输入法的引号,
}
public String doSomething() {
return “Do something …”;//这里的引号也不对。
}
}
在调用doSomething的时候如果是想静态调用需要把doSomething方法前面加上static进行修饰。
如果你说想通过对象调用就要加上类名.doSomething。下面上代码
class Something {
public static void main(String[] args) {
                Something s = new Something();
                System.out.println("s.doSomething() returns " + s.doSomething());
                }
        public String doSomething() {
                return "Do something …";
        }
}


作者: 彭宾    时间: 2012-12-23 19:32
。。。。。。。。。。
作者: 谢辉林    时间: 2012-12-23 19:36
本帖最后由 laughing 于 2012-12-23 19:40 编辑

首先你的引号是在中文状态下输入的中文引号,应该是在英文状态下的,其次是因为main()函数是静态的,所以无法访问非静态的方法,应该用static修饰doSomething() 方法,当然也可以通过对象调用即s.doSomething() ;
作者: 王瀛    时间: 2012-12-23 20:34
1.代码中的几处引号,应该用英文输入模式下的引号;
2.主函数main被static修饰,所以被主函数直接调用的方法(函数)应该也被static修饰;
3.如果不想在doSomething()方法前加static修饰,那么可以通过对象调用s.doSomething();
附代码A:
  1. /*
  2. 此方法对应上述第2条,将doSomething()方法用static修饰。
  3. */
  4. public class Something {
  5.         public static void main(String[] args) {
  6.                 Something s = new Something();
  7.                 System.out.println("s.doSomething() returns" + doSomething());
  8.         }
  9.         public static String doSomething() {//使用static修饰
  10.                 return "Do something …";
  11.         }
  12. }
复制代码
代码B:
  1. /*
  2. 此方法对应上述第3条,使用对象调用。
  3. */
  4. public class Something {
  5.         public static void main(String[] args) {
  6.                 Something s = new Something();
  7.                 System.out.println("s.doSomething() returns" + s.doSomething());//使用s.doSomething()
  8.         }
  9.         public String doSomething() {
  10.                 return "Do something …";
  11.         }
  12. }
复制代码

作者: 张综    时间: 2012-12-23 22:37
静态方法不能调用非静态方法。主函数也可以说成是主方法。因为它是静态的。所以他直接调用的方法必须是静态的。或者你可以用你创建的对象引用s去调用这个doSomething()方法;
作者: 张占忠    时间: 2012-12-23 23:05
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println(“s.doSomething() returns ” + doSomething());
}
public String doSomething() {
return “Do something …”;
}
}


好吧,我只想说,一句话,在同一个类中,调用其他方法,直接用this, 没有必要创建对象!
举个例子,
小明,有刀子, 有苹果!
现在他想吃苹果了! 他是不是。
自己拿来吃就可以了!
难道还要,自己对自己说,小明我想吃苹果了!
然后他再去拿!{:soso_e120:}
作者: 张占忠    时间: 2012-12-23 23:12
当然了,主函数由于是静态的,无法使用this 但是还有其他简单的办法就是!
public class Something {
public static void main(String[] args) {
System.out.println(“s.doSomething() returns ” + doSomething());
}
public static String doSomething() {
return “Do something …”;
}
}
把方法换成静态的, 这样就直接可以用类名调用了! 什么都省了!{:soso_e120:}


作者: 张占忠    时间: 2012-12-23 23:14
张占忠 发表于 2012-12-23 23:12
当然了,主函数由于是静态的,无法使用this 但是还有其他简单的办法就是!
public class Something {
publi ...

直接用方法名,调用,说错了抱歉!
作者: 郑广昌    时间: 2012-12-24 00:18
学习学习
作者: 黄锦成    时间: 2012-12-24 08:53
调用doSomething方法时,要用Something类的对象类来调用。静态方法不可以直接调用非方法方法。
作者: 张会文    时间: 2012-12-29 22:10
两种解决方案
1、将doSomething方法修改为静态,因为在加载类后,实例化对象前就执行了该方法,可以直接调用
2、在main方法中调用doSomething方法的时候加上实例化的对象,因为非静态方法是在对象调用的时候才执行的,所以要加上对象,应该修改为System.out.println(“s.doSomething() returns ” + s.doSomething());





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2