JavaSE(上)-Day7

JavaSE(上)-Day7

  • 类和对象
  • 封装
  • private
  • this
  • 构造方法
  • 标准JavaBean
  • 对象的内存图
    • 执行Test类main方法生成一个User对象的内存过程
  • 基本数据类型和引用数据类型的区别
  • this的内存原理
  • 成员变量和局部变量区别

类和对象

  1. 类是设计图纸,对象是真正的实例
  2. 定义一个类后,就可以用 类名 对象名 = new 类名();创建一个对象
  3. 通过对象名.属性; 获取属性值, 通过对象名.方法名(…); 执行方法;
  4. 建议类名使用大驼峰命名法,见名知意
  5. 类中可以有很多个class类,但是只能由一个public修饰的class类,且public修饰的类名必须和文件名保持一致
  6. 类中定义的属性完整格式是 修饰符 数据类型 属性名 = 值; 在没有显式赋值时,属性是有默认值的,参考数组的默认值

封装

  1. 封装告诉我们如何正确的设计对象的属性和方法
  2. 对象是谁,就要封装他的数据,提供他的行为方法

private

  1. private是私有访问修饰符
  2. private修饰的成员只可以在本类中被访问
  3. private修饰的成员如果想要外界使用,需要对应的getter,setter方法,用于获取属性和设置属性值
  4. private为封装的对象提高了安全性

this

  1. this可用于区分成员变量和局部变量 this.成员变量是类的属性,局部变量是方法中的变量
  2. 局部变量的优先级高于成员变量

构造方法

  1. 构造方法是在创建对象的时候,由虚拟机调用的,为成员变量初始化赋值
  2. 构造方法在不写的时候,会有一个隐式的无参构造方法
  3. 构造方法一旦显式定义,不会再提供隐式的无参的构造方法,需要显式定义

标准JavaBean

  1. 类名见名知意
  2. 类名的属性用private修饰
  3. 设置对应的getter和setter方法
  4. 定义无参和全参构造方法
  5. 追加其他必要的方法

对象的内存图

  1. JDK8之前,JVM中的堆空间后跟着方法区
  2. JDK8后,JVM中的堆空间后方法区被去掉,设计出一块独立空间元空间,方法区的一部分功能划分给堆,一部分划分给元空间
  3. 字节码文件运行时,会进入元空间运行,临时存储
  4. 元空间会存储字节码文件的信息,包括了成员变量和成员方法

执行Test类main方法生成一个User对象的内存过程

  1. 执行有main方法的Test类,Test.class进入元空间临时存储
  2. main方法进栈执行
  3. User.class进入元空间临时存储
  4. 栈中开辟一个空间,名称为user
  5. 堆中开辟一个空间,拷贝元空间中User.class的成员变量和成员方法的地址
  6. 成员变量先默认初始化,整数为0,字符串为null等
  7. 成员变量然后显示初始化,如果成员变量有直接赋值操作
  8. 最后构造函数初始化成员变量
  9. 完成后,将开辟空间的地址回传给栈中user存储
  10. 打印user,显示的是地址值
  11. user.方法名() 过程是通过地址,向堆中找方法的地址,找到元空间对应的类中的方法,让方法进栈执行,执行完毕出栈
  12. 当main方法结束后,栈中的变量也随之消失,堆中的对象没有任何变量被指向,也会作为垃圾被回收
  13. 定义多个User时,字节码文件只会加载一次

基本数据类型和引用数据类型的区别

  1. 栈中基本数据类型存储的是真正的值,引用数据类型存储的是地址
  2. 基本类型给其他基本类型赋值就是真正的值,引用数据类型给其他引用数据类型赋值是地址,指向同一个堆内存空间

this的内存原理

this表示方法调用者的地址值

成员变量和局部变量区别

不同点成员变量局部变量
定义位置不同方法外类中方法中
内存存储位置不同堆内存栈内存
生命周期不同随对象创建和消失随方法调用创建和消失
初始化不同有默认值无默认值,使用需赋值
作用域整个类方法中有效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【联邦学习贡献评估——联邦学习优化】

1. 模型复用 贡献评估往往需要计算不同参与方组合的数据价值, 然而模型相关的价值度量指标, 比如测试准确率, 需要基于数据重新训练并评测模型, 这导致了高昂的数据价值度量代价. 为了避免重复训练联邦模型的代价, 考虑复用全体参与方组合下训练联邦模型时各参与方的梯度更新,…

【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景

1 场景描述 对于有两个3GPP无线接入网服务的大面积农田和农场,物联网设备可以通过NTN和TN接入网同时受益于5G系统的双转向数据连接能力。   在这个用例中,我们有一个广域的农业自动化应用系统来控制农业车辆,例如,一个装有数百个…

大模型提示学习样本量有玄机,自适应调节方法好

引言:探索文本分类中的个性化示例数量 在自然语言处理(NLP)领域,预测模型已经从零开始训练演变为使用标记数据对预训练模型进行微调。这种微调的极端形式涉及到上下文学习(In-Context Learning, ICL)&…

