一.static
用来修饰的成员变量和成员方法
被修饰的成员是属于类,而不是单单是属 于某个对象的。
既然属于类,就可以不靠创建对象来调用了
1.1 定义和使用
1.1.1.类变量
修饰的成员变量static 数据类型 变量名;
public class Student {
private String name;
private int age;
// 学生的id
private int sid;
// 类变量,记录学生数量,分配学号
public static int numberOfStudent = 0;
public Student(String name, int age){
this.name = name;
this.age = age;
// 通过 numberOfStudent 给学生分配学号
this.sid = ++numberOfStudent;
}
// 打印属性值
public void show() {
System.out.println("Student : name=" + name + ", age=" + age + ", sid=" + sid );
}
}
public class StuDemo {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
Student s2 = new Student("李四", 24);
Student s3 = new Student("王五", 25);
Student s4 = new Student("赵六", 26);
s1.show(); // Student : name=张三, age=23, sid=1
s2.show(); // Student : name=李四, age=24, sid=2
s3.show(); // Student : name=王五, age=25, sid=3
s4.show(); // Student : name=赵六, age=26, sid=4
}
}
1.1.2.静态方法
静态方法在声明中有 static ,建议使用类名来调用,而不需要创建类的对象。修饰符 static 返回值类型 方法名 (参数列表){
// 执行语句
}
public static void showNum() {
System.out.println("num:" + numberOfStudent);
}
静态方法调用的注意事项:
静态方法可以直接访问静态变量和静态方法。
静态方法不能直接访问普通成员变量或成员方法。
反之,成员方法可以直接访问静态变量或静态方法。
静态方法中,不能使用this关键字。静态方法只能访问静态成员。
1.1.3.调用格式
访问类变量类名.类变量名;
调用静态方法类名.静态方法名(参数);
public class StuDemo2 {
public static void main(String[] args) {
// 访问类变量
System.out.println(Student.numberOfStudent);
// 调用静态方法
Student.showNum();
}
}
static 修饰的内容
:
随着类的加载而加载的,且只加载一次。
存储于一块固定的内存区域(静态区),可以直接被类名调用。
它优先于对象存在,可以被所有对象共享。
二. super、this
访问的成员
this.成员变量 ‐‐ 本类的
super.成员变量 ‐‐ 父类的
this.成员方法名() ‐‐ 本类的
super.成员方法名() ‐‐ 父类的
三. final
不可改变。可以用于修饰类、方法和变量。(相当于太监)
3.1.修饰的类
被修饰的类,不能被继承。final class 类名 {
}
3.2 修饰的方法
被修饰的方法,不能被重写。修饰符 final 返回值类型 方法名(参数列表){
//方法体
}
3.2 修饰的变量
`修饰符 final 返回值类型 方法名(参数列表){ `
`//方法体`
`}`
3.2.1 局部变量——基本类型
基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改
public class FinalDemo1 {
public static void main(String[] args) {
// 声明变量,使用final修饰
final int a;
a = 10; // 第一次赋值
a = 20; // 第二次赋值 报错,不可重新赋值
// 声明变量,直接赋值,使用final修饰
final int b = 10;
// 第二次赋值
b = 20; // 报错,不可重新赋值
}
}
3.2.2 局部变量——引用类型
引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。
但是不影响对象内部的成员变量值的修改
public class FinalDemo2 {
public static void main(String[] args) {
// 创建 User 对象
final User u = new User();
// 创建 另一个 User对象
u = new User(); // 报错,指向了新的对象,地址值改变。
// 调用setName方法
u.setName("张三"); // 可以修改
}
}
被final修饰的常量名称,一般都有书写规范,所有字母都大写。
来源:CSDN
作者:格子小姑娘
链接:https://blog.csdn.net/weixin_44079478/article/details/104670457