【从零开始学习JAVA | 第四篇】标准的JavaBean类的构建

news2024/9/24 7:13:47

目录

前言: 

 构造方法:

构造标准JavaBean类:

对象内存图:


 

前言: 

本片会详细的介绍JAVA中JavaBean类的手动构建,IDEA为我们提供的快捷键生成JAVA        bean的方式,以及介绍一个可以快速生成javaBean类的插件ptg。在最后我们还会对java中的内存图做介绍,帮助我们更加深度的认识JavaBean类。

我们先介绍一下java一个类中最关键的的部分:构造方法 

 构造方法:

            构造方法也叫构造器,构造函数。

作用:在创建对象的时候给成员变量进行初始化的。

语法:
        

public class student{

        修饰符 类名(参数)
        {

            方法体;

        }

}

特点:

  • 方法名与类名相同,大小写也要一致。
  • 构造函数没有返回值类型,连void也没有。
  • 没有返回值,(不能由return 带回结果数据)。

执行时机:

  • 创建对象的时候由虚拟机进行调用,不能手动调用构造方法。
  • 每创建一次对象,就会调用一次构造方法。 

如果我们自己不写任何的空参构造方法,虚拟机会自己帮我们实现一个空仓构造方法。 

注意事项:

  • 如果没有定义构造方法,系统将给出一个默认的无参构造类型的构造方法。
  • 如果定义了构造方法,系统将不再提供默认的构造方法。

构造方法也可以进行重载,我们有参构造无参构造本质上就是对构造函数的重构。 

构造标准JavaBean类:

注意点:

  1. 类名需要见名知意。
  2. 成员变量用private修饰(私有化类的成员变量,通过提供set或者get接口来为该成员变量进行读写权限控制)
  3. 至少提供两个构造方法
  • 无参构造方法
  • 带全部参数的构造方法 

     4.成员方法:

  • 提供每一个成员变量对应的set以及get函数
  • 如果由其他行为,需要补全。

 例如我们构造一个含有成员变量name和age的person类,并提供接口对其实现可读可写功能:
 

package com.itheima.demo1;

public class person {
  
        private String name;
        private int age;

        
        public person(){};
        
        public person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

       
}

而除了手搓构造函数之外,java也给我们提供了两个快捷键,一键生成构造函数:

  • Alt  +  insert
  • Alt  +  Fn  +  insert

之后点击构造函数

 此时就进入了快捷构造界面,选中谁就会以谁作为参数完成构造函数。我们一般是将所有的成员变量都选作为参数,因此我们就Ctrl  +  A来选中所有成员变量,然后点击下面的构造,这样就实现了快速完成构造函数。

如果我们要快速为每个成员变量提供get和set接口,我们就选中Getter和Setter来快速实现

 Ctrl  +  A  选中所有变量之后,点击确定就可以实现快速构建成员变量的get和set函数。

但这也比较麻烦,我们可以在插件市场下载ptg插件,安装之后右键点击选中Ptg To  JavaBean。

它可以一键生成一个标准javaBean类。 

Java内存分布:

java内存分配介绍:

在Java中,内存被划分为以下几个区域:

  • 1. 栈(Stack):所有的基本数据类型和对象引用变量都是存储在栈上的。栈结构具有先进后出的特点。当一个方法被调用时,会在栈上创建一个栈帧,用于存储方法的参数和局部变量,当方法执行完成后,这个栈帧会被销毁。
  • 2. 堆(Heap):所有的对象实例都是存储在堆上的。堆内存是由Java虚拟机自动管理的,使用垃圾回收器来回收没有被引用的对象实例。
  • 3. 方法区(Method Area):存储类的信息、常量、静态变量等。它是所有线程共享的内存,用于存储所有使用的类和其字段、方法等信息。
  • 4. 本地方法栈(Native Method Stack):与栈类似,但是存储的是Java调用本地方法时的参数和局部变量。和Java栈不同,本地方法栈中的函数不是Java方法,而是需要使用本地语言(如C/C++)编写的本地代码。
  • 5. 寄存器(Register):最快的存储区域,存储的是Java虚拟机执行的指令和数据

