JAVA面向对象高级(一)黑马课程

面向对象高级


前言

学习的总体框架
在这里插入图片描述

一、Static

(1)
在这里插入图片描述
(2)具体应用:static修饰的变量是每个对象公用的,如果一个对象中对该变量进行改变,那么所有的也都随之改变。而对于成员变量,则是每个对象所有的。类变量可以直接通过类名.变量的方式来进行引用,而实例变量则不能这个样子。
在这里插入图片描述
(3)计算机中的执行原理
首先这段程序在虚拟机中的运行过程为:
先将Test类提到方法区中,再将test类中的main方法放在栈中,接着执行main方法的第一行代码,碰到学生类。,将学生类加载到方法区中,接着检查这个学生类里边是否有类变量,发现有,则会与类一起加载。因此这个学生类中的类变量name加载到堆内存中。进而扫描到“袁华”将堆内存中的name修改为“袁华”。
再往下走有个学生对象S1,他有一个学生对象age,由于是新建的对象,因此在堆内存中加载一片区域存放对象,先通过S1地址寻找堆内存中的对象是否有name对象,没有就往下走找到学生类,找到学生类之后才找到类对象name,改名马冬梅。
在这里插入图片描述
在这里插入图片描述

二、类变量(static修饰成员变量)的应用场景

在这里插入图片描述
在这里插入图片描述

三、static修饰成员方法

1.成员方法的分类

在这里插入图片描述

2、成员方法的执行原理

首先将test类提取到方法区中来执行,然后将test类中的main方法提取到方法区中来执行,执行main方法时会将学生类也加载到方法区,通过学生类来调用类方法printHelloWord
接下来创建学生对象s,会在main方法里边存入该对象在堆中的地址,堆中存该对象的变量值,此时该学生对象如果要调用printHelloWord方法,需要先找到该对象的变量,通过堆中变量存贮的地址来找到类,进而找到类方法。
在这里插入图片描述

3、总结

在这里插入图片描述

4、main()方法详解

在这里插入图片描述

(String[] args)main方法中可以传递一些参数。

在这里插入图片描述

5、static修饰成员方法的应用场景

util类存放的是一些工具类,里边可以放一些通用的工具类来优化架构
在这里插入图片描述
举例:

myUtil.java
package advance.util;

import java.util.Random;

public class myUtil {
    public static String createCode(int n){
        String code=" ";
        String data="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random r =new Random();
        for (int i = 0; i <n ; i++) {
            int index =r.nextInt(data.length());
            //根据索引去全部字符中提取该字符
            code+=data.charAt(index);


        }
        return code;
    }
}
loginDemo.java
package advance.util;

public class loginDemo {
    public static void main(String[] args) {
        System.out.println(myUtil.createCode(4));
    }
}

6、总结

在这里插入图片描述
例如在myUtil中添加

private myUtil(){}

在这里插入图片描述

7.static注意事项

在这里插入图片描述

8.static应用

在这里插入图片描述

为什么要在静态代码块中进行赋值,而不是直接定义变量时赋值的原因是因为当一个类比较复杂的时候,我们在静态代码块中赋值更加方便
在这里插入图片描述
实例代码块:
在这里插入图片描述

9.单例设计模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
饿汉式单例:
在这里插入图片描述
在这里插入图片描述
如果是经常要用这个对象,就做成饿汉式,如果不经常就是懒汉式

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值