static private 和 private 都只能由本类的成员函数访问。
区别是 static private 是静态的,静态函数中只能访问该类的静态成员,无法访问非静态成员,而 private 那个函数可以访问该类的静态和非静态成员。
private是访问权限修饰符,用于控制外界对类内部成员的访问,表明对象成员是完全私有的,不容许外界的任何访问。
static是静态成员修饰符,其修饰的静态变量脱离具体对象独立存在,在内存中之后一份拷贝,所有的对象都公用这一个存储空间,所以对static修饰的静态变量进行的修改对该类的所有对象都起作用。static修饰的静态函数代表所有对象的统一操作,只能调用静态变量。static是针对面向对象中的“多态”而提出来的,static修饰的静态成员不存在多态性。
用private来修饰这个users主要是为了避免该类的外部直接用类名.users来操作这个类。
static代码块将会在该类的第一个对象实例化的时候执行,在这里显然就是对users对象进行初始化。
刚刚和同事研究了一下,就来回答回答吧。
首先你的思想上有一个误区,认为static是存放在方法区里面是共享的。
这是不对的,你要去了解一下JVM运行时各个数据区的作用,private、public、protect、default这一类访问权限修饰符才是控制是不是共享的方法的。
实际上你要把private 和 static 分开来理解;
static的作用是JVM初始化的时候的时候把变量加载进来的一个作用,让对象在运行的时候不需要在实例化就可以使用,因为在JVM初始化的时候就已经实例化过了,这才是static的作用。
而private、puiblic、protect这一类的修饰符才是限制使用范围。
理解之后意义就清晰了,意思就是private static只有自己能使用这个jvm启动的时候就加载进来的方法或者变量。
不知道你理解了没。
首先呢 Java方法有四种形态:public private protected default,
这四个形态对应到的呢是不同的使用场景。具体的含义你可以直接百度就可以看到,我就不细说了。然后private定义的是私有的方法,私有的就是说这个方法只能在这个类里面使用,这个是封装的一种体现。用于比较特殊的场景,假如你这个方法涉及到一些比较危险的操作,这个时候就不适合给外面的人来调用了,你可以在这个类里面定义另外一个public的方法或者接口来作为一个入口,在这个提供给别人使用的方法中去按你的规则来调用你这个私有的方法。
static 这个在Java中是全局、静态的意思。private static 表示这个方法或者变量可以在类的静态代码块中,或者类的其他静态成员方法中使用。全局的意思就是static定义的方法或者变量是不需要去实例化这个类的对象就能使用的,直接可以使用类名.方法名或者静态变量名就可以使用。