静态变量基础

来源:互联网 发布:查看linux用户密码 编辑:程序博客网 时间:2024/06/02 03:41

static优先于对象存在,因为static的成员随着类的加载就已经存在了。

静态代码块:随着类的加载而执行,优先级最高

 

内存分为堆内存(存放new出来的对象),栈内存(存放局部变量),数据区(存放静态变量和字符串常量),代码区(存放JAVA中方法的代码)。

 

37.在静态方法里面不能调用动态的方法  在类的构造方法里面可以this调用方法,可以省略this

 

main方法是静态方法,
静态方法是不能调用非静态方法。
因为静态方法是提前加载的。这个时候可能非静态方法根本就还没加载。所以,是不允许在静态方法里面调用非静态方法的。(静态方法变量优先与对象加载)                     

可以在静态方法中,获得非静态方法所在的类的对象实例(new一个对象)。

在静态方法中,用这个实例去调用非静态方法。


静态的是共享的(类名,对象名都可以调用) 非静态的是特有的,静态方法不再是针对于某个对象调用,所以不能访问非静态的成员

局部变量不能是静态的,全局变量可以是静态的(在外面定义)

局部变量前不能放置任何访问修饰符 (private,public,和protected)。

 

静态方法变量,不能使用this,super  (静态变量优先于对象加载)


类有2种访问控制权限: 公有的(可被所有类共享) 缺省的(可被当前包中的类访问)

类中成员有4种访问控制权限:

私有成员(private):该成员仅能被当前类的成员访问。

没有修饰符表示缺省权限(当前包可见):说明该成员能被当前类以及包中的其他类所访问,称在当前包可见

protected声明保护成员:该成员能被当前类及其子类、或当前包中的其他类访问,称在子类中可见

public声明公有成员:该成员可被所有类访问

(在一个java文件里面不能写两个public的class  只能写一个  mian函数只能写在public的class文件里)




import java.util.ArrayList;import java.util.List;public class bb{    public TTT tt;    //    public bb bb1 ;        public void getname(bb bb1)    {        bb1.setTt(tt);    }        public TTT getTt()    {        return tt;    }        public void setTt(TTT tt)    {        this.tt = tt;    }        public static void main(String[] args)    {        //  System.out.println(thi);      //静态方法不再是针对于某个对象调用,静态变量属于类,所以不能访问非静态成员(super,this代表当前对象)      //静态变量优先于对象存在        // bb1.       // System.out.println(super.getClass().getName());        bb bb2 = new bb();        bb2.getname(bb2);       System.out.println(bb2.getClass());         TTT tt = new TTT();        String str[] = {};        String s[] = new String[0];        System.out.println(new String[0]);    }    }



0 0
原创粉丝点击