java之修饰符
修饰符分为:访问类型修饰符和非访问类型修饰符
访问类型修饰符——public
非访问类型修饰符——static(静态),final,abstract(抽象的)
static(静态)修饰变量,则此变量在内存中只保存一份,因此不常变动的数据适合声明为静态的。
static修饰函数时,此函数无法访问到函数外定义的非static类型的全局变量。(意思只能访问函数定义外的static定义的全局变量)
类加载到内存的时候,最先加载进来的部分是被static修饰的静态成员(因此可以解释上一点为啥访问不到),所以static修饰的函数进入内存时,没有被修饰的变量并没有进入内存,所以无法访问到函数外非static类型的变量
静态成员的访问不需要依赖对象,可以直接通过类名来访问
静态代码块的用法(很重要)
注意:一般的非静态方法,基于面向对象的思想,一般不会修饰为静态方法,而工具类方法,一般就是修饰的静态方法
package com.my.packge5; public class Student { /* 姓名 */ private static String name; /* 性别 */ private static String gender; /* 年龄 */ private static int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, String gender, int age){ this.name = name; this.age = age; this.gender = gender; } public Student(){ } @Override public String toString() { return "学生信息{" + "姓名='" + name + '\'' + ", 性别='" + gender + '\'' + ", 年龄=" + age + '}'; } }
package com.my.packge5; public class Tester { public static void main(String[] args) { Student student1 = new Student("张三","男",20); Student student2 = new Student("李四","男",22); System.out.println(student1); System.out.println(student2); Tester tes = new Tester(); //非静态函数是通过对象调用方法 tes.sayHi(); //用static修饰的静态函数或者静态变量,可以直接用类名调用 Tester.sayHilou(); } //非静态函数 public void sayHi(){ System.out.println("Hi"); } //静态函数-工具方法 public static void sayHilou(){ System.out.println("Hi"); } //静态代码块 static { //一般用于做初始化工作,完成数据的初始化 //会在main方法和普通方法执行前执行 } }
final修饰符(最终的)
被final修饰的变量,它的值不能再做修改
被final修饰的函数,不能被重写
被final修饰的类,不能被继承
abstract(抽象的)