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…

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的实时信息展示,如果不做任何修改直接展示一串字符…

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

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

合宙 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协…

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

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

读人工智能全传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. 深度…

头歌资源库(26)方格填数

一、 问题描述 二、算法思想 这是一个排列组合问题。我们可以使用动态规划的思想来求解。 假设dp[i]表示填入前i个位置的数字的方案数。考虑第i个位置&#xff0c;它有9种填法&#xff08;0~9减去前一个位置上的数字&#xff09;&#xff0c;则有dp[i] 9 * dp[i-1]。由于第…

240711_昇思学习打卡-Day23-LSTM+CRF序列标注(2)

240711_昇思学习打卡-Day23-LSTMCRF序列标注&#xff08;2&#xff09; 今天记录LSTMCRF序列标注的第二部分。仅作简单记录 Score计算 首先计算正确标签序列所对应的得分&#xff0c;这里需要注意&#xff0c;除了转移概率矩阵&#x1d40f;外&#xff0c;还需要维护两个大小…

html5——CSS基础选择器

目录 标签选择器 类选择器 id选择器 三种选择器优先级 标签指定式选择器 包含选择器 群组选择器 通配符选择器 Emmet语法&#xff08;扩展补充&#xff09; 标签选择器 HTML标签作为标签选择器的名称&#xff1a; <h1>…<h6>、<p>、<img/> 语…

如何做好漏洞扫描工作提高网络安全

在数字化浪潮席卷全球的今天&#xff0c;企业数字化转型已成为提升竞争力、实现可持续发展的关键路径。然而&#xff0c;这一转型过程并非坦途&#xff0c;其中网络安全问题如同暗礁般潜伏&#xff0c;稍有不慎便可能引发数据泄露、服务中断乃至品牌信誉受损等严重后果。因此&a…

edge 学习工具包 math solver

简介 推荐微软推出的学习工具中的两项工具&#xff1a;数学求解器和 pdf 阅读器。 打开 edge 学习工具包的方法 &#xff1a;右上角三点-更多工具-学习工具包。 math solver 除了基础的计算求解外&#xff0c;还用图标展示公式&#xff0c;清晰直观。 地址&#xff1a;求解…

CentOS7使用yum命令报错

目录结构 前言使用yum命令&#xff0c;报错信息问题排查解决方案参考文章 前言 安装CentOS 7 虚拟机&#xff0c;使用yum命令报错&#xff0c;调查整理如下&#xff1a; 使用yum命令&#xff0c;报错信息 [rootlocalhost ~]# sudo yum install net-tools 已加载插件&#xff…

每天五分钟深度学习:向量化技术在神经网络中的应用

本文重点 向量化技术,简而言之,就是利用矩阵运算(而非传统的for循环)来执行大规模的计算任务。这种技术依赖于单指令多数据(SIMD)架构,允许一个指令同时对多个数据元素执行相同的操作。例如,在向量化加法中,不再需要逐个元素进行加法操作,而是可以一次性对整个向量执…

【电子通识】无源元件与有源元件的定义和区别是什么?

当提到构成电路的电子器件时,许多人可能会想到晶体管、电容器、电感器和电阻器等器件。一般情况下,我们使用的电子器件分为两大类,即“有源元件”和“无源元件”。 有源元件是主动影响(如放大、整流、转换等)所供给电能的元件。 无源元件是对所供给的电能执行被动…