面向对象基础

创建对象分为如下四步:

  1. 分配对象空间, 将对象成员初始化为0或null或False
  2. 执行属性值显式初始化
  3. 执行构造方法
  4. 返回对象的地址给的相关变量

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

  1. 栈描述的是方法执行的内存模型,每个方法被调用的都会创建一个栈帧(存储局部变量, 操作数,方法出口等)
  2. JVM为每一个线程创建一个栈,用于存放该线程执行方法的信息(实际参数[与形参呼应], 局部变量等)
  3. 栈 的信息为线程私有, 线程间不可共享
  4. 栈的存储特性是先进后出, 后进先出
  5. 栈由系统自动分配, 速度快! 栈是一个连续的存储空间

(2)堆Heap

  1. 堆用于存储创建好的对象和数组(数组也是对象)
  2. JVM只有一个堆, 被所有线程共享
  3. 堆是一个不连续的存储空间, 分配灵活, 速度慢!

(3)方法区

  1. JVM只有一个方法区, 被所有线程共享
  2. 方法区也是堆, 只是用于存储类&常量相关的信息
  3. 用来存放程序中永远不变或唯一的内容(类信息[class对象], 静态变量, 字符串常量等)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PsD87Hhd-1585902761483)(C:\Users\Yeseung\Videos\Captures\064_内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程.mp4 - PotPlayer 2020_3_22 20_26_34 (2)].png)

程序执行的步骤和说明

  1. javac 编译文件Sxtstu.java →\rarr→ java Sxtstu 虚拟机执行这个类, 调java时启动虚拟机, 就启动空间了:栈/堆/方法区 →\rarr→ 执行Sxtstu这个类,代码加载到空间中

  2. 执行Sxtstu这个类, 代码加载到空间中, 方法区有类的相关信息了

    代码
    静态变量
    静态方法
    字符串常量 (引号引起来的那些都算)

    有了这些信息以后, java Sxtstu这个语句就算执行完了

  3. 开始找main方法,执行:

    1. 在栈中开辟一个栈帧(

      高淇Java300集相关推荐

      1. 【133天】尚学堂高淇Java300集视频精华笔记(71-72)

        第71集:常用类/file类/打印目录树状结构/递归算法 课堂代码 package com.test071;import java.io.File;public class Test071 {publ ...

      2. 【138天】尚学堂高淇Java300集视频精华笔记(84)

        第84集:太阳系模型/基本类的封装/Star类的建立 本集知识点 将对象尽可能的抽象,可以有效减少代码量,比如此例中的Star类 package com.test084_087_solar;impor ...

      3. 【135天】尚学堂高淇Java300集视频精华笔记(74-76)

        第74-75集:异常机制.trycatchfinallyreturn执行顺序.捕获异常.声明异常throw.方法重写中异常的处理.手动抛出异常 异常的处理办法一:捕获异常 try try语句指定了一段 ...

      4. 【131天】尚学堂高淇Java300集视频精华笔记(65-66)

        第65集:常用类Date类的使用JDk源码分析 Date时间类(java.util.Date) 在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Date()分配一个D ...

      5. 【147天】尚学堂高淇Java300集视频精华笔记(108-109)

        第108集:容器equals和hashcodeJDK源代码分析 本集知识点 Java中规定,若两个对象equals比较后内容相等(为true),则hashCode必须相等,反之不然.[原因见内存分析图 ...

      6. 【153天】尚学堂高淇Java300集视频精华笔记(122-123)

        叨叨两句(2017.7.8) 我现在发现我太适合当程序员了,稍微懂点知识后想法就一堆一堆的,哈哈. 今天敲下面这个冒泡排序时感觉太特么好了.原来学编程最快乐的事情就是懂了一些知识后,把它变成可以在电脑 ...

      7. java高淇_高淇java300集JAVA常用类作业

        一.选择题 1. 以下选项中关于int和Integer的说法错误的是( B D).(选择二项) A.int是基本数据类型,Integer是int的包装类,是引用数据类型 B.int的默认值是0,Int ...

      8. 【160天】尚学堂高琪Java300集视频精华笔记(129)

        明天开始,专栏增加一个黑马程序员的课程更新. 其它容器收尾讲解 队列Queue与Deque(单向队列与双向队列) Enumeration(较老的接口,JDK1.5前使用频繁,维护旧系统会用到) Has ...

      9. Table——高淇JAVA300讲笔记之Guava

        案例一:学生成绩表格的行和列转换 1 package com.bjsxt.others.guava; 2 3 import java.util.Map; 4 import java.util.Set; ...

      10. commons的Predicate和Transformer——高淇JAVA300讲笔记之commons

        案例一:Predicate 断言 1 package com.bjsxt.others.commons; 2 3 import java.util.ArrayList; 4 import java.u ...

      最新文章

      1. 迭代器模式(Iterator pattern)
      2. Velocity魔法堂系列二:VTL语法详解
      3. 王咏刚分享DeeCamp三年成功经验:学生超自主,导师很顶尖,批量培养AI人才不是梦...
      4. python编程入门到实践 百度云-python网络爬虫从入门到实践pdf
      5. 从0到1建立一张评分卡之数据预处理
      6. 【学术相关】供参考:刚刚,2021 世界大学学术排名发布!
      7. VTK:Utilities之BrownianPoints
      8. C# WPF抽屉效果实现
      9. Session_End引发的性能问题!
      10. 【游戏理论】游戏与游戏开发
      11. 基于Pytorch实现人脸关键点检测模型MTCNN
      12. oracle18c客户端,oracle--oracle18C软件安装(一)
      13. bzoj 4742 [Usaco2016 Dec]Team Building
      14. Windows 7下Git SSH 创建Key的步骤(by 星空武哥)
      15. 今日恐慌与贪婪指数为23,恐慌程度有所下降
      16. 【MySQL篇】第三篇——表的操作
      17. linux 快速建文件目录,在Linux中批量创建和修改文件或目录
      18. five86-1靶机渗透攻略
      19. dockers安装redis
      20. Matlab学习-常用命令技巧

      热门文章

      1. AutoCAD二次开发1-环境配置
      2. 0.88mm液晶拼接屏在会议显示中的优势分析
      3. 2021如何提升网站的排名?SEO
      4. 全国教师计算机职称考试题库,全国信息技术教师考试题库及答案(2016最新版)
      5. 几个离线笔记软件推荐
      6. gradle 教程 0 - 安装篇
      7. 玩转CODESYS 入门篇(一)-- 认识CODESYS
      8. 在创建生成WIFI二维码手机扫码链接
      9. NAT 穿透的几种方式
      10. 【转】NAT穿透技术