A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨雯雯 中级黑马   /  2012-12-23 19:12  /  2324 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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 …”;
}
}
哪里错了呢?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

12 个回复

正序浏览
两种解决方案
1、将doSomething方法修改为静态,因为在加载类后,实例化对象前就执行了该方法,可以直接调用
2、在main方法中调用doSomething方法的时候加上实例化的对象,因为非静态方法是在对象调用的时候才执行的,所以要加上对象,应该修改为System.out.println(“s.doSomething() returns ” + s.doSomething());

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
调用doSomething方法时,要用Something类的对象类来调用。静态方法不可以直接调用非方法方法。
回复 使用道具 举报
学习学习
回复 使用道具 举报
张占忠 发表于 2012-12-23 23:12
当然了,主函数由于是静态的,无法使用this 但是还有其他简单的办法就是!
public class Something {
publi ...

直接用方法名,调用,说错了抱歉!
回复 使用道具 举报
当然了,主函数由于是静态的,无法使用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:}

回复 使用道具 举报
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:}

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 你好像总是喜欢举例子,不错

查看全部评分

回复 使用道具 举报
张综 中级黑马 2012-12-23 22:37:38
7#
静态方法不能调用非静态方法。主函数也可以说成是主方法。因为它是静态的。所以他直接调用的方法必须是静态的。或者你可以用你创建的对象引用s去调用这个doSomething()方法;

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
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. }
复制代码
回复 使用道具 举报
本帖最后由 laughing 于 2012-12-23 19:40 编辑

首先你的引号是在中文状态下输入的中文引号,应该是在英文状态下的,其次是因为main()函数是静态的,所以无法访问非静态的方法,应该用static修饰doSomething() 方法,当然也可以通过对象调用即s.doSomething() ;

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
。。。。。。。。。。
回复 使用道具 举报
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 …";
        }
}

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
public String doSomething() {
return “Do something …”;
}
这个方法应该定义为静态方法,String前面加上static,
因为mian()方法是静态的,所以在主函数中直接调用的方法应该是静态方法

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马