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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 来明坤 中级黑马   /  2012-8-30 00:23  /  2176 人查看  /  6 人回复  /   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 ...";
    }
}

6 个回复

倒序浏览
public 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 ...";
     }
}
有错,红色是修改过的地方。
回复 使用道具 举报
首先把 主函数是静态的 肯定不能直接去访问非静态的方法的
你把doSomething() 前面加个static
回复 使用道具 举报
  1. class Something {
  2. public static void main(String[] args) {
  3. Something s = new Something();
  4. System.out.println("s.doSomething() returns " + s.doSomething());//doSomething()改为s.doSomething();
  5. }
  6. public String doSomething() {
  7. return "Do something ...";
  8. }
  9. }
复制代码
否则会报错。估计你忘写了......
因为doSomething()不是静态的,不能直接被主函数(静态的)调用,可以通过对象调用,s.doSomething().
回复 使用道具 举报
肯定是有错的!当你在静态方法中调用其他方法时,其他方法必须定义为静态的。你在调用doSomething()时,必须把该方法定义为public static String doSomething()
修改的代码如下:
//当创建对象时如下:
public class Something {
      public static void main(String[] args) {
         Something s = new Something();//这句话可要可不要,因为在同一个类中可以直接进行调用
                        //当用对象进行调用时,格式必须是  对象.方法名
         System.out.println("s.doSomething() returns " + s.doSomething());
     }
      public static String doSomething() {
         return "Do something ...";
     }
}
//不创建对象时如下:
ublic class Something {
      public static void main(String[] args) {
         
         System.out.println("s.doSomething() returns " + doSomething());
     }
      public static String doSomething() {
         return "Do something ...";
     }
}
回复 使用道具 举报
  1. package com.itheima.test;
  2. public class Something {
  3.      public static void main(String[] args) {
  4.         Something s = new Something();
  5.         System.out.println("s.doSomething() returns " + s.doSomething());
  6.     }
  7.      public String doSomething() {
  8.         return "Do something ...";
  9.     }
  10. }
复制代码
学习标记。
回复 使用道具 举报
陈莹 中级黑马 2012-8-30 15:56:46
7#
你的程序的错误提示是无法从静态上下文中引用非静态方法 doSomething(),因为你的主函数是静态的,静态函数只能使用静态成员,所以你得将doSomething函数修饰为static类型的,这样你也没必要定义一个Something对象了,浪费内存。
这样代码可以改为:
public class Something {
     public static void main(String[] args) {
               System.out.println("s.doSomething() returns " + doSomething());
    }
     public static String doSomething() {
        return "Do something ...";
    }
}

如果不想将doSomething函数定义为静态的,你可以通过对象调用该方法,代码如下:
public 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 ...";
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马