13static关键字(java)
2021-06-28 08:04
标签:new t 类变量 override java 有一个 name 类的方法 情况下 setname static成员变量: Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量。静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。对静态变量的引用有两种方式,分别是“类.静态变量"和”对象.静态变量" 实例变量属于对象,只有对象被创建后,实例变量才会被分配内存空间,才能被使用,它在内存中存在多个复制,只有用“对象.实例变量”的方式来引用。 多个复制:从最开始加载(存在方法区),别实例化(存在堆中),被调用(存在栈中) static成员方法: Java中提供了static方法和非static方法。static方法是类的方法,不需要创建对象就可以被调用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用 static方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和成员方法,因为当static方法被调用时,这个类的对象可能还没被创建,即使已经被创建了,也无法确定调用哪个对象的方法。同理,static方法也不能访问非static类型的变量 静态与非静态的区别: 非静态成员变量又称为实例变量。 静态成员变量又称为类变量。 非静态成员变量,随着对象的创建而存在,随着对象的消失而消失。 静态成员变量,随着类的加载而存在,随着类的消失而消失。 非静态变量存在于对象堆内存中。 静态变量存在于方法区中。 非静态变量只能被对象所调用。 静态变量可以被类名调用,也可以被对象调用。 ///////////////////// public class Chinese { } ///////////////////// public class TestChinese { public static void main(String[] args) { System.out.println(c1); /////////////////////////////// public class TestStatic { } public static void main(String[] args) { TestStatic.name = ""; TestStatic t = new TestStatic(); 13static关键字(java) 标签:new t 类变量 override java 有一个 name 类的方法 情况下 setname 原文地址:https://www.cnblogs.com/Mrchengs/p/9649616.html
private static String country;
private String name;
private int age;
public Chinese(String country, String name, int age) {
super();
this.country = country;
this.name = name;
this.age = age;
}
public Chinese() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Chinese [country=" + country + ", name=" + name + ", age=" + age + "]";
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
Chinese c1 = new Chinese("唐", "小明", 12);
System.out.println(c1);
Chinese c2 = new Chinese("唐", "小明", 12);
System.out.println(c2);
}
}
//1.static 是一个关键字,用于修饰类成员(属性,方法,内部类)
//2.若访问权限允许的情况下,可以通过类名 . 的情况来访问,可以不创建对象
//3.static修饰的成员为类成员,为所有实例共享
//4.static方法内部只能访问类的static属性,不能访问非static属性
//5。因为不需要实例化就可以访问static属性和方法,因此不能用this在static内部
//6.静态代码块在初始化时执行一次,只执行一次
static String name;
int age;
static void test(){
//static修饰的内部类不能访问非static属性
//age = 1;//报错
name = "qwe";
}
static{
System.out.println("静态代码块");
}
void method(){
//可以访问非static和非static修饰的属性
age = 12;
name = "qwe";
//有无对象都可以直接访问static修饰的对象
TestStatic.test();
t.age = 12;
t.name = "qwe";
t.method();
System.out.println(t.name);
TestStatic t1 = new TestStatic();
//通过t的实例对象不许呀再次赋值
System.out.println(t1.name);
}
}
上一篇:python 术语