高淇Java300集
面向对象基础
创建对象分为如下四步:
- 分配对象空间, 将对象成员初始化为0或null或False
- 执行属性值显式初始化
- 执行构造方法
- 返回对象的地址给的相关变量
1. 对象和类的关系, 属性, 成员变量, 方法
package com.learning;public class Sxtstu {//属性fieldsint age;String name;int id;Computer comp;//方法void study(){System.out.println("I'm studying now" + comp.brand);}void play(){System.out.println("I'm playing now");}//构造方法,用于创建这个类的对象,无参的构造方法可以由系统自动创建,方法必须和类名保持一致Sxtstu(){}//程序执行入口,必须要有public static void main(String[] args) {Sxtstu stu = new Sxtstu(); //去掉了构造方法stu.id =10001;stu.sname = "Wang";stu.age =18;//建好一个对象Computer c1 = new Computer();c1.brand = "Lenovo";//把刚刚建好的对象赋给stu的comp属性stu.comp = c1;stu.play();stu.study();}
}class Computer{String brand;
}
2. 一个典型的类的定义和UML图
可以有多个类, 但只能有一个public修饰的类,
图先鸽了
3. 内存分析
(1)栈Stack
- 栈描述的是方法执行的内存模型,每个方法被调用的都会创建一个栈帧(存储局部变量, 操作数,方法出口等)
- JVM为每一个线程创建一个栈,用于存放该线程执行方法的信息(实际参数[与形参呼应], 局部变量等)
- 栈 的信息为线程私有, 线程间不可共享
- 栈的存储特性是先进后出, 后进先出
- 栈由系统自动分配, 速度快! 栈是一个连续的存储空间
(2)堆Heap
- 堆用于存储创建好的对象和数组(数组也是对象)
- JVM只有一个堆, 被所有线程共享
- 堆是一个不连续的存储空间, 分配灵活, 速度慢!
(3)方法区
- JVM只有一个方法区, 被所有线程共享
- 方法区也是堆, 只是用于存储类&常量相关的信息
- 用来存放程序中永远不变或唯一的内容(类信息[class对象], 静态变量, 字符串常量等)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PsD87Hhd-1585902761483)(C:\Users\Yeseung\Videos\Captures\064_内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程.mp4 - PotPlayer 2020_3_22 20_26_34 (2)].png)
程序执行的步骤和说明
javac 编译文件Sxtstu.java →\rarr→ java Sxtstu 虚拟机执行这个类, 调java时启动虚拟机, 就启动空间了:栈/堆/方法区 →\rarr→ 执行Sxtstu这个类,代码加载到空间中
执行Sxtstu这个类, 代码加载到空间中, 方法区有类的相关信息了
代码 静态变量 静态方法 字符串常量 (引号引起来的那些都算) 有了这些信息以后, java Sxtstu这个语句就算执行完了
开始找main方法,执行:
在栈中开辟一个栈帧(
高淇Java300集相关推荐
- 【133天】尚学堂高淇Java300集视频精华笔记(71-72)
第71集:常用类/file类/打印目录树状结构/递归算法 课堂代码 package com.test071;import java.io.File;public class Test071 {publ ...
- 【138天】尚学堂高淇Java300集视频精华笔记(84)
第84集:太阳系模型/基本类的封装/Star类的建立 本集知识点 将对象尽可能的抽象,可以有效减少代码量,比如此例中的Star类 package com.test084_087_solar;impor ...
- 【135天】尚学堂高淇Java300集视频精华笔记(74-76)
第74-75集:异常机制.trycatchfinallyreturn执行顺序.捕获异常.声明异常throw.方法重写中异常的处理.手动抛出异常 异常的处理办法一:捕获异常 try try语句指定了一段 ...
- 【131天】尚学堂高淇Java300集视频精华笔记(65-66)
第65集:常用类Date类的使用JDk源码分析 Date时间类(java.util.Date) 在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Date()分配一个D ...
- 【147天】尚学堂高淇Java300集视频精华笔记(108-109)
第108集:容器equals和hashcodeJDK源代码分析 本集知识点 Java中规定,若两个对象equals比较后内容相等(为true),则hashCode必须相等,反之不然.[原因见内存分析图 ...
- 【153天】尚学堂高淇Java300集视频精华笔记(122-123)
叨叨两句(2017.7.8) 我现在发现我太适合当程序员了,稍微懂点知识后想法就一堆一堆的,哈哈. 今天敲下面这个冒泡排序时感觉太特么好了.原来学编程最快乐的事情就是懂了一些知识后,把它变成可以在电脑 ...
- java高淇_高淇java300集JAVA常用类作业
一.选择题 1. 以下选项中关于int和Integer的说法错误的是( B D).(选择二项) A.int是基本数据类型,Integer是int的包装类,是引用数据类型 B.int的默认值是0,Int ...
- 【160天】尚学堂高琪Java300集视频精华笔记(129)
明天开始,专栏增加一个黑马程序员的课程更新. 其它容器收尾讲解 队列Queue与Deque(单向队列与双向队列) Enumeration(较老的接口,JDK1.5前使用频繁,维护旧系统会用到) Has ...
- Table——高淇JAVA300讲笔记之Guava
案例一:学生成绩表格的行和列转换 1 package com.bjsxt.others.guava; 2 3 import java.util.Map; 4 import java.util.Set; ...
- commons的Predicate和Transformer——高淇JAVA300讲笔记之commons
案例一:Predicate 断言 1 package com.bjsxt.others.commons; 2 3 import java.util.ArrayList; 4 import java.u ...
最新文章
- 迭代器模式(Iterator pattern)
- Velocity魔法堂系列二:VTL语法详解
- 王咏刚分享DeeCamp三年成功经验:学生超自主,导师很顶尖,批量培养AI人才不是梦...
- python编程入门到实践 百度云-python网络爬虫从入门到实践pdf
- 从0到1建立一张评分卡之数据预处理
- 【学术相关】供参考:刚刚,2021 世界大学学术排名发布!
- VTK:Utilities之BrownianPoints
- C# WPF抽屉效果实现
- Session_End引发的性能问题!
- 【游戏理论】游戏与游戏开发
- 基于Pytorch实现人脸关键点检测模型MTCNN
- oracle18c客户端,oracle--oracle18C软件安装(一)
- bzoj 4742 [Usaco2016 Dec]Team Building
- Windows 7下Git SSH 创建Key的步骤(by 星空武哥)
- 今日恐慌与贪婪指数为23,恐慌程度有所下降
- 【MySQL篇】第三篇——表的操作
- linux 快速建文件目录,在Linux中批量创建和修改文件或目录
- five86-1靶机渗透攻略
- dockers安装redis
- Matlab学习-常用命令技巧
热门文章
- 【133天】尚学堂高淇Java300集视频精华笔记(71-72)