JavaSE(上)-Day7
JavaSE(上)-Day7
- 类和对象
- 封装
- private
- this
- 构造方法
- 标准JavaBean
- 对象的内存图
- 执行Test类main方法生成一个User对象的内存过程
- 基本数据类型和引用数据类型的区别
- this的内存原理
- 成员变量和局部变量区别
类和对象
- 类是设计图纸,对象是真正的实例
- 定义一个类后,就可以用 类名 对象名 = new 类名();创建一个对象
- 通过对象名.属性; 获取属性值, 通过对象名.方法名(…); 执行方法;
- 建议类名使用大驼峰命名法,见名知意
- 类中可以有很多个class类,但是只能由一个public修饰的class类,且public修饰的类名必须和文件名保持一致
- 类中定义的属性完整格式是 修饰符 数据类型 属性名 = 值; 在没有显式赋值时,属性是有默认值的,参考数组的默认值
封装
- 封装告诉我们如何正确的设计对象的属性和方法
- 对象是谁,就要封装他的数据,提供他的行为方法
private
- private是私有访问修饰符
- private修饰的成员只可以在本类中被访问
- private修饰的成员如果想要外界使用,需要对应的getter,setter方法,用于获取属性和设置属性值
- private为封装的对象提高了安全性
this
- this可用于区分成员变量和局部变量 this.成员变量是类的属性,局部变量是方法中的变量
- 局部变量的优先级高于成员变量
构造方法
- 构造方法是在创建对象的时候,由虚拟机调用的,为成员变量初始化赋值
- 构造方法在不写的时候,会有一个隐式的无参构造方法
- 构造方法一旦显式定义,不会再提供隐式的无参的构造方法,需要显式定义
标准JavaBean
- 类名见名知意
- 类名的属性用private修饰
- 设置对应的getter和setter方法
- 定义无参和全参构造方法
- 追加其他必要的方法
对象的内存图
- JDK8之前,JVM中的堆空间后跟着方法区
- JDK8后,JVM中的堆空间后方法区被去掉,设计出一块独立空间元空间,方法区的一部分功能划分给堆,一部分划分给元空间
- 字节码文件运行时,会进入元空间运行,临时存储
- 元空间会存储字节码文件的信息,包括了成员变量和成员方法
执行Test类main方法生成一个User对象的内存过程
- 执行有main方法的Test类,Test.class进入元空间临时存储
- main方法进栈执行
- User.class进入元空间临时存储
- 栈中开辟一个空间,名称为user
- 堆中开辟一个空间,拷贝元空间中User.class的成员变量和成员方法的地址
- 成员变量先默认初始化,整数为0,字符串为null等
- 成员变量然后显示初始化,如果成员变量有直接赋值操作
- 最后构造函数初始化成员变量
- 完成后,将开辟空间的地址回传给栈中user存储
- 打印user,显示的是地址值
- user.方法名() 过程是通过地址,向堆中找方法的地址,找到元空间对应的类中的方法,让方法进栈执行,执行完毕出栈
- 当main方法结束后,栈中的变量也随之消失,堆中的对象没有任何变量被指向,也会作为垃圾被回收
- 定义多个User时,字节码文件只会加载一次
基本数据类型和引用数据类型的区别
- 栈中基本数据类型存储的是真正的值,引用数据类型存储的是地址
- 基本类型给其他基本类型赋值就是真正的值,引用数据类型给其他引用数据类型赋值是地址,指向同一个堆内存空间
this的内存原理
this表示方法调用者的地址值
成员变量和局部变量区别
| 不同点 | 成员变量 | 局部变量 |
|---|---|---|
| 定义位置不同 | 方法外类中 | 方法中 |
| 内存存储位置不同 | 堆内存 | 栈内存 |
| 生命周期不同 | 随对象创建和消失 | 随方法调用创建和消失 |
| 初始化不同 | 有默认值 | 无默认值,使用需赋值 |
| 作用域 | 整个类 | 方法中有效 |
相关文章:
JavaSE(上)-Day7
JavaSE(上)-Day7 类和对象封装privatethis构造方法标准JavaBean对象的内存图执行Test类main方法生成一个User对象的内存过程 基本数据类型和引用数据类型的区别this的内存原理成员变量和局部变量区别 类和对象 类是设计图纸,对象是真正的实例…...
记录一下在Pycharm中虚拟环境的创建
如果在Pycharm中要新建一个虚拟环境,那你可以在Terminal中选择Command Prompt,在这里面执行相关命令 一、安装了Anaconda,创建虚拟环境 当你使用解释器是Anaconda提供的时,你可以使用conda命令执行,见以下操作&#x…...
Python从入门到精通秘籍九
一、Python中文件编码概念 在Python中,文件编码指的是将文本内容转换为字节序列的过程。不同的编码方式使用不同的字符集和字节表示形式。下面是一个示例代码: # 写入文本到文件 text "你好,世界!" with open("…...
善于利用window挂在全局变量
开发过程成中遇到一个奇怪的问题,打开一个echats图表之后,关闭echarts图再进入其他页面页面会报错提示 $(...).draggble not a function经过一步步定位,发现echats图是通过后端获取js、css文件然后在本地绘制而成。而获…...
《C缺陷和陷阱》-笔记(5)
目录 一、整数溢出 溢出 如何防止溢出 二、为函数main提供返回值 连接 一、什么是连接器 连接器工作原理 三、声明与定义 四、命名冲突与static 修饰符 statia 一、整数溢出 溢出 C语言中存在两类整数算术运算,有符号运算与无符号运算。 在无…...
【数字图像处理matlab系列】保存图像
【数字图像处理系列】保存图像imwrite函数 使用函数imwrite可以将图像保存到本地上,该函数的语法为 imwrite(image_data, filename)其中,image_data是要写入的图像数据,可以是一个矩阵或一个三维数组(对于彩色图像),filename是要写入的文件名,可以包含路径信息。例如,…...
八股文三(Spring、Spring Cloud Alibaba)
Spring篇 什么是Spring Spring是个轻量级的框架,他有两大内核分别是IOC、AOPIOC是什么 * 依赖注入和控制反转,它是一种思想,创建对象不是直接new出来,而是交给IOC容器,由容器去创建进行管理,这就是控制反…...
一文带你详解天池工业数据集
人工智能是国家战略性新兴产业,制造业是国民经济的主体,随着人口红利的消失,加强设备自动化改造,提高生产自动化程度,减小劳动强度,改善作业环境,已经成为制造业的普遍共识。天池大赛开放出一批…...
08 龙芯平台openstack部署搭建-neutron-controller部署
一、创建neutron相关数据库、服务凭证和API端点 1.创建neutron数据库,授予合适的访问权限 mysql -uroot -ploongson -e “CREATE DATABASE neutron;” mysql -uroot -ploongson -e “GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’‘localhost’ IDENTIFIED B…...
JAVA 100道题(6)
6.创建一个表示矩形的类,包括宽度和高度属性,以及计算面积和周长的方法。 下面是一个简单的Python类,表示矩形,包含宽度和高度属性,以及计算面积和周长的方法: python复制代码 class Rectangle: def __ini…...
Leetcode面试经典150题
数组字符串 合并两个有序数组 思路 类似于归并排序,对两个有序数组进行合并即可,但是空间复杂度是O(nm); 代码 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int[] ans new int[n m];int i 0, j 0;int cnt 0;…...
王者荣耀使用的UDP通信,十几年编程没用过的协议
缘起 最近在查阅moba相关的资料时,看到了一篇王者荣耀的研发同学的技术分享,从文章中了解到王者荣耀的通信方式是UDP通信,回想到整个职业生涯,貌似并没有用过,今天特地整理下。 udp技术细节 udp协议 UDP协议叫做用…...
HiveQL详解
文章目录 前言一、数据定义语言(DDL)1. 数据库操作1.1 创建数据库1.2 删除数据库1.3 更改数据库1.4 使用数据库 2. 连接器操作2.1 创建连接器2.2 删除连接器2.3 修改连接器 3. 表操作3.1 创建表3.1.1 内部表与外部表3.1.1.1 内部表3.1.1.2 外部表3.1.1.3…...
Linux/Bizness
Enumeration nmap 用 nmap 扫描了常见的端口,发现对外开放了22,80,443 ┌──(kali㉿kali)-[~] └─$ nmap 10.10.11.252 Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-08 01:21 EST Nmap scan report for 10.10.11.252 Host is up (0.36s latency). Not…...
mysql 数据库 增删改查 基本操作
目录 一 SQL 详细介绍 (一)SQL 分类 (二) SQL 语言规范 (三)数据库对象和命名 1,数据库的组件(对象): 2,命名规则: (四) SQL…...
计算机网络——物理层(编码与调制)
计算机网络——编码与调制 基带信号和宽带信号编码与调制数字数据编码为数字信号非归零编码归零编码反向不归零编码曼彻斯特编码差分曼彻斯特编码4B/5B编码 数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号 我们之前讲了物理层的一些基础知识和两个准则&a…...
PHP魔术方法详解
__construct() 构造函数用于初始化新创建的对象。PHP 5 之后不推荐使用类名作为构造函数。 class Person {public $name;public $age;public function __construct($name, $age) {$this->name $name;$this->age $age;} }$person new Person("Alice", 30);…...
游戏 AI 反作弊|内附解决方案详情!
我们提出使用在游戏中广泛存在的回放日志数据,重构出玩家当局的表现。在回放 日志数据中,我们构建了玩家的时序行为数据,并基于该时序行为数据,分别搭建 了透视和自瞄外挂检测系统,该方法和系统可广泛应用于各种在线…...
elementUI组件库样式修改整理
一、整体修改样式注意点 避免!important,能使用深度选择器就用深度选择器主题色使用变量,方便后期统一修改,最好新建一个单独的文件,专门用于定义公共变量样式文件尽量放在一个文件里,方便后期维护 二、单独element …...
还是了解下吧,大语言模型调研汇总
大语言模型调研汇总 一. Basic Language ModelT5GPT-3LaMDAJurassic-1MT-NLGGopherChinchillaPaLMU-PaLMOPTLLaMABLOOMGLM-130BERNIE 3.0 Titan 二. Instruction-Finetuned Language ModelT0FLANFlan-LMBLOOMZ & mT0GPT-3.5ChatGPTGPT-4AlpacaChatGLMERNIE BotBard 自从Cha…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
