static关键字(文字来源于xdclass,这是我的课堂笔记)
1.可以修饰的方法或者变量,优先于对象执行,所以内存会有static修饰的内容,后有对象的内容
2.可以用来修饰类的成员方法、类的成员变量,还可以编写static静态代码块
3.修饰变量就是类变量,修饰方法就是类方法
总结:类变量或者类方法,可以直接通过类名.方法名或者变量名进行调用,不用经过对象
public class Student{
static int age;//使用static可以不用通过对象new去访问它
static Stirng name;//
public static void sleep(){
//对象的方法方法加上static关键字则变成类方法
}
}
static变量也称静态变量
静态变量:被所有的对象所共享,在内存中只有一份,它当且仅当在类初次加载时会被初始化。
非静态变量:是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
//static成员变量的初始化顺序按照定义的顺序进行初始化
public class Student {
static int age=10;//静态变量的定义
String name;
public int getAge(){ //定义公有函数,get***()用来返回可以获得return出的值,set***()用来设置值
return age;
}
}
//第二个类
public class StaticTest {
public static void main(String[] args) {
//Student student1声明变量
//student = new Student():对变量进行初始化
//new student():功能是调用对象(类或其他类似结构)的构造函数,完成对象的初始化,并不单纯是为了赋值
Student student1 = new Student();
student1.name="耶耶耶";
Student student2 = new Student();
student2.name="耶耶耶";
Student student3 = new Student();
student3.name="耶耶耶";
System.out.println(student1.name);
System.out.println(student1.getAge());//输出静态变量
System.out.println(student2.name);
System.out.println(student2.getAge());
System.out.println(student3.name);
System.out.println(student3.getAge());
}
}
static方法也称静态方法
不依赖于任何对象就可以进行访问,类名.方法名
不能访问类的非静态成员变量和非静态成员方法
!!!静态方法当中不能使用this
!!!静态方法不能直接访问非静态变量
*****static是最先执行的!!!!
一个类里面static修饰的不能访问非static修饰的
而非static修饰的可以访问static修饰的成员或者方法
//静态变量
static int age;
//静态方法
public static int getAge(){
return 5;
}
静态代码块
1、加载类的时候,静态代码块会被执行一次,且只能执行一次
2、静态内容优先于非静态内容,所以静态代码比构造方法先执行
3、使用:用来一次性对静态成员变量进行赋值,或者类资源初始化等操作
在操作static关键字的时候建议按顺序进行操作,不然容易出现问题
public class 类名{
static{
//静态代码块
}
}
public class Student {
static String sex;
static {
sex="女";
System.out.println("静态代码块被执行了");
}
}