权限修饰符:

企业开发中protected基本用不到,主要用priva和public

此图片的alt属性为空;文件名为1645026873-6e6f1ca15652bd0.png

静态修饰符

static关键字:静态修饰符

1.被static修饰的成员属于类,被该类所有对象共享使用!

2.多了一种调用方式:类名.静态成员

3.静态方法只能访问类的静态成员,不能直接访问类非静态成员 非静态方法既可以访问静态成员,也可以访问非静态成员

注意:如果要在静态方法中,访问非静态成员,必须创建对象,通过对象访问

4.静态方法中,不允许出现:this,super这两种关键字。

static内存图 :

首选main方法进入方法区,JVM自动调用main方法进入栈内存(运行方法和局部变量)然后开始执行,当发现static修饰的成员变量后,会在方法区单独开辟一个静态区,这时类首先加载静态区然后再加载非静态区,当加载完后会进入一个准备阶段,给static开辟空间(可以认为是方法区内存在做)分配默认值(根据数据类型来分配),这时会有数据值和地址值。然后非静态区的变量进入堆内存(new出来的都进入堆)由堆内存分配默认值。当静态区的成员加载到堆内存当中,堆不会给static成员分配默认值,因为方法区已经分配过了,直接引用它的地址值。static成员在堆内存中只引用它的地址值,通过静态成员的地址值来给方法区的static成员数据值赋值,改变的是方法区的数据值。

public class Demo {
    public static void main(String[] args) {
        Student stu1 = new Student();
        stu1.name = "坂井泉水";
        stu1.age = 23;
        stu1.school = "松荫大学";
        stu1.show();
        Student stu2 = new Student();
        stu2.show();
        stu2.school = "浙江大学";

        stu1.show();
        stu2.show();
    }
}



<------------------------------->


public class Student {
    public String name;
    public int age;
    public static String school;

    public void show() {
        System.out.println(name + "," + age + "," + school);
    }
}

final

final修饰的类为最终类,不能有子类,无法被继承。

final修饰的方法:最终方法,子类不能重写。

final修饰的局部变量:最终局部变量。

特点:一旦赋值,后期程序运行过程中,其值不能发生改变。——自定义常量!

自定义常量命名规范:

1、常量名如果是一个单词的话,所有字母全部大写。

2、常量名如果是多个单词的话,所有字符全部大写,每个单词之间用 “_” 进行连接。

Tips:

被final修饰的变量如果是基本数据类型,变量的数据值无法改变。

被final修饰的变量如果是引用数据类型,变量的地址值无法改变。

final修饰成员变量:

特点:只能赋值一次,一旦赋值,后期值不可变,有两种赋值时机:

1、定义时就赋值, ——未来该类的所有对象该属性值都一样!

2、定义时不赋值,在所有构造方法执行结束前赋值!——未来不同的对象该属性值可以有差异,但是对于某一个对象来说,该对象的属性值是不能变的。


发表回复

您的电子邮箱地址不会被公开。