1. static 키워드는 멤버 변수를 수정합니다.
멤버 변수가 static 키워드를 사용하면이 변수는 더 이상 객체에 속하지 않고 해당 객체가 속한 클래스에 속하며 여러 객체가 동일한 데이터를 공유합니다.
엔터티 클래스에 카운터 구현
public class Student {
private Integer stuId;//id,每次new一个实现自增长
private String stuName;
private static int idCounter = 0;//计数器,多个对象共享同一份数据
public Student() {
this.stuId = ++idCounter;//每次调用构造方法,实现+1
}
public Student(String stuName) {
this.stuId = ++idCounter;//每次调用构造方法,实现+1
this.stuName = stuName;
}
public static int getIdCounter() {
return idCounter;
}
public static void setIdCounter(int idCounter) {
Student.idCounter = idCounter;
}
public Integer getStuId() {
return stuId;
}
public void setStuId(Integer stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
@Override
public String toString() {
return "Student{" +
"stuId=" + stuId +
", stuName='" + stuName + '\'' +
'}';
}
}
테스트 코드
둘째, 정적 키워드 수정 멤버 방법
static 키워드는 멤버 메소드를 수정 한 후 정적 메소드가되며, 정적 메소드는 객체에 속하지 않고 클래스에 속합니다.
정적 수정 방법이 없으며 사용하기 전에 개체를 만들어야합니다.
1. 정적 메서드, 클래스 이름으로 직접 호출
2.이 클래스의 정적 메서드는 클래스 이름을 생략 할 수 있습니다.
정적은 비 정적
메모리에 직접 액세스 할 수 없습니다 . 첫째, 정적 콘텐츠가 있고 비 정적 콘텐츠가 있습니다.
정적 메서드는이를 사용할 수 없습니다 (현재 객체가 누구에 의해 호출되는지 현재 객체를 나타냄).
암호:
public class MyClass {
int num ;
static int numStatic;
public void method(){
System.out.println("普通的成员方法");
System.out.println(num);//成员方法可以访问成员变量
System.out.println(numStatic);//成员方法可以访问静态变量
}
public static void staticMethod(){
System.out.println("这是一个静态方法");
// System.out.println(num); 静态方法不能直接访问成员变量
System.out.println(numStatic);
}
}
public class StaticMethod {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.method();//通过对象调用成员方法
MyClass.staticMethod();//通过类名调用
staticMethod();
}
public static void staticMethod(){
System.out.println("本类中的静态方法");
}
}
세, 정적 코드 블록
이 클래스를 처음 사용하면 정적 코드 블록이 한 번만 실행되고 정적 콘텐츠가 항상 비 정적보다 우선하므로 정적 코드 블록이 생성 메서드보다 먼저 실행됩니다.
한 번에 정적 멤버 변수에 값을 할당하는 데 사용됩니다.
public class Person {
static {
System.out.println("静态代码块");
}
public Person(){
System.out.println("构造方法执行");
}
}