leetcode代码记录(删除字符串中的所有相邻重复项

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成…

LeetCode_30_困难_串联所有单词的子串

文章目录 1. 题目2. 思路及代码实现详解(Python)2.1 滑动窗口 1. 题目 给定一个字符串 s s s 和一个字符串数组 w o r d s words words。 w o r d s words words 中所有字符串 长度相同。 s s s 中的 串联子串 是指一个包含 w o r d s words words …

Leetcode 3081. Replace Question Marks in String to Minimize Its Value

Leetcode 3081. Replace Question Marks in String to Minimize Its Value 1. 解题思路2. 代码实现 题目链接:3081. Replace Question Marks in String to Minimize Its Value 1. 解题思路 这一题其实感觉还是有点难的,主要一开始确实走了弯路&#x…

Python 异步编程(Async/Await)

Python 中的异步编程是一种编程模式,它允许程序在等待 I/O 操作(如网络请求、文件读写等)的同时继续执行其他任务,而不会阻塞整个程序。这种方式可以提高程序的效率和响应性。 在 Python 中,异步编程的核心概念是使用…

数据结构:9、二叉树

在上堆中已经介绍了什么是二叉树,所以这里直接写二叉树实现。 1、二叉树的构建 二叉树的构建第一步肯定是初始化,也就是构建这棵树,这里是利用前序遍历构建的,因为这里是利用链表形式创建的二叉树,所以这里就是和之前…

在java中当main方法执行完,堆内存会自己释放内存吗?(附解释)

在Java中,堆内存中的对象由Java虚拟机(JVM)的垃圾回收器自动进行内存管理和释放。当一个对象不再被引用时,垃圾回收器会在适当的时机自动回收该对象所占用的内存空间。这意味着在main方法执行完毕后,堆内存中的对象会被…

redis常用五大数据类型

目录 Key 字符串String 常用命令 列表List 常用命令 集合Set 常用命令 Hash哈希 键值对集合 有序集合Zset Redis新数据类型 Key set key value...添加keykeys *查看当前库中所有的keyexist key该key是否存在type keykey的类型del key删除keyunlink key根据value选择非阻塞…

Tomcat的Host Manager页面403的原因和解决办法

目录 背景 原因: 解决方案 背景 一直报错 403 Access Denied You are not authorized to view this page.By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, youll need to…

C++ UML类图

参考文章: (1)C UML类图详解 (2)C基础——用C实例理解UML类图 (3)C设计模式——UML类图 (4)[UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之…

自然语言处理与图像描述

自然语言处理(NLP)与图像描述是两个相互关联且互补的领域。自然语言处理主要涉及计算机和人类(自然)语言之间的相互作用,包括文本分析、理解、生成和翻译等。而图像描述则是指使用自然语言来表达图像内容的过程&#x…

剑指offer面试题40 数组中只出现一次的数字

考察点 异或运算,与运算知识点 题目 分析 本题目要求数组中只出现一次的俩个数字,并且要求O(1)时间复杂度和空间复杂度。试想一下如果只有一个数字出现一次,那么针对全部元素做异或运算就可以了,因为相同元素异或为0。现在有俩…

2 使用GPU理解并行计算

2.1 简介 本章旨在对并行程序设计的基本概念及其与GPU技术的联系做一个宽泛的介绍。本章主要面向具有串行程序设计经验,但对并行处理概念缺乏了解的读者。我们将用GPU的基本知识来讲解并行程序设计的基本概念。 2.2 传统的串行代码 绝大多数程序员是在串行程序占据…

手撕算法-二叉树的最大深度

描述:分析:求以节点root为根节点的树的最大深度。可以进行拆分:root为根节点的树的最大深度 max(左子树的最大深度, 右子树最大深度)1 截止条件是节点为空,深度为0; 代码: public int maxDep…

HarmonyOS如何创建及调用三方库

介绍 本篇主要向开发者展示了在Stage模型中,如何调用已经上架到三方库中心的社区库和项目内创建的本地库。效果图如下: 相关概念 Navigation:一般作为Page页面的根容器,通过属性设置来展示页面的标题、工具栏、菜单。Tabs&#…

Java + sa-token统一身份认证开发笔记

官网地址:Sa-Token 统一认证服务端 直接用的官网的demo,稍加改动,因为要前后端分离,加了一个H5Controller,官网也有详细介绍,这一部分不难,照着做就行了 配置文件: # Sa-Token 配…

Java反射获取类信息的方式

获取Java类信息的方式有以下几种: 通过对象实例获取类信息: 可以通过对象实例的getClass()方法获取该对象所属类的Class对象。 通过类字面值获取类信息: 可以使用类字面值来获得类的Class对象。例如:String.class。 通过Class.for…

如何注册澳大利亚公司 注册澳大利亚公司流程 注册澳大利亚公司条件

澳大利亚注册公司的优势: 1、无需注册资本,手续简单方便可直接进行注册。 2、公司注册程序简单,提供公司名称、及股份比例即可, 3、税 务机关免费上门咨询服务,贸易局提供免费的信息。 4、在澳大利亚设立公司&…