首页 > 编程语言 >Java学习笔记(五)

Java学习笔记(五)

时间:2023-04-25 19:58:20浏览次数:28  
标签:p1 Java 对象 事物 笔记 学习 main 方法 属性

一、面向对象程序设计思想

  • 找一个对象帮助我们做事情(万物皆为对象),用虚拟思想去模拟现实生活。

二、类和对象的概念

  • 是事物相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征来描述该类事物。
  • 是一类事物的具体体现,对象就是类的一个具体实例,对象具备该类事物的属性和行为。

三、类的声明

 

四、对象的使用

  • 创建对象

类名 对象名 = new 类名();

  • 然后对象调用属性

对象名.属性名

  • 最后对象调用方法

对象名.方法名();

五、什么是类?什么是对象?类与对象的关系是什么?

类是事物相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征来描述该类事物。

对象是一类事物的具体体现,对象就是类的一个具体实例,对象具备该类事物的属性和行为。

他们的关系:

(1)类是对一类事物的描述,是抽象的

(2)对象是一类事物的实例,是具体的

(3)类是对象的模板,对象是类的实体

六、面向对象的内存分析

首先,准备好代码:

 JVM运行时数据区中有栈、堆、方法区

 当执行程序时,首先执行main方法,会在栈中给main方法分配一个栈帧:

 

然后将Person.class文件加载到方法区:

 然后Person p1 = new Person(),会在main栈帧中开辟一个p1内存空间,在堆中开辟一个对象内存地址,存放类中的属性和方法,假设内存地址为0x11。则会把对象的内存地址赋值给p1,所以p1是引用对象,内存地址指向堆中的真正的对象,然后给age和name赋值,这里会先找到p1,然后很具p1指向的堆的内存地址,找到age和name属性,其中name是字符串类型,所以赋值时先在方法区中创建一个常量池,将字符串内容放到常量池中,然后从常量池中获取数据给name赋值:

 

下一步会执行调用show方法,则会在栈中给show方法分配一个栈帧:

 

然后执行完show方法,则会将show方法出栈,之后main方法也执行完毕,则main方法也会出栈,程序执行完毕。

 

(1)JVM执行Java程序的流程:

从.class字节码文件开始 ,当点击Test类中运行按钮时。字节码文件会生成,生成后由类加载工具类将其class文件加载到运行时数据区,然后经过运行时数据区。再经过执行引擎,Java程序才会返回运行结果。

(2)字节码文件在被加载到内存中的方法区后,那接下来就该去执行字节码文件了,程序得执行在代码层面来讲。必须要找到程序的执行入口(main()方法),所以会调用main()方法,所以接下来就得进行main()的压栈操作,其实就是将main()函数放到栈中。

(3)依据Student student = new Student();堆内存中的堆空间创建,引入具体的属性,返回给栈内存中的对象引用。

七、使用面向对象思想完成人洗衣服操作

 

 

 





标签:p1,Java,对象,事物,笔记,学习,main,方法,属性
From: https://www.cnblogs.com/wgh123/p/17350632.html

相关文章

  • 【动手学深度学习】第四章笔记:多层感知机、权重衰减、暂退法、数值稳定性和模型初始化
    为了更好的阅读体验,请点击这里4.1多层感知机4.1.1隐藏层由于仿射变换中的线性是一个很强的假设,因此导致了线性模型可能会不适用。线性意味着单调假设:任何特征的增大都会导致模型输出的增大或者模型输出的减小。但是违反单调性的例子比比皆是。除此之外,分类任务中,仅依托像素......
  • java中的容器
    java中的容器(1)List接口:java.util.List<>实现:java.util.ArrayList<>:变长数组java.util.LinkedList<>:双链表函数:add():在末尾添加一个元素clear():清空size():返回长度isEmpty():是否为空get(i):获取第i个元素set(i,val):将第i个元素设置为val代码:List<Integer>li......
  • selenium笔记之多窗口
    在使用selenium中,会经常遇到,校验弹窗,或者是多标签之类的,会发现在当前webdriver中.查找想检查的元素,比如弹窗上某个元素就查找不到了那么就出现了一个句柄的概念在Selenium中,可以使用`driver.window_handles`方法获取当前浏览器中所有窗口的句柄。该方法返回一个列表,其中包含每......
  • JavaWeb回顾与小结(三)
    请求与响应概述架构BS架构:Browser/Server,浏览器/服务器架构模式.客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端维护方便,体验一般CS架构:Client/Server,客户端/服务器架构模式开发,维护麻烦,体验不错请求(HttpServletRequest):获取请求数据响应(HttpServletRes......
  • 一线架构师实践指南读书笔记
    重大风险:功能质量约束高层切分:借助鲁棒图,初步识别功能别后的职责,就可以规划高层切分的具体方式分析和综合是思维方向相反的过程。一般是先分析后综合,没有分析就不能综合,没有综合,也只是片面的分析通过系统切分,虽然无法降低复杂性,当可以控制复杂性分层式概念架构:逻辑层物理层......
  • 打卡3(Java)
    image.pnimportjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringa=sc.next(),b=sc.next(),c=sc.next();Stringres;if("vertebrado".equals(a......
  • Java中为什么重写equals()也需要重写hashCode()?
    所有类默认继承Object类先看一下Object源码packagejava.lang;publicclassObject{ //默认调用本地的hashcode()方法根据内存地址生成hash值避免不了哈希冲突 publicnativeinthashCode(); //默认调用的equals方法比较的是'=='比较 //基本类型比较的是两者的值是否......
  • 红黑树笔记
    (本人笔记潦草,估计只有我能看懂,保存给自己看,不代表肯定让其他人能理解)附上源码笔记://SPDX-License-Identifier:GPL-2.0-or-later/*RedBlackTrees(C)1999AndreaArcangeli<[email protected]>(C)2002DavidWoodhouse<[email protected]>(C)2012Mi......
  • KMP算法学习笔记
    总算把这个东西搞懂了......KMP是一个求解字符串匹配问题的算法。这个东西的核心是一个\(next\)数组,\(next_i\)表示字符串第\(0\simi\)项的相同的前缀和后缀的最大长度。这里的前缀和后缀概念略有不同,如DUCK的前缀为D,DU,DUC,后缀为K,CK,UCK,不包含DUCK本身。再举一个例子......
  • 拉格朗日插值学习笔记
    这个算法的用途是,给出\(n\)个点,第\(i\)个点为\((x_i,y_i)\),它可以找出一个\(n-1\)次的多项式\(f(x)\),以便求出\(x\)值为其他情况。当然也是可以用来整活的,可以构造一些奇奇怪怪的多项式坑人。首先这个多项式存在是显然的,然后我们求它的方式是一个构造。我们考虑跟中国剩余......