㈠ java中静态变量和静态方法分别有什么特
静态变量
可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象。
静态变量有两种情况:
静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用
静态变量是一个引用。这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它。因此如果要把一个引用定义成static的,就必须在定义的时候就对其对象进行初始化。
静态方法
与类变量不同,方法(静态方法与实例方法)在内存中只有一份,无论该类有多少个实例,都共用一个方法。
静态方法与实例方法的不同主要有:
静态方法可以直接使用,而实例方法必须在类实例化之后通过对象来调用。
在外部调用静态方法时,可以使用“类名.方法名”或者“对象名.方法名”的形式。实例方法只能使用后面这种方式。
静态方法只允许访问静态成员。而实例方法中可以访问静态成员和实例成员。
静态方法中不能使用this(因为this是与实例相关的)。
㈡ java 静态变量和静态常量
静态变量是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。
对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。
而在以Pascal为代表的许多程序语言中,所有局部变量都由系统自动分配存储空间,而所有全局变量的存储空间则以静态分配的方式获取,因此由于实际上“局部变量”和“全局变量”这两个术语已足以涵盖所有的情况,在这些程序语言中通常不使用“静态变量”这一术语,而直接以“全局变量”代之。
在这些程序语言中,静态变量就是全局变量,而即使在有明确区分全局和静态变量的程序语言中,在编译后的代码里二者也以相同的方式获取存储空间。而今术语“静态变量”的概念则主要基于C族语言的“static”的定义。
静态变量也可以用于存储常数。具体来说,静态变量可用const,constant或final等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区
㈢ java静态类变量问题
在构造子类对象的时候会调用父类的无参构造函数..
因此
ch1=new Child();时会调用父类的的无参构造函数
public Parent() {
counter++;
this.id=counter;
this.name="Unknow";
}
counter进行了加一操作变成了1
ch2=new Child(ch1);时先调用父类无参构造函数
counter又进行了一次加一操作变成了2
然后执行Child(child ch)构造函数本身的内容.
public Child(Child ch) {
counter++;
this.id=counter;
}
此时counter再次加一就成了为3..此时的ch2的id被赋予当前counter的值即3
因此结果是
there're 3 Person
ch2.id=3
㈣ java中为什么每个类都有静态变量class
Java所有的类(自定义和已定义的)都继承了Object类
也就是说Object类是所有类的基类(父类)
Object类中定义了这个静态变量;其子类也继承了这个静态变量
所有的类都能通过.class得到类名信息
㈤ java中成员变量和静态变量的区别是什么
JAVA成员变量和静态变量的区别:
1,成员变量所属于对象。所以也称为实例变量。
静态变量所属于类。所以也称为类变量。
2,成员变量存在于堆内存中。
静态变量存在于方法区中。
3,成员变量随着对象创建而存在。随着对象被回收而消失。
静态变量随着类的加载而存在。随着类的消失而消失。
4,成员变量只能被对象所调用
。
静态变量可以被对象调用,也可以被类名调用。
所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。
㈥ java 类变量 静态变量
publicclassDemo
{
privateinta;//实例变量
privatestaticinta;//静态变量(也叫类变量)
publicvoidfun1(){
//这个是实例方法
}
publicvoidstaticfun2(){
//这个是静态方法(类方法)
}
}
publicstaticvoidmain(String[]args){
//这里调用实例方法
Demodemo=newDemo();
demo.fun1();
//这里调用静态方法
Demo.fun2();
}
㈦ 在java语言中,静态变量和普通变量有什么区别
静态变量是从属于类的,在java虚拟机加载的时候就会在内存中加载这个变量,可以用类直接调用。
而普通的变量是从属于对象的,只有用对象来使用