大佬给推荐的韩顺平老师的课程 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方法(栈)执行完毕,整个程序退出