1.1 面向对象编程基础万字图文并茂学习笔记-跟着韩老师学JavaSE

本文是韩顺平老师的JavaSE学习笔记,深入探讨面向对象编程的基础,包括类与对象的关系、对象内存布局、方法调用与传参机制、构造器的使用、对象创建流程等关键概念。特别强调了对象在内存中的分配和构造器在初始化对象中的作用,适合Java初学者和进阶者阅读。
摘要由CSDN通过智能技术生成

大佬给推荐的韩顺平老师的课程 2021年刚刚录的船新版本!
【零基础 快速学Java】韩顺平 零基础30天学会Java
硬把从另一个讲师那里看了300多集的我拽过来 几十节课一下子爱上这个节奏了!安利!!

具有其他语言基础的盆友只需要把前几章的章节总结简单看一下 然后再去着重看需要学习的章节就可以了!
知识点分的非常清晰! 每章还有总结 这…真的是我理想中的学习资料呐!

学习笔记整理过后放到这里

  • 一方面是让自己再二次记忆一下
  • 一方面是希望可以帮到有这方面知识需要的朋友 给他们一个新的切入点来重新了解这一个知识

文章目录

本专题包括以下几个主要知识点~

在这里插入图片描述
其中插小红旗的地方就是重点~

1.类与对象

1.简单引入

java设计者引入 类与对象(OOP) 的根本原因——现有的技术不能完美地解决新的需求。

数据类型 实例
自定义数据类型 猫类Cat 猫对象 (具体的一只猫)
Java提供数据类型 int 100

创建一个“猫”对象

  • 定义一个“猫”类 Cat

    • 添加猫的属性
    • 添加猫的行为(即为方法)
  • 实例化一只猫

    • new Cat() ——创建一只猫
    • Cat cat1 = new Cat() ——把创建的猫赋给cat1

2.类与对象的区别与联系

  • 类 是抽象的 概念的 代表一类事物 —— 类是“数据类型”

  • 对象 视具体的 实际的 代表一个具体事务 —— 对象是“实例”

类是对象的模板

对象是类的一个个体 对应一个实例

3.【重点!】对象内存布局

非常重要的一个知识点!

首先明确jvm内存的几个主要部分

  • 方法区

  • 堆 真正的对象是在堆里分配的空间中的

举例演示对象存在形式

这张图很重要嗷~

后面我们还会见到这张图的~

cat被称为 对象引用 也叫**对象名 **cat 指向堆中分配的空间中 真正的对象

Cat cat = new Cat();

new Cat() 这个语句创建的对象空间 就是 真正的对象!!

Cat cat 是让cat指向真正的对象

在这里插入图片描述

4.如何创建对象?

1.先声明再创建

  • Cat cat; 就像我们声明一个整数变量一样~ int i;

  • cat = new Cat(); 就像我们给一个整数变量赋值一样~ i = 100;

2.直接创建

Cat cat = new Cat();

5.对象分配机制

来举例说明下

Person p1 = new Person();
p1.age = 20;
p1.name = "bill";
Person p2 = p1;//把p1赋给了p2
//也可以说是让p2指向p1
System.out.println(p2.age);

这段代码在内存中是怎么运作的呢?

来看看~

【1】加载Person类信息

Person p1

在这里插入图片描述

【2】在堆里面开空间 地址为 0x0011~

new Person()

在这里插入图片描述

【3】堆空间中要有存放数据的位置~

在这里插入图片描述

至此 堆里就有一个对象了 这时候对象中的属性都是默认值

age默认为0

name默认为null

【4】{1} 对象创建成功后 对象的地址会被返回给 位于栈中的p1

另外 {2} 属性值也是有地址的哦~

p1.age = 20;

p1.name="bill";

在这里插入图片描述

字符串常量在常量池中

jdk1.6之后在堆中存放辽~

【5】p1 p2指向了同一个对象哦!

在这里插入图片描述

6.对象创建过程

在这里插入图片描述

【1】加载Person类信息

【2】堆中分配空间 进行默认初始化

【3】把对象的地址赋给p (p指向了对象)

【4】进行指定初始化 让属性被赋值~

2.【重点!】方法的调用机制

很重要!

  • 主函数代码:

(其中调用了方法 我们要分析的就是这个 “方法的调用机制”)

Person p1 = new Person();
int returnRes = p1.getSum(10, 20);
System.out.println("getSum方法返回的值 = ");
  • 方法的代码
public int getSum(int num1, int num2){
   
    int res = num1 + num2;
    return res;
}

【1】

在这里插入图片描述

【2】之后跳到执行的方法处(通过地址定位 进行跳转)

然后进行对应位置的赋值 —— 10 20~

然后res的值 通过赋过来的值进行计算 得到 30

然后重点——将res返回到调用的位置

在这里插入图片描述

【3】return res 之后

getSum栈的空间被销毁

在这里插入图片描述

【4】代码全部执行完毕后(main栈也执行完毕)

main栈也销毁掉嗷~

在这里插入图片描述

程序退出 👍

方法调用小结

详情看上面的例子!!
【1】程序执行到方法时,就会开辟一个独立的空间(栈空间)

【2】当方法执行完毕,或者执行到return语句时,就会返回

【3】返回到调用这个方法的地方!

【4】返回后 继续执行方法后面的代码

【5】main方法(栈)执行完毕,整个程序退出

3.【超级重点!】方法传参机制

一定要理解这个!

例一 值拷贝

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值