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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

主函数是静态的,那是不是主函数只能访问静态数据,谁能给我举个例子

4 个回复

倒序浏览
本帖最后由 贾联国 于 2012-5-3 03:53 编辑

只要使用对象就可以调用:

class PersonDemo1
{
        public static void main(String[] args)
        {
                Person per=new Person();
                per.p(); //调用其他类中的非静态方法
                System.out.println(per.name);//调用其他类中的非静态变量
                new PersonDemo1().show(); //调用本类中的非静态方法
                System.out.println(new PersonDemo1().age); //调用本类中的非静态变量
        }
                private int age=3;
        public void show()
        {
                System.out.println("byebye");
        }
}
class Person
{        
        String name="张三";
        public  void p()
        {
    System.out.println("Hello");
    }
}

总结:静态想调用谁的非静态方法或变量,就建立谁的对象,之后便可以调用。
回复 使用道具 举报
class Demo{
                       static int sum=0
     public static void main(String[] args ){
       print();//这行会出现静态成员无法访问非静态成员
      System.out.println(num++);//这行就ok.
}
  void print(){
       int s=9;
       System.out.println(s);
}
}
首先要搞清楚静态和非静态这个问题,其实可以这样说,静态属于类(类成员),是所以对象的共享成员,非静态属于对象(对象成员),他们的生命周期不同,静态时随着类的加载而加载,非静态时随着对象的加载而加载,一旦对象创建才分配存储空间。
回复 使用道具 举报
本帖最后由 依然小马哥 于 2012-5-3 08:40 编辑

对于非静态的方法和变量,需要创建(new出来一个)类的实例对象才可使用。
main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。
class Person
{
       String name;    //动态的,可变的
       int age;      //动态的,可变的
       public static void show(String name,int age)   //1、静态的方法中不允许出现动态成员变量
       {
              this.name = name;  //错误
              this.age = age;  //错误
        }

}

图片5.jpg (12.64 KB, 下载次数: 88)

图片5.jpg
回复 使用道具 举报
哥们主函数是静态的,为什么是静态的?因为是虚拟机在调用,所以必须先加载才行,这就是为什么主函数是静态的。至于你后面的 那句,可以多看看老师讲的视频,就明白的了。要是只能调用静态的方法,那么面对对象就不用学了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马