Static关键字

一.引入

1.简介

Static一般在什么场景会遇见呢,我们需要封装一个学生类,其中有名字,班级名,自我介绍等。
Static是一个关键字,表示静态。可以修饰变量、方法。

2.特点

其特点最主要的就是生命周期,即什么时候进入内存,什么时候又被销毁。
其中分为成员变量和静态的成员变量:

  • 成员变量: new对象的时候进入到内存中去。对象销毁,成员变量跟着销毁
  • 静态的成员变量:随着类加载而加载。比成员变量更快一步进入内存。随着类的销毁而销毁。

二.用法

1.修饰成员变量
a.变量的语义(所有的对象共享的变量)

所有中国人的国籍,所有重庆人的籍贯。

b.语法
public static 类型 变量名 =; 
// 可以被外部访问和修改
public static final 类型 变量名 =// 可以被外部访问,不能修改  【常量】
c.调用

类名.静态属性名

2.修饰成员方法

其语法是:

public static 返回类型 方法名(参数列表) {}
3.修饰成员的访问规则

我们在构造方法中只有在同类中可以直接访问静态成员,在其他类中需要使用_类名.属性名_来访问调用。同时在静态方法中只能使用静态的成员,所以无法直接访问非静态成员。
那么在非静态方法中同理,同类里可以直接访问静态成员,但是在其他类中只能使用**类名.属性名**来访问。

三.使用

我们首先将引入中的例子做出:

package cn.itsource.static1;

public class Student {
    public String name;

    static final String className = "小雨";

    public Student(String name) {
        this.name = name;
    }

    public void sayHi() {
        System.out.println("我叫:" + name + " 来自:" + className);
    }
}

再写出一个例子:

  • Arrays所有的方法都用static来修饰
  • Math所有的方法都用static修饰
  • StudentClass所有的方法都没有用static来修饰

Arrays是用来操作数组的(一系列的操作数组的方法)、Math是一系列的数学方法的集合,他们都是工具类,偏应用,没有什么属性(Arrays没啥属性,数组都是传入的),就不需要new。所有的方法都是静态,直接通过类名调用即可。但是StudentClass实体类(现实生活中的教室), Dog类(狗)这些有属性。使用的时候需要new。

package cn.itsource.static1;

public class MyArrays {
    private int[] arr = new int[10];

    public MyArrays(int[] arr) {
        this.arr = arr;
    }

    // 操作数组的方法
    public void arrToString() {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    public void copyOf() {

    }
}

int[] arr1 = {1,2,3,4};
int[] arr2 = {1,4,6,4};
int[] arr3 = {1,5,7,4};

MyArrays myArrays = new MyArrays(arr1);
myArrays.arrToString();

// 输出 arr2
MyArrays myArrays1 = new MyArrays(arr2);
myArrays1.arrToString();

我们尝试改变:

package cn.itsource.static1;

public class MyArrays {

    /**
     * 遍历输出
     * @param arr
     */
    public static void arrToString(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    public static void arrToString(double[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    /**
     * 合并int数组
     * @return
     */
    public static int[] merger(int[]... arr) {
        return new int[5];
    }
}

int[] arr1 = {1,2,3,4};
        int[] arr2 = {1,4,6,4};
        int[] arr3 = {1,5,7,4};

        MyArrays.arrToString(arr1);
        MyArrays.arrToString(arr2);

最后希望各位一键三连!!!!

image.png

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我不是少爷.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值