JavaSE学习笔记之内部类、枚举类和基本类型包装类

今天我们继续复习Java相关的知识,和大家分享有关内部类等方面的知识,希望大家喜欢。


目录​​​​​​​

内部类

成员内部类

​编辑

静态内部类

局部内部类

匿名内部类

枚举类

定义方法

基本类型包装类

自动装箱和拆箱


内部类

成员内部类

成员内部类和成员变量和成员方法一样,都是属于对象的,也就是说我们必须存在外部对象,才能创建内部类的对象。

public class PleaSure {class pleasure{public void display() {System.out.println("这是内部类的输出函数display");}}
}
public class Main {public static void main(String[] args) {// 首先创建外部类的一个实例PleaSure outer = new PleaSure();// 然后使用外部类的实例来创建内部类的实例PleaSure.pleasure inner = outer.new pleasure();// 调用内部类的方法inner.display();}}

静态内部类

静态内部类其实就和类中的静态变量和静态方法一样,是属于类拥有的,我们可以直接通过`类名加上一个点去访问。

public class PleaSure {static class pleasure{public void display() {System.out.println("这是内部类的输出函数display");}}
}
public class Main {public static void main(String[] args) {PleaSure.pleasure inner = new PleaSure.pleasure();// 调用内部类的方法inner.display();}}

局部内部类

局部内部类是Java中内部类的一种,它定义在外部类的某个方法或代码块内部,并且其作用域被限定在定义它的方法或代码块中,可以类比局部变量来理解。

public class OuterClass {  private int outerField = 100;public void outerMethod(){  final int localVar = 200; class LocalInnerClass {  public void innerMethod() {  System.out.println("Access outer field: " + outerField);  System.out.println("Access local variable: " + localVar);  }  }LocalInnerClass localInner = new LocalInnerClass();  localInner.innerMethod();  }  public static void main(String[] args) {  OuterClass outer = new OuterClass();  outer.outerMethod();  }  
}

匿名内部类

匿名内部类是Java中一种特殊的内部类形式,它允许你声明和实例化一个类,同时立即创建一个该类的实例,而无需显式地给该类命名。匿名内部类通常用于实现接口或继承一个类(特别是抽象类),并立即在其定义时创建该类的实例。

public interface newpleasure {void sayHello();
}
public class Main {public static void main(String[] args) {newpleasure greeting = new newpleasure() {@Overridepublic void sayHello() {System.out.println("Hello, World!");}};greeting.sayHello();}
}

枚举类

枚举类在Java中是一种特殊的数据类型,它提供了一种更强大、更安全和更易读的方式来定义一组固定的命名常量。枚举类是通过enum关键字来定义的,它是一组固定的常量值的集合,每个常量值代表一个特定的数据类型,类中的实例数量是有限的,且每个实例在编译时就已被确定,不能动态创建新的实例。每个枚举常量在枚举类中都是唯一的,且可以使用==操作符进行比较。此外,枚举类还提供了compareTo方法用于比较两个枚举常量的顺序。

定义方法

enum Season {  SPRING, SUMMER, AUTUMN, WINTER  
}  enum DayOfWeek {  MONDAY(1), TUESDAY(2), WEDNESDAY(3),  THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);  private int value;  DayOfWeek(int value) {  this.value = value;  }  public int getValue() {  return value;  }  
}

同样,如果我们想要设置和得到其中的value等,我们直接new并用万能的“点”调用get和set即可。

基本类型包装类

基本类型包装类将Java的八种基本数据类型byte、short、int、long、float、double、char、boolean封装为对象,从而允许这些基本类型以对象的形式参与面向对象编程。

其中的对应关系如下:

Byte:对应基本类型byte。

Short:对应基本类型short。

Integer:对应基本类型int。

Long:对应基本类型long。

Float:对应基本类型float。

Double:对应基本类型double。

Character:对应基本类型char。

Boolean:对应基本类型boolean。

private final int value;
public Integer(int value) {this.value = value;
}
public static void main(String[] args) {Integer i = 1;System.out.println(i + i);
}

自动装箱和拆箱

接下来的知识点也是面试中可能常考的一个知识点:那么为什么包装类型能直接使用一个具体值来赋值呢?其实依靠的是自动装箱和拆箱机制。

Integer i = 1;    //其实这里只是简写了而已
Integer i = Integer.valueOf(1);  //编译后真正的样子
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)   //Java为了优化,有一个缓存机制,如果是在-128~127之间的数,会直接使用已经缓存好的对象,而不是再去创建新的(面试常考)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);   //返回一个新创建好的对象
}

如果使用包装类来进行运算,或是赋值给一个基本类型变量,会进行自动拆箱。

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

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

相关文章

使用 Google 的 Generative AI 服务时,请求没有包含足够的认证范围(scopes)

题意&#xff1a; Google generativeai 403 Request had insufficient authentication scopes. [reason: "ACCESS_TOKEN_SCOPE_INSUFFICIENT" 问题背景&#xff1a; I have tried the simple POC for generativeai on its own to do generate_content and it works…

WPS点击Zotero插入没有任何反应

wps个人版没有内置vba&#xff0c;因此即便一下插件安装上了&#xff08;如Axmath&#xff0c;zotero&#xff09;&#xff0c;当点击插件的时候会出现“点不动”、“点击插件没反应的现象。至于islide一类的插件&#xff0c;干脆连装都装不上。 这就需要手动安装一下vba。 针…

Python酷库之旅-第三方库Pandas(017)

目录 一、用法精讲 41、pandas.melt函数 41-1、语法 41-2、参数 41-3、功能 41-4、返回值 41-5、说明 41-5-1、宽格式数据(Wide Format) 41-5-2、长格式数据(Long Format) 41-6、用法 41-6-1、数据准备 41-6-2、代码示例 41-6-3、结果输出 42、pandas.pivot函数 …

【单片机毕业设计选题24059】-太阳能嵌入式智能充电系统研究

系统功能: 系统由太阳能电池板提供电源&#xff0c; 系统上电后显示“欢迎使用智能充电系统请稍后”&#xff0c; 两秒钟后进入主页面显示。 第一行显示太阳能电池板输入的电压值 第二行显示系统输出的电压值 第三行显示采集到的太阳能电池板温度 第四行显示设置的太阳能…

回归损失和分类损失

回归损失和分类损失是机器学习模型训练过程中常用的两类损失函数&#xff0c;分别适用于回归任务和分类任务。 回归损失函数 回归任务的目标是预测一个连续值&#xff0c;因此回归损失函数衡量预测值与真实值之间的差异。常见的回归损失函数有&#xff1a; 均方误差&#xff…

【UNI-APP】阿里NLS一句话听写typescript模块

阿里提供的demo代码都是javascript&#xff0c;自己捏个轮子。参考着自己写了一个阿里巴巴一句话听写Nls的typescript模块。VUE3的组合式API形式 startClient&#xff1a;开始听写&#xff0c;注意下一步要尽快开启识别和传数据&#xff0c;否则6秒后会关闭 startRecognition…

004-基于Sklearn的机器学习入门:回归分析(下)

本节及后续章节将介绍机器学习中的几种经典回归算法&#xff0c;包括线性回归&#xff0c;多项式回归&#xff0c;以及正则项的岭回归等&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为下篇&#xff0c;将介绍多项式回归和岭回归等。 目录 2.3 多项式回归 2…

Point Cloud Library (PCL) for Python - pclpy 安装指南 (1)

以下所有的版本号务必按照说明安装。 1.安装 Python 3.6 https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe #或 百度网盘 2.确认 Python 版本为 3.6.x python #Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on…

给后台写了一个优雅的自定义风格的数据日志上报页面

highlight: atelier-cave-dark 查看后台数据日志是非常常见的场景,经常看到后台的小伙伴从服务器日志复制一段json数据字符串,然后找一个JSON工具网页打开,在线JSON格式化校验。有的时候,一些业务需要展示mqtt或者socket的实时信息展示,如果不做任何修改直接展示一串字符…

将有序数组转化成二叉搜索数

1 问题 将一个按照升序排列的有序数组&#xff0c;转换为一棵高度平衡二叉搜索树。本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 2 方法 采用递归的方法找到root结点&#xff0c;以及左子树和右子树。 代码清单 1 clas…

自动驾驶的规划控制简介

自动驾驶的规划控制是自动驾驶系统中的核心组成部分&#xff0c;它负责生成安全、合理且高效的行驶轨迹&#xff0c;并控制车辆按照这个轨迹行驶。规划控制分为几个层次&#xff0c;通常包括行为决策&#xff08;Behavior Planning&#xff09;、轨迹规划&#xff08;Trajector…

学习笔记——动态路由——IS-IS中间系统到中间系统(特性之路由撤销)

6、路由撤销 ISIS路由协议的路由信息是封装在LSP报文中的TLV中的&#xff0c;但是它对撤销路由的处理和OSPF的处理方式类似。 在ISIS中撤销一条路由实则是将接口下的ISIS关闭&#xff1a; 撤销内部路由&#xff1a; 在ISIS中路由信息是由IP接口TLV和IP内部可达性TLV共同来描…

Zip压缩文件的操作

ZipInputStreamhe和ZipOutputStream这两个类本身不具备读写文件的能力&#xff0c;这两个类都间接继承自Filter Input Stream&#xff0c;因此它们的构造方法允许传入一个真正具备读写功能的字符流对象。如FileInputStream和FileOutputStream的对象&#xff0c;从尾完成文件的读…

数据赋能(145)——开发:数据拆分——实施过程、应用特点

实施过程 数据拆分的实施过程通常涉及以下几个关键步骤&#xff1a; 确定拆分目标和需求&#xff1a; 明确数据拆分的目的和需求&#xff0c;例如是为了减少数据处理的复杂性、提高查询效率还是为了满足特定的业务需求。根据需求确定拆分后的数据结构和拆分规则。选择拆分方法…

合宙 Air780E模块 AT 指令 MQTT连接

固件说明 重启模块 //tx ATRESET//rx ATRESETOK ^boot.romv!\n RDY^MODE: 17,17E_UTRAN ServiceCGEV: ME PDN ACT 1NITZ: 2024/07/10,08:33:440,0查询模块版本信息 //tx ATCGMR//rx ATCGMRCGMR: "AirM2M_780E_V1161_LTE_AT"OK基本流程 4G模块支持MQTT和MQTT SSl协…

【LeetCode】存在重复元素 II

目录 一、题目二、解法完整代码 一、题目 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…

如何安装和管理RabbitMQ

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 将事情推迟一段时间而不是立即去做&#xff0c;可能被认为是懒惰的。事实上&#xff0c;大多数情况下可能确实如此。然而&#xff…

顶顶通呼叫中心中间件-私有化asrproxy配置热词模型

顶顶通呼叫中心中间件-私有化asrproxy配置热词模型 1、配置热词文件 将热词存在一个txt文件中&#xff0c;比如&#xff1a;hotword.txttxt文本里面写热词&#xff0c;一个热词一行&#xff0c;用utf8编码把热词文件上传到asrproxy程序目录中&#xff0c;路径&#xff1a;/dd…

音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现

一、引言 在上一节《音视频入门基础&#xff1a;H.264专题&#xff08;11&#xff09;——计算视频分辨率的公式》中&#xff0c;讲述了通过SPS中的属性计算H.264编码的视频的分辨率的公式。本文讲解FFmpeg源码中计算视频分辨率的实现。 二、FFmpeg源码中计算视频分辨率的实现…

读人工智能全传10深度思维

1. 深度思维 1.1. DeepMind 1.1.1. 深度思维 1.1.2. 2014年的员工不足25人 1.1.3. 深度思维公司公开宣称其任务是解决智能问题 1.1.4. 2014年谷歌收购DeepMind&#xff0c;人工智能突然成了新闻热点&#xff0c;以及商业热点 1.1.4.1. 收购报价高达4亿英镑 1.1.4.2. 深度…