1.static关键字【重点】
static中文意思:静态的
static是和对象无关的。
1.1生活的角度来理解静态的资源
公共的资源的都属于静态的东西
对象可以使用静态的资源,但是和对象无关 宿舍饮水机 就是静态资源
1.2Java中的静态
1.修饰成员变量 静态属性
类名.变量2.修饰成员方法 静态方法
类名.方法名3.修饰代码块 静态代码块
类加载时候就执行了,比构造代码块还靠前,因为
构造代码块在new对象的时候执行,而静态代码块
在类加载的时候就执行了。
1.2.1static修饰成员变量
静态成员变量:
static String name;
语法格式:
static 数据类型 变量名;
被static修饰的变量名是斜体的
package com.wyx.a_static;
class Person{
String name;
int age;
static String country;
}
public class Demo1 {
public static void main(String[] args) {
Person zhangsan = new Person();
zhangsan.name = "张三";
zhangsan.age = 23;
Person.country = "中国";
System.out.println(zhangsan.country);//中国,zhangsan这个对象也可以调用国家这个属性,不规范
zhangsan.country = "日本";
System.out.println(Person.country);
}
}
注意事项:
1.使用static修饰的变量叫静态变量
2.代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系。
1.2.2static修饰成员方法
静态方法
语法格式:
public static 返回值 方法的名字 (参数列表) {}
调用静态方法:
类.方法名字();
package com.wyx.a_static;
class Dog{
public void eat() {
System.out.println("普通成员方法");
}
public static void sleep() {
System.out.println("静态方法");
}
}
public class Demo2 {
public static void main(String[] args) {
Dog.sleep();
}
}
1.2.3static修饰代码块
语法格式: 静态代码块
static { 语句体 }
只要这个类加载,那么静态代码块一定会执行
执行顺序: 静态代码块-》构造代码块-》构造方法
package com.wyx.a_static;
class Cat{
public Cat() {
System.out.println("构造方法");
}
{
System.out.println("构造代码块");
}
static {
System.out.println("静态代码块");
}
}
public class Demo4 {
public static void main(String[] args) {
Cat cat = new Cat();
/*
静态代码快
构造代码块
构造方法
*/
}
}