2020.7.24(static、math、代码块)

一 、static关键字

定义:

​ 静态,可以修饰成员变量成员方法,修饰成员变量,此变量就是一个共享变量,会被这个类的所有对象所共享。

static关键字的特点:

1、随着类的加载而加载

2、静态所修饰的成员是优先于对象而存在的

3、被类的所有对象所共享

4、被静态所修饰的成员是属于类的建议使用类名直接调用,当然也可以使用对象调用。

5、静态变量也称之为类变量。

01.1静态方法的调用及特点

  • 静态方法可以直接使用类名而调用,不需要new对象。

  • 在静态方法里面不能调用非静态方法。因为静态方法里调用不到非静态成员

  • 静态所修饰的成员,随着类的加载而加载的,优先于对象而存在的。因为现有的访问不到后有的。

  • 在静态方法里只能访问静态所修饰的成员。

  • 非静态方法既可以访问非静态成员,也可以访问静态成员。

注意:
在静态方法中不能存在this关键字。
因为this本身代表的是该类对象,对象是后来才有的。
对于提供main方法作为成员入口这个类,这个方法中,我们一般不定义成员变量

01.2静态变量与成员变量

  1. 静态变量属于类,也称之为类变量,成员变量属于对象向,也称之为对象变量或实例变量

  2. 静态变量存在方法去的静态区,成员变量存储在堆内存。

  3. 静态变量随着类的加载而加载,随着类的限载而卸载,成员变量随着对象向的创建而创建,随着对象的消亡而消亡。

  4. 静态变量可使用类名或者对象名调用,成员变量只能能使用对象调用。

    二、Math类

    概述

    类包含用于执行基本数学运算的方法
    Math类特点
    由于Math类在java.lang包下,所以不需要导包。
    没有构造方法,因为它的成员全部是静态的。
    获取随机数的方法
    public static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
    我要获取一个1-100之间的随机数,肿么办?
    int number = (int)(Math.random()*100)+1;

案例演示:

package com.Homework.day07;

import java.util.Scanner;

//猜数字小游戏
public class Demo {
    public static void main(String[] args) {
        int num= (int) ((Math.random()*100)+1);

        //随机数字

        for (int i = 1; i < 12; i++) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请您第"+i+"输入数字");
            int n=scanner.nextInt();
            if(i>10){
                System.out.println("您输入次数已到");
            }
            else if(n>num){
                System.out.println("您"+i+"次输入的值偏大");
                break;
            }else if(n<num){
                System.out.println("您"+i+"次输入的值偏小");
            }else {
                System.out.println("您"+i+"次输入正确");
            }
        }
   }
}

三、代码块

03.1定义:

所谓代码块就是被一对{}所括起来的代码

03.2代码块都分类:

局部代码块、构造代码块、静态代码块、同步代码块(多线程的时候讲)。

  • 局部代码块:定义在方法中的代码块。

  • 构造代码块:定义在类中方法外的代码块。在创建对象时会执行,优先于构造方法执行。每次创建对象都会执行。

  • 静态代码块:定义在类中方法外的代码块,并且被静态所修饰,随着类的加载而加载,最早执行,**且只执行一次**。
    因为类只加载一次,静态代码块里面只能访问被静态所修饰的成员。
    我们经常会使用静态代码块里面做一些初始化的准备工作。
    

    案例演示1:

    package com.Homework.day07;
    
    public class Demo1 {
       static int i=1,j=2;
       static {
           display(i);
       }
    
        public static void main(String[] args) {
           display(j);
        }
        private static void display(int n) {
            System.out.println(n);
        }
        private static void show(int a){
            System.out.println(a);
        }
    }
    演示结果--1、2
    

案例演示1:

package com.Homework.day07;

public class Demo2 {
    static int i=1;
    static {
        ++i;
    }

    public static void main(String[] args) {
        incre(i,5);
        display(i);
    }

    private static void display(int n) {
        System.out.println(n);
    }

    private static void incre(int n, int m) {
        n+=m;
    }
    static {
        ++i;
    }
}
演示结果--1、2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有点。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值