当前位置 : 主页 > 编程语言 > java >

Java自学|static详解

来源:互联网 收集:自由互联 发布时间:2022-07-13
Java自学|static详解 1.静态属性 我们线定义一个Person类,他有一个静态属性age和一个和非静态属性name: public class Person { private static int age ; //静态属性 private String name ; //非静态属性 publ


Java自学|static详解


1.静态属性

我们线定义一个Person类,他有一个静态属性age和一个和非静态属性name:

public class Person{
private static int age; //静态属性
private String name; //非静态属性

public static void main(String[] args) {
System.out.println(age); //直接用静态属性,正常
//System.out.println(name); //直接用非静态属性,报错
}
}

这个程序,是没有任何问题的,能直接输出age,但是如果我们将第二个输出语句的注释符去掉的话,就会出现错误:

Java自学|static详解_java

这个问题,我们之前也提到过,因为静态属性是有类的时候就加载出来了,而非静态属性必须要在实例化了之后才会生成。

2.静态方法

我们线定义一个Person类,他有一个非静态方法say2,和静态方法say1和main

public class Person{
//静态方法
public static void say1(){

}
//非静态方法
public void say2(){

}

public static void main(String[] args) {

}
}

我们在main方法中调用say1和say2,会发现say1正常调用,而say2会出现报错,不同的尝试,我们会发现,可以在say1中调用say1,say2中调用say2(这里可以和递归联系一下),也可以在say2中调用say1,但是不能在say1中调用say2.

3.静态代码块

我们还是定义一个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();
}
}

我们在main方法中new了一个Person,发现输出的顺序为:

Java自学|static详解_java_02

我们再做另一个测验

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();
Person person1 = new Person();
}
}

我们new了两个对象,输出发现静态代码块只输出一次,这说明了,static代码块只执行一次

4.静态导入包

假如我们要生成一个随机数,我们可以用Math的random方法:

public class Person {
public static void main(String[] args) {
System.out.println(Math.random());
}
}

如果我们不想每次都写一个Math,是吧,很麻烦,那么我们可以怎么操作呢?

正常情况下,我们要使用一个包,是不是直接导入这个包就行了

import java.lang.Math;

我们可以加上static直接导入这个random方法:

import static java.lang.Math.random;

这样就可以直接用random了不用加Math.


世上没有白走的路,每一步都算数!

跟上狂神说Java!

每个牛B的人背后都有段苦逼的岁月,只要像sb一样的坚持,终将牛B!


上一篇:Java自学|instanceof和类型转换
下一篇:没有了
网友评论