静态变量
实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。 2.静态变量是包含此变量的类一旦被编译就分配了空间且之后地址不变,而实例变量在类实例化之后才分配空间,每实例化一次他就分配一次空间,所以静态变量不需要类实例化就可以用,而实例变量不可以。
package dds;
class player{
static int playgame;//static 创建的静态变量所有类的对象共享
String nane;
public player(String n) {
nane=n;
playgame++;
}
}
public class jingtai {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(player.playgame);//(输出:0)
player p=new player("momo");
System.out.println(p.nane);//(输出:momo)
System.out.println(player.playgame);//静态变量直接通过类名访问无需创建对象(输出:1)
System.out.println(p.playgame);//使用对象名来访问静态变量(输出:1)
p.playgame=5;
System.out.println(player.playgame);//使用对象名来修改静态变量(输出:5)
}
}
注释:如果没有给静态变量赋值,它就会被设定为默认值,int会被设定为0,静态变量的默认值会是该类型的默认值,就像实例变量所被赋予的默认值一样。
静态变量的final变量是常数,它一旦被初始化后就不会变动,例如:
public static final double PI=3.14; 常数变量的名称应该都是大写字母。
package dds;
class Dod{
public static final int D=34;
//final变量初始化
}
//the another
class Cat{
public static final int S;
static {
S=34;
}
}
public class zhuxue {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat c=new Cat();
System.out.print(c.S);
}
}
两者之间任何一种即可,如果没有初始化则是万万不行的。
final的变量代表你不能改变它的值;
final的method代表你不能覆盖掉该method;
final的类代表你不能继承该类(也就是创建它的子类)。
//非静态final的变量
class Foof{
final int size=8;
final int heiht;
Foof(){
heiht=34;
}
void domore() {
final int y=0;
}
}
//final的方法
class summer{
//绝对不能被覆盖掉
final void proof() {
}
}
//final的class
final class stable{
//不能被继承哦
}
public class haveperemter {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}