关于Java中的static关键字

static 关键字

首先我们从字面意思去分析它,它的意思是静态的,就是一直存在的。
生活上
那么在我们的生活中的表现有哪些:
比如说公交车:1 公共资源 ;2 运行与自己无关;3很常用,没有的话就很麻烦,需要你自己开私家车。
Java中
代码中也是如此,因为有些东西都需要用,如果多次编译的话会很占内存,这种时候就需要static关键字来形容了。

1 static修饰成员变量

static int age;

【注意事项】:

​ 1.使用static修饰成员变量的时候,只需要记住一种调用方式

​ 类名.属性名字

​ 2.代码中没有创建任何类对象的时候,static修饰的成员变量已经加载。

​ 3.分析内存:只要是static修饰的成员变量,都是在.class【字节码文件】文件,编译阶段,就直接加载到了内存的数据区。该过程是早于对象的创建的,整个数据区静态的成员属性是伴随着整个程序的结束而结束。

​ 4.保存区域:

​ 类对象 堆区。静态的成员属性保存在数据区

2 static修饰成员方法

声明方式:一个正常的方法前面加上static
public void eat(){}

public static void eat(){} 这个就是静态方法

注意事项:
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是须依赖具体的对象才能够被调用。

虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。同时要注意,static方法不能被重写。

class Person {
    //成员属性
    String name;
    int age;
    static int test = 20;//静态的成员属性
    //成员方法
    public void eat () {
        name = "小明";
        testStaticMethod();
        System.out.println("小明是高质量人类");
    }
    //静态方法
    public static void testStaticMethod () {
        //name = "小风";
        //因为静态的方法早于对象的创建,非静态的属性非静态方法是对象创建的时候才调用
        System.out.println("静态的成员方法");
        //eat();
    }
}
class XiaoLing extends Person {
//    @Override//重写的严格限制,这个报错证明不是重写的,是你在自己定义的
//    public static void testStaticMethod() {
//        System.out.println("我是子类的静态方法");
//    }
}
public class Demo1 {
    public static void main(String[] args) {
        Person.testStaticMethod();
        Person person = new Person();
    }
}

3 static可以修饰代码块

语法格式:

​ static {

​ 代码

​ }

类文件只要加载,静态代码块一定加载。

静态代码也是优于对象的创建。

目的:为了在实例化对象之前,做一些准备工作。

静态代码块 > 构造代码块 > 构造方法

class StaticPerson {
    public StaticPerson() {
        System.out.println("我是构造方法");
    }
    {
        System.out.println("我是构造代码块");
    }
    static {
        System.out.println("我是静态的代码块");
    }
}
public class Demo1 {
    public static void main(String[] args) {
        StaticPerson staticPerson = new StaticPerson();
    }
}

那么上面的运行结果很明显就是
我是静态的代码块
我是构造代码块
我是构造方法

小总结

无论是静态成员变量,还是静态成员方法,如果有了static,都推荐使用类名称来进行调用,格式如下:
静态变量:类名称.变量名
静态方法:类名称.方法名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值