Ⅰ java中静态变量成员有什么特点简单点说 初学者
1.特点一:静态变量的值是共享。比如说A类中有个静态变量V_A,A类创建了两个实例a,b。如果给实例a的变量V_A赋值,如a.V_A=1。那么这时候查看实例b的V_A变量的值也为1,也就是说A对象实例化的两个类共享同一个变量值,而且静态变量
2.特点二:不需要对象实例化就可以使用。比如A类中的静态变量V_A可以用A.V_A的形式使用
Ⅱ java中的静态成员是否是在类加载的时候就被加载到内存中了
对,首先可以肯定的是你的说法是正确的。
类加载的过程有以下几个过程:加载、验证、准备、解析
在准备的过程中,静态成员变量就会进行内存分配,而不包括实例变量,实例变量是在对象实例化随着对象一起分配在java堆中的。但是要注意一点,比如:public static int a=1;那变量在准备阶段过后的初始值是0而不是1.因为这个时候尚未执行任何的Java方法。而是赋值了一个初始值,如果是引用成员变量就会为null,其他基本类型对应的是其基本默认值。
ps:以上资料来自《深入Jvm虚拟机》
Ⅲ 静态数据成员在Java当中称作什么
类成员。变量称为类变量、静态变量。方法称为类方法、静态方法。块被成为类块、静态块。
特点是类无需实例化,就可使用。初始化过程中,处于实例成员之前。并且在继承后,并使用多态的情况下,不会被覆盖,只能被遮蔽。
Ⅳ Java中静态成员和实例成员的区别,及main函数
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。特殊的就是一个类的main方法,都是以public static void限制的,所以这个方法可以在其他类中直接以类名进行调用,如可以在类B中不创建A的对象而直接调用A的main方法:A.main(param)
静态方法在访问本类的成员(一定要注意,是本类的成员,当访问外类的成员的时候就完全没有这个限制了!!!其实想想也对,如果访问外类成员的时候也要有限制,那么main函数就无法执行外类的一些非静态方法了,那么当继承过来的时候就完全没有了用处了。)时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
Main函数:每个书写class的java文件中至多能有一个用来运行的main方法(如果需要运行的话就要有main方法),以上所述,所有的类必须存在于一个包中,方法必须存在于一个类中(main方法也是一种特殊的方法)。每个包里面可以有n个Java文件,所以,每个包中可以有数个main方法(函数)。
Ⅳ java中静态内部类是怎么定义的
需要了解2个概念:内部类和静态修饰符static
1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用
外部类名+内部类名
获得。
以下举例说明怎么使用:
Student类有个叫School的内部类(非静态)
Student
stu
=
new
Student();
stu.School
sch
=
new
stu.School();
sch就是School的一个对象。
假如School是内部静态类:
Student.School
sch
=
new
Student.School();
Ⅵ java 为什么实例对象可以访问类的静态成员。
按初始化的先后顺序来考虑即可明白。
类的静态成员不需要有实例对象,在类加载的时候,就可被初始化了。
类的静态成员的初始化,是比类的实例对象要提前完成的,所以实例对象可以访问类的静态成员。
Ⅶ 请教一个java问题,同一个类被实例化成若干个线程,它们的静态成员变量和非静态的内存地址是一样的吗
静态成员变量地址:一样。因为静态成员变量在类装载入内存时,进行初始化+赋值。所以有且只有一份,所以地址是一样的。
非静态成员变量地址:不一样。new一次,分配一次内存,所以不一样
Ⅷ JAVA里的静态成员是什么
是类和类的多个对象共同拥有的一个属性或者是方法,静态成员可以通过类名.静态成员名或者是对象名.静态成员名调用,需要注意的是,如果你定义了一个静态成员public static int A = 10,类调用了这个静态成员并且将10改成了20,那么其它的对象再调用这个A此时他们得到的值就是20,因为他们和类共同拥有一个静态成员。
Ⅸ java中私有的属性、静态成员可以被子类继承吗
静态成员分为静态属性和静态方法,而静态成员是不可以被继承的,因为静态成员是依附于类存在的,它属于类;静态方法在被子类“继承”(实际可以理解为声明了一个跟父类同名的静态方法)后,如果子类将该方法进行了重写,在实例化对象时,如果是子类对象则调用的是子类中该方法的实现方式,如果是父类对象则调用父类中该方法的实现方式。是一种对父类中静态方法的隐藏,但是父类的静态方法一直存在,不会像非静态方法那样,一但发生子类将父类方法重写,不管是子类对象还是父类对象调用该方法都是子类的实现方式;
另一方面,如果子类中静态方法是继承自父类的话,应该是可以用重写@Override进行标记重写的,但在java中不允许在子类中与父类同名同参的静态成员前使用该注解,这也说明了子类中的静态方法不是继承自父类,而是一种声明;
另外所有父类中的非静态成员都可以被子类继承,private等成员访问控制符,只限定子类是否可以调用该成员,不限定是否可以被继承