static静态成员变量和静态方法

当有new创建一个对象的,里面属性和方法,通过构造函数,能定义多个不同的对象,在我们做面向对象开发的时候,给一个场景,人在一个班级的时候,你的老师可能是固定的。

当我们用构造方法去构造的时候,每次都去传递一个固定的实参去定义个老师。

这样好会显得代码非常的冗余。

一.static修饰的静态成员变量

1.静态变量

被static修饰的成员变量,叫做静态变量。

2.特点

该类所有对象共享

3.调用方式

(1)类名调用(推荐)

(2)对象名调用

4.代码案例

5.代码内存图

1.首先在测试类中加载main方法,解析字节码文件

2.初始化成员变量和方法,默认给初始值。

3.被static修饰的静态成员变量,单独放在一个位置,我们暂且叫它静态成员变量区。

4.通过new关键字在堆里面去构造一个对象

5.将赋值过去的成员变量,给对应的变量

6.并且每个对象都有一个地址值,我们暂且理解他用隐藏的this关键字来连接起来的。

7.在创建第二个新对象的时候,还是一样初始化变量的值,重复以上的操作,不过已经不用给静态变量那一块赋值了,因为没创建一个对象,都会加载静态成员变量区的static修饰的静态成员变量。

6.共享

当我们去定义一个类的时候,发现他的属性,每个对象都用得到的时候,我们可以使用静态成员变量。

二.static修饰的静态方法

1.三种类

(1)测试类

程序的入口,判断测试是否能正常运行。

(2)JavaBean类

用来描述一类事物

package aa.com;

public class JvB {
    String name;
    int age;

    public JvB() {
    }

    public JvB(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void show() {
        System.out.println("我是" + name + "今年" + age + "岁");
    }

}

(3)工具类

不是用来描述一类事物的,而是帮我们做一些事情的类。

1.规则

(1)类名见名知义

(2)私有化构造方法

(3)方法定义成静态的方便调用

2.案例(定义一个求数组和的方法)

工具类:

package aa.com;

public class gjl {
    public static int getResult(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum + arr[i];
        }
        return sum;
    }
}

测试类:

package aa.com;

public class ceShi {
    public static void main(String[] args) {
//
//        JvB aa = new JvB("张三", 20);
//        aa.show();
        int[] arr = {10, 20, 30, 40, 50};
        System.out.println(gjl.getResult(arr));
    }
}

3.调用

类名.方法名;

三.static的注意事项

1.静态方法只能访问静态变量和静态方法

2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法

3.静态方法中是没有this关键字

总结:

静态方法中,只能访问静态。

非静态方法可以访问所有。

静态方法中没有this关键字

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值