JAVA基础再回首(五)——static关键字、main方法、java Api帮助文档的使用、Math类、代码块

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52088918

JAVA基础再回首(五)——static关键字、main方法、java Api帮助文档的使用、Math类、代码块

一、static关键字

  • 可以修饰成员变量和成员方法
  • static关键字特点
    • 随着类的加载而加载
    • 优先于对象存在
    • 被类的所有对象共享
      • 这也是我们判断是否使用静态关键字的条件
    • 可以通过类名调用

我们一起来写一个Demo

public class StudentDemo {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.num);

        System.out.println(Student.num2);
        System.out.println(s.num2);
    }
}
class Student {
    //非静态变量
    int num = 10;
    //静态变量
    static int num2 = 20;
}

输出结果:10 20 20
可以看到,我们可以通过类名调用

  • static关键字注意事项

    • 在静态方法中是没有this关键字的
    • 静态方法只能访问静态的成员变量和静态的成员方法

    我们怎么理解呢?
    1.静态是随着类的加载而加载,this是随着对象的创建而存在。
    2.静态比对象先存在。
    3.在静态方法:
    成员变量:只能访问静态变量
    成员方法:只能访问静态成员方法
    4.非静态方法:
    成员变量:可以是静态的,也可以是非静态的
    成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
    简单的理解就是静态只能访问静态。


我们学习了static关键字,那么来继续学习一下静态变量成员变量的区别吧。

A:所属不同
静态变量:属于类,类变量
成员变量:属于对象,对象变量,实例变量
B:内存位置不同
静态变量:方法区的静态区
成员变量:堆内存
C:生命周期不同
静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
D:调用不同
静态变量:可以通过对象名调用,也可以通过类名调用
成员变量:只能通过对象名调用

main方法

说起main方法,首先main方法是静态的

  • public static void main(String[] args) {}
  • public 被jvm调用,访问权限足够大。
  • static 被jvm调用,不用创建对象,直接类名访问
  • void被jvm调用,不需要给jvm返回值
  • main 一个通用的名称,虽然不是关键字,但是被jvm识别
  • 函数的参数:参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组

Java帮助文档的简单使用

我们要学习java中的一些类,那么我们就要学习如何使用帮助文档,最后我会给大家上传帮助文档,让大家学习使用。我来简单的说下帮助文档的简单使用。

  • 1:打开帮助文档
  • 2:点击显示,找到索引,看到输入框
  • 3:知道你要找谁?以Scanner举例
  • 4:在输入框里面输入Scanner,然后回车
  • 5:看包
    • java.lang包下的类不需要导入,其他的全部需要导入。
    • 要导入:java.util.Scanner
  • 6:再简单的看看类的解释和说明,别忘了看看该类的版本
  • 7:看类的结构
    • 成员变量 字段摘要
    • 构造方法 构造方法摘要
    • 成员方法 方法摘要
  • 8:学习构造方法
    • A:有构造方法 就创建对象
    • B:没有构造方法 成员可能都是静态的
  • 9:看成员方法

    • A:左边
      • 是否静态:如果静态,可以通过类名调用
      • 返回值类型:人家返回什么,你就用什么接收。
    • B:右边
      • 看方法名:方法名称不要写错
      • 参数列表:人家要什么,你就给什么;人家要几个,你就给几个

    Math类

    上面我们学习了帮助文档的使用,学习java中的类就方便多了。一起来学习Math类吧。

  • Math类包含用于执行基本数学运算的方法。

  • 由于Math类在java.lang包下,所以不需要导包。

特点:没有构造方法,因为它的成员全部是静态的。

话不多学,写获取随机数的Demo吧。

class MathDemo {
    public static void main(String[] args) {
        //获取一个随机数
        double d = Math.random();
        System.out.println(d);
    }
}

输出结果:
这里写图片描述
可以看到得到的结果是小于1的大于0的一个随机数,那么,我们要获取1–100直接的随机数肿么办呢?

public class MathDemo {

    public static void main(String[] args) {
        int x = 0;
        //获取一个1-100之间的随机数
        for (int i = 0; i < 100; i++) {
             x = (int) (Math.random()*100)+1;
        }
        System.out.println(x);
    }
}

输出结果:
这里写图片描述
可以看到结果是一个大于1小于100的一个整数。

当然Math类还有很多的用法,比如求最大值、最小值等。大家下去之后可以多练习练习。

代码块

首先我们了解代码块的概念

在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(以后多线程中我们学习)。

  • 局部代码块

在方法中出现;限定变量生命周期,及早释放,提高内存利用率

  • 构造代码块

在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。

  • 静态代码块

在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
作用:一般是对类进行初始化。

学习了上面的概念,你知道静态代码块,构造代码块,构造方法的执行顺序吗?我们一起来写一个Demo吧。

public class CodeDemo {

    public static void main(String[] args) {
                //局部代码块
                {
                    int x = 10;
                    System.out.println(x);
                }

                {
                    int y = 20;
                    System.out.println(y);
                }
                System.out.println("---------------");

                Code c = new Code();    
                System.out.println("---------------");
                Code c2 = new Code();
                System.out.println("---------------");
                Code c3 = new Code(1);
    }
}
class Code {
    //静态代码块
    static {
        int a = 1000;
        System.out.println(a);
    }

    //构造代码块
    {
        int x = 100;
        System.out.println(x);
    }

    //构造方法
    public Code(){
        System.out.println("code");
    }

    //构造方法
    public Code(int a){
        System.out.println("code");
    }

    //构造代码块
    {
        int y = 200;
        System.out.println(y);
    }

    //静态代码块
    static {
        int b = 2000;
        System.out.println(b);
    }
}

输出结果:
这里写图片描述
结果是否和你想的一样呢。
我们现在就可以得到一个结论了。

静态代码块 – 构造代码块 – 构造方法
静态代码块:只执行一次
构造代码块:每次调用构造方法都执行


JAVA Api 1.8:http://download.csdn.net/detail/m366917/9592210

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页