Java入门(二十五)

Java入门(二十五)

static关键字修饰

  • static如果在类中使用他就是修饰成员变量,如果在方法就是在成员方法。如果加在方法上就是静态方法,如果加在属性上就是静态属性。
  • 比如来一些属性
public class Student {
    private static int age;
    private double score;
}
  • 用类变量的时候,score报了错,非静态的字段不能这样子去用。
    在这里插入图片描述
  • 静态的变量在内存只有一个,他能被类中所有的实例去共享。所以想用很多类去操作他的时候,就会用static,这在以后的多线程会使用到。
  • 除了静态属性,还有静态的方法。如下图,假如直接调run方法,是无法调用的,必须要把Student给new出来才可以。new Student().run()
    在这里插入图片描述
  • 但是go方法却可以直接调用,连Student都可以不要,直接去调用。
    在这里插入图片描述
  • 非静态的方法可以直接去访问这个类中的静态方法。比如run就可以去访问这个go。跟类一起加载的,所以可以随便去调。非静态的方法可以去调用静态方法里面的所有东西。而静态方法里面可以去调用静态方法里面的,但是不能调用普通的方法。因为这个静态方法跟类一起加载,加载之前都没有普通方法,没有办法去调用。main方法也是static的,这是类加载顺序的问题。

静态代码块

  • java所有的代码都可以放在一个块里面写,无论是方法还是类。下面这个东西叫做匿名代码块。一般不建议这么写
public class Person {
    {
        //代码块
    }
}

  • 有时候为了方便初始化,会用static代码块。就是可以在里面加载一些初始化的数据。
  • 像匿名代码块没有名字,程序在执行的时候不能主动调用这些模块。匿名代码块他是创建这些对象的时候自动创建的,而且在构造器之前。静态代码块,是跟类一起加载就直接执行,永久只执行一次。
  • new一个Person类看他可以执行哪些方法,通过执行结果去判断。
public class Person {
    {
        System.out.println("匿名代码块");
    }
    static {
        System.out.println("静态代码块");
    }

    public Person() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Person person = new Person();
    }
}

在这里插入图片描述

  • 首先他先输出了静态代码块,第二是匿名代码块,第三才是构造方法。
  • 再来输出,看区别
    public static void main(String[] args) {
        Person person1 = new Person();
        System.out.println("===========");
        Person person2 = new Person();
    }

在这里插入图片描述

  • 第二个里面看到静态代码块就没了,所以static只执行一次,而其他对象一创建他就会走匿名代码块然后再走构造方法。如果再走构造方法,它只会在第一次执行,后面他就不会执行了。匿名代码块一般可以用来赋初始值,因为他跟对象是同时产生的。而且他跟在构造方法前,可以通过这种方法来赋初始值。
  • 有关package的新特性。使用Math.random()方法可以产生随机数
package base.oop.demo09;

public class Test {
    public static void main(String[] args) {
        System.out.println(Math.random());
    }
}
  • 假如我们使用方法的时候不像加Math在前面的时候,怎么办呢?正常来说我们会用import来导入一个包
import  static java.lang.Math.random;

在这里插入图片描述

  • 上面这个叫做静态导入包,静态导入的话,下面可以直接调用了。
  • 比如说我们还想调用PI这个常数。在这里插入图片描述
  • 通过final修饰的类就不能被子类继承了,final之后断子绝孙了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值