需要注意的是,栈和堆的大小可以通过JVM参数来调整,并且不同的JVM实现可能会有不同的内存管理策略。

        在Java中,寄存器被用来存储JVM的内部数据,如指令、栈顶指针和局部变量等。这些寄存器并不是Java程序在实际执行时的物理存在,而是由JVM在内存中模拟的虚拟寄存器,也就是虚拟机栈中的局部变量表和操作数栈。

        需要注意的是,JVM会使用CPU内部的寄存器来加速Java程序的执行,这些寄存器被称为物理寄存器。但这些物理寄存器并非由Java程序直接使用,而是由JVM和操作系统等底层软件进行管理和调用。因此,一般来说,我们谈到寄存器时,是指Java虚拟机中的虚拟寄存器。

 总结:

        虽然IDEA也给我们提供了快捷的方式来快速构建构造函数以及set和get函数,但是我们也要自己学会手动构建一个JavaBean类。

今天的内容到这里就结束了,感谢大家的阅读。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

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

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

相关文章

OTT 的快速频道切换(FCC)

FCC(Fast Channel Change)快速频道切换是一种由FCC服务器下发特制的以I帧为起始的单播节目流来提升频道切换时间的方法, 通过在网络中部署FCC服务,可以回避等待I帧时间与IGMP交互时间,提升I帧传输时间,从而提高频道切换…

chatgpt赋能python:Python构造和析构:介绍和实例

Python 构造和析构:介绍和实例 当你编写 Python 程序时,你可能会注意到一个名为构造函数和析构函数的概念。这些函数可以在创建和删除一个对象时自动执行一些操作。本文将深入介绍 Python 中的构造和析构概念。 构造函数 Python 使用一种名为 __init_…

pkg打包nestjs项目问题点整理

打包运行过程中的警告 Warning Cannot include directory %1 into executable. The directory must be distributed with executable as %2. %1: node_modules\puppeteer.local-chromium %2: path-to-executable/puppeteer 解决方法: 警告大义为在路径如%1的某个目…

chatgpt赋能python:用Python进行nan值的查询

用 Python 进行 nan 值的查询 在数据分析和机器学习的过程中,我们经常会遇到 NaN 值,NaN 是代表不是数字的特殊值,通常意味着在数据中有缺失或者不可识别的数据。由于机器学习等技术需要处理的数据来源繁杂,有时候我们在数据处理…

第八章 总结【编译原理】

第八章 总结【编译原理】 前言推荐第八章 总结8.1 符号表的组织与作用8.1.1符号表的作用8.1.2符号表的组织方式 8.2 整理与查找8.2.1线性表8.2.2 对折查找与二叉树8.2.3杂凑技术 8.3 名字的作用范围8.3.1FORIRAN的符号表组织8.3.2Pascal的符号表组织 8.4 符号表的内容 最后 前言…

python基础学习4【Matplotlib、散点图、折线图绘制、读取存储不同数据源的数据(csv、txt、excel)、编码】

Matplotlib数据可视化基础(绘图基础语法和常用参数) 创建画布与子图 plt.figure()、plt.title()、plt.savefig()保存绘制的图、plt.show() 展示: plt.legend():创建图例 figure.add_subplot():向figure添加一个Axes作为一subp…

极致呈现系列之:Echarts仪表盘的光影奇迹

目录 仪表盘介绍仪表盘的基本结构Echarts仪表盘的常用数据配置项Echarts仪表盘的常用样式配置项创建基本的仪表盘自定义仪表盘样式应用场景 仪表盘介绍 仪表盘通常模拟了传统汽车仪表盘的样式,包括刻度、指针、表盘等元素,用于显示单一指标或数据。它能…

【JavaWeb】前端之HTML基础认知

目录 1、第一个HTML程序 1.1、创建第一个HTML文件 1.2、HTML文件的基本结构 2、HTML常见标签 2.1、注释标签 2.2、标题标签:h1-h6 2.3、段落标签:p 2.4、换行标签:br 2.5、格式化标签 2.6、图片标签:img 2.7、超链接标签&…

vue源码理解之模板编译和组件化

一:模板编译 1、模板编译的主要目标是将模板(template)转换为渲染函数(render) template > render() 2、模板编译必要性 Vue 2.0需要用到VNode描述视图以及各种交互,手写显然不切实际,因此用户只需编写类似HTML代码的Vue模板,…

扩展卡尔曼滤波在目标跟踪中的应用(2)

上一节的内容中,我们对于扩展卡尔曼EKF算法进行了讲解,今天我们对上一节的内容进行仿真。 话不多说,开整!!! 仿真背景 我们以一个目标的位置信息为例,其状态方程如下所示: X k 0…

黑马程序员前端 Vue3 小兔鲜电商项目——(二)初始化项目

文章目录 了解 Vue3初始化项目创建项目启动项目添加目录Git 管理项目jsconfig.json 配置别名路径 ElementPlus 引入安装配置按需导入测试组件 定制 elementPlus 主题安装sass准备定制化的样式文件自动导入配置 Axios 安装并简单封装安装 Axios基础配置封装请求函数并测试 路由整…

数据血缘分析

引入 做过大数据或者接触过数仓的同学,相信都有听到过数据治理、血缘分析的专业术语。不知道大家有没有思考过以下几个问题: 1、什么是血缘分析?主要分析什么东西? 2、为什么要做血缘分析,主要是为了解决什么痛点?做出来之后有什么价值?如何衡量这些价值? 3、如何做血…

mysql存储过程与函数

文章目录 存储过程概述:创建存储过程调用存储过程存储函数的使用对比存储函数和存储过程存储过程和函数的查看、修改、删除查看修改删除 存储过程概述: 它的思想很简单,就是一组经过 预先编译 的 SQL 语句 的封装。 执行过程:存储过程预先存储在 MySQL …

相对路径与绝对路径(以javaweb项目的html文件为例)

相对路径和绝对路径是用于在文件系统中定位文件或目录的两种方式。 1、两者的概念 绝对路径:是指文件或目录在文件系统中的完整路径,从文件系统的根目录开始一直到文件的具体位置。绝对路径所包含的所有目录都是从根目录开始的,因此&#x…

vue源码理解之Vue批量异步更新和虚拟DOM和Diff算法

一:异步更新队列 1、Vue高效的秘诀是一套批量、异步的更新策略 概念: 事件循环 事件循环:浏览器为了协调事件处理、脚本执行、网络请求和渲染等任务而制定的一套工作机制。 宏任务 代表一个个离散的、独立工作单元。浏览器完成一个宏任务&…

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。 战略目标&#x…

Java 从入门到精通(续集6)——集合框架

Java 从入门到精通(续集6)——集合框架 在 Java 中,集合是一种用于存储对象的容器,可以方便地进行增删改查等操作。Java 提供了一套完整的集合框架,并且在 Java 5 中引入了泛型,使得集合变得更加灵活。 一、…

Redis哨兵部署

Redis哨兵 单机安装部署 yum install epel-release -yYum install redis -yMkdir /root/redisCd /root/rediscp /etc/redis.conf .cp redis.conf redis_6379.confcp redis.conf redis_6380.confcp redis.conf redis_6381.conf vim redis_6379.conf 1.配置redis.conf文件中的…

极致呈现系列之:Echarts水球图的灵动魅力

目录 水球图简介什么是水球图水球图的特点和用途水球图的安装和引入水球图的常用配置项创建基本的水球图自定义水球图样式水球图中的shape属性使用SVG代码自定义水球图水球图简介 什么是水球图 水球图是一种通过一个圆形的容器来展示数据的图表类型。它以水球作为图形的基本元…

【C++篇】封装类和对象

友情链接:C/C系列系统学习目录 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的…