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

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中Math类的常用方法

public class MathDemo {       public static void main(String args[]){           /**           * abs求...
  • HUXU981598436
  • HUXU981598436
  • 2013年11月16日 19:27
  • 11601

Java中static代码块,main函数,构造函数运行顺序

Java中static代码块,main函数,构造函数运行顺序 在
  • feishangbeijixing
  • feishangbeijixing
  • 2014年09月29日 14:49
  • 1931

Math类与Random类使用(Java)

在学习Math类与Random类之前,先介绍一个很有用的System类的方法 格式:arraycopy(Object src,int srePos,Object dest,int desePos,in...
  • hdd871532887
  • hdd871532887
  • 2015年12月15日 22:54
  • 485

java中Math类与Random类的用法

一.Math类 表示数学操作,比如求平方根、四舍五入等,它是java.lang包中的类 public final class Math extends Object Math类中的方法都是静态方法,...
  • tomcmd
  • tomcmd
  • 2015年10月11日 12:58
  • 1822

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

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

java里为什么主函数前面要加static修饰

先说一下static        1.static 修饰的域,我们叫静态域,它是归类所有的,被所有对象所共享,只有一个        2.static修饰的区块,域只会初始化一次       ...
  • breaker892902
  • breaker892902
  • 2013年07月15日 13:45
  • 9108

Java中static关键字的作用

Java中static关键字的作用
  • jsqfengbao
  • jsqfengbao
  • 2015年03月29日 08:45
  • 16599

Java之Math类使用小结

Java的Math类封装了很多与数学有关的属性和方法,大致如下: public class Main { public static void main(String[] args) { //...
  • tomorrowtodie
  • tomorrowtodie
  • 2016年09月19日 23:58
  • 7263

Java中static关键字解析以及类加载顺序例题

一.static关键字的用途 在《Java编程思想》P86页有这样一段话:   “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以...
  • xxk20
  • xxk20
  • 2016年03月17日 17:48
  • 674

Java关键字final、static、abstract使用总结

一、final 根据程序上下文环境,Java关键字final有“无法改变”或者“终态”的含义,它可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,没有子类,final类中的方法默认...
  • u013842976
  • u013842976
  • 2016年05月10日 13:48
  • 1375
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA基础再回首(五)——static关键字、main方法、java Api帮助文档的使用、Math类、代码块
举报原因:
原因补充:

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