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

原创 2016年08月01日 20:39:52

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

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

JavaAndroid客户端和C#服务端Web Api接口开发

-
  • 1970年01月01日 08:00

重新认识java(六) ---- java中的另类:static关键字(附代码块知识)

你知道么,static的用法至少有五种?
  • qq_31655965
  • qq_31655965
  • 2017-01-28 20:55:39
  • 4203

JavaSE_1_面向对象_2

  • 2017年02月07日 18:03
  • 272KB
  • 下载

JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法

JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法 学了java,做了android应用开发,现在回想起来,真的是一路坎坷。。我在上章博客中提到了我以后的几个学习计划和目标就...
  • m366917
  • m366917
  • 2016-06-01 21:04:27
  • 3404

java 构造方法,static关键字,main方法修饰解释

首先,一个java文件中,只能有一个对外公开的类,也就是 只能有一个public修饰的类.注意:这里的java文件,也就是 创建的类文件.java文件(经过JRE编译成.class文件在虚拟机上运行)...
  • qq_28327795
  • qq_28327795
  • 2017-12-06 20:42:15
  • 164

Java常用API(五)Math 数学类

一、概述 Math是最终类,且构造函数被私有化,所以不允许创建对象。但是提供了一系列的静态方法---完全作为了工具类使用。只提供了初等的运算。 二、常量 E  :底数 ,是所有自...
  • chou_out_man
  • chou_out_man
  • 2017-09-21 11:11:11
  • 397

JAVA中的代码块、静态代码块、构造方法、main方法执行顺序

//Java中静态代码块,普通代码块,构造代码块区别及代码示例 //执行顺序:(优先级从高到低)静态代码块>mian方法>构造代码块>构造方法。 //其中静态代码块只执行一次。构造代码块在每次创建对象...
  • lzxomg
  • lzxomg
  • 2016-07-08 10:15:33
  • 4239

java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序 这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果。 理论知识: 静态代码块是:属于类的,在类加载时...
  • u013793732
  • u013793732
  • 2016-03-13 13:44:21
  • 2585

java中Math类的常用API

java中Math类的常用API
  • bingo_liu
  • bingo_liu
  • 2017-02-16 09:48:05
  • 840

JAVA中Math类的random()方法使用

使用了Math类的random()方法, 由于Math类是出于java.lang包(Package),故使用时不必import这个包。 此外本例还使用了移位运算符 /** * 使用了Mat...
  • Gaowen_HAN
  • Gaowen_HAN
  • 2011-12-29 19:54:23
  • 6529
收藏助手
不良信息举报
您举报文章:JAVA基础再回首(五)——static关键字、main方法、java Api帮助文档的使用、Math类、代码块
举报原因:
原因补充:

(最多只允许输入30个字)