Static
意为:静态的
带有static关键字的调用方法:类名.方法名/变量名;
可以简要理解为:如果一个变量每个对象都不一样,就定义为实例变量;如果每个对象的值都一样,或者说所有对象公用一个变量的话,那么该变量就定义为静态变量。
代码实例与内存图说明:
public class Chinese { // 中国人类
// 身份证号
String idCard;
// 姓名
String name;
// 国籍
String country = "中国";
public Chinese(String idCard, String name) {
this.idCard = idCard;
this.name = name;
}
public void display(){
System.out.println("身份证号:"+this.idCard+",姓名:"+this.name+",国籍:" + this.country);
}
}
public class Chinese { // 中国人类
// 身份证号
String idCard;
// 姓名
String name;
// 国籍
static String country = "中国";
public Chinese(String idCard, String name) {
this.idCard = idCard;
this.name = name;
}
public void display(){
System.out.println("身份证号:"+this.idCard+",姓名:"+this.name+",国籍:" + this.country);//这个this.实质上还是jvm会根据this所属的对象,然后找到对象所在类,实质上还是类
//名.country.
}
}
对上一篇文章遗留问题的解答:如何计算一共创建了几个对象;
题目:已知有一个person类,有名字、年龄、性别这三个属性。要求,每创建一个对象便记录一次次数,最后将创建对象的总数输出。
package com.donglijiedian.javase.oop03;
public class Person {
private String name;
private int age;
private boolean gender;
private static int sum;
public Person(String name, int age, boolean gender) {
sum++;
this.name = name;
this.age = age;
this.gender = gender;
}
public Person() {
sum++;
}
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;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
public static int getSum() {
return sum;
}
public static void setSum(int sum) {
Person.sum = sum;
}
}
public class PersonTest {
public static void main(String[] args) {
Person zhangsan = new Person();
Person wangwu = new Person();
Person zhangsan1 = new Person();
Person zhangsan2 = new Person();
Person zhangsan3 = new Person();
Person zhangsan4 = new Person();
Person lisi = new Person("lisi", 15, false);
System.out.println(Person.getSum());
}
}