当前位置: 首页 > news >正文

常 用 类

一、 Object
1. Object 类的介绍
(1) Object 类位于 java.lang 包中,是继承关系的根类、超类,是所有类的父类 ( 直接的父类或是间接父类 )
(2) Object 类型的引用可以用于存储任意类型的对象。
(3) Object 类中定义方法,所有类都可以直接使用。
2. 8Object 类中常用方法:
(1) getClass() : 返回引用中实际存储的对象类型。【理解】
开发实际应用:用于判断两个引用中实际存储的对象类型是否一致,一致 -true; 不一致 -false
(2) int hashCode() : 返回对象的整数哈希码值。对象的哈希码值来源是将 十六进制的地址,转换十进制的整
数的结果。
注意:由于不同的对象在堆空间中有不同的十六进制的地址,所有不同的对象具有不同哈希码值。
(3) String toString() : 返回该对象字符串的变现形式。【开发重点】
a. 作用:方便展示对象的信息,子类通常将 toString 方法覆盖。 toString 方法覆盖的原则如下:
通常将所有的属性拼接为一个 字符串进行结果返回。
b. 案例: public String toString(){
return "name="+name+",age="+age; // this. 省略
}
c. get 方法和 toString 方法 区别:
I. get 方法是返回对象的单个属性的信息,并且不会改变属性对应数据类型
II. toString 方法获取所有属性的信息,并且将 所有属性拼接为 一个 String 类型的结果进行返回。
(4) boolean equals(Object o) :用于比较对象内容是否相同。【开发应用重点】
a. == 的应用
I. 如果 == 两端 为基本数据类型的变量,则判断变量中数值是否相同
如果 == 两端 为引用类型的变量,则判断引用中存储的地址是否相同。
II. 开发中 == 两端为引用类型的实际应用:通常用于判断两个引用是否指向同一个对象。
案例: Animal a1 = new Cat ();
Animal a2 = new Dog ();
System . out . println ( a1 . getClass () == a2 . getClass ());
引用名 1 == 引用名 2 : 结果为 true ,代表两个引用指向同一个对象;
结果为 false, 代表两个引用指向不同的对象。
b. equals 方法的应用:
I. 父类 Object 类中 equals 方法实现原理如下:
public boolean equals(Object obj) {
return (this == obj);
}
注意:父类中的 equals 方法是用于比较两个引用是否同一个对象,但是开发时,通常用 equals 方法比
较对象的内容,所以父类中 equals 方法不足以满足子类的 需求,则需要覆盖父类 Object
equals 方法。
II. equals 方法覆盖的原则:
面试重点: == equals 方法的区别。
解析:
(1) == 的应用
== 两端为基本数据类型,比较变量中数值是否相同
== 两端为引用类型的变量,比较引用存储地址是否相同
(2) equals 方法: Object 类中方法用于实现用 (==) 实现,比较对象地址;但是实际开发时,需要将
equals 方法进行覆盖,用于比较对象的内容是否相同。
(5) finalize() : JVM 进行垃圾回收时 , 自动调用的方法。 ( 垃圾回收器回收垃圾对象 )(JVM 性能调优时关注 )
【面试】
a. 垃圾对象:没有任何引用指向的对象。
Student s= new Student();
s = null ; // s 指向的对象设置为 垃圾对象
b. 垃圾回收器:用于 JVM 回收垃圾对象。简称为 gc / GC
c. 垃圾回收的目的:清除垃圾对象,释放空间,提高空间利用率。
d. 垃圾回收器回收垃圾对象时机:
① 自动回收机制:当 JVM 内存耗尽时,不能再为新创建的对象分配空间时, JVM 中垃圾回收器会自动
将所有的垃圾对象一次性进行回收,垃圾回收器进行回收垃圾对象时,自动调用 finalize 方法。
② 手动回收机制:利用 System.gc() ; 通知 垃圾回收器 (GC) 进行垃圾回收,如果 GC 空闲,则进行垃
圾回收,如果 GC 繁忙,则暂不回收。
注意:开发时, finalize 方法中不写任何重要代码, finalize 方法的执行节点不可控。
二、包装类 ( 位于 java.lang 包中 )
1. 概念:基本数据类型对应引用类型,称之为基本数据类型的包装类。
2. 基本数据类型对应的包装类:【重点】
基本数据类型 包装类类名
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
3. 数据之间转换【了解】
(1) int Integer 之间的转换
int -----> Integer
a. Integer i1 = new Integer(12); // 借助构造方法
b. Integer i2 = Integer.valueOf(12); // 借助 Integer 类中的静态方法
Integer ----> int a. int a1 = i1.intValue() ; // 借助 Integer 类中的成员方法 intValue()
(2) String Integer 之间的转换
String ----> Integer
a. Integer i3 = new Integer("123"); // 借助 Integer 类中的构造方法
b. Integer i4 = Integer.valueOf("123"); // 借助 Integer 类中的静态方法
Integer ----> String
a. String s1 = i4.toString();
b. String s2 = i4+""; // 借助字符串的拼接
(3) int String 之间的转换
int ---> String
a. int a = 3;
String s3 = a+"";
String ----> int 【开发应用重点】
int a = Integer.parseInt("123"); // 借助 Integer 类中静态方法
注意:将 String 类型的数据转换为 int/Integer 类型的数据,要求要转换的 String 数据类型必须是纯数
字,否则运行报错,错误信息如下:
java.lang.NumberFormatException ( 数字格式转换异常 )
4. 自动装箱、自动拆箱
(1) JDK5.0 之后提供自动装箱和自动拆箱的功能,基本数据类型和对应包装类型之间可以相互自动转换
(2) 自动装箱:基本数据类型可以直接赋值给其对应的包装类型。
自动拆箱:包装类型的引用可以直接赋值给其对应的基本数据类型的变量。
(3) 案例: Integer i = 12; // 自动装箱
int a = i ; // 自动拆箱
(4) 自动装箱实现的原理:自动装箱底层调用的时 Integer 类中 静态的 valueOf 方法: 【面试难点】
public static Integer valueOf(int i) {
if (i >= -128 && i <= 127)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i); // 如果 传入数据不在 -128~127 之间,则 new Integer 类型对象
}
注意: Java 中将 -128~127 常用数据段的内容进行了预先的包装处理,转换数据只要在 -128~127 之间不
需要每次创建对象,而是从处理结果中直接获取即可, -128~127 处理结果存储在缓冲区中、常量池。
面试题目: Integer i1 = 12;
Integer i2 = 12;
System.out.println(i1==i2); // true
Integer i3 = 150;
Integer i4 = 150 ;
System.out.println(i3==i4); // false
5. 包装类实际开发应用【开发重点】 (1) 可以用于区分有效数据和无效数据:例如 0 null , 0.0 null.
(2) 场景:开发时,通常将类中属性定义为基本数据类型对应包装类型。 --> 区分有效数据和无效数据的
三、 String 类【开发重点】
1. 创建字符串的方式:【面试重点】
(1) String s1 = "hello"; // 只会创建一个对象,在串池中产生
(2) String s2 = new String("world"); // 产生两个对象。一个在堆空间中,一个在串池中产生。
注意:如果串池中已经存在的字符串对象,不会重复创建。
2. String 类中常用方法:
(1) char charAt(int index) :根据下标获取对应的字符。
注意: String 类中封装了一个 char 类型数组,下标范围 0~ 字符串的长度 -1 ,如果指定的下标超出下标
范围,则运行报错,错误信息为: java.lang.StringIndexOutOfBoundsException( 数组下标越界 )
(2) boolean contains(String str): 判断一个字符串中是否包含 str 子串,包含 -true; 否则 -false.
(3) boolean equals(String str): 比较两个字符串内容是否相同,相同 -true; 否则 -false.
注意:开发时,比较字符串内容,需要用 equals 方法比较。
(4) int length() : 获取字符串的长度。
注意:获取数组的长度:数组名 .length ;
// 思考:如何遍历字符串????
(5) String trim() : 去除字符串前后的空格。
注意:应用场景结合 :将 String 转换 int/Integer 时应用
String age = "18 ";
int n = Integer.parseInt(age.trim());
(6) String[] split(String str) : 将当前字符串进行拆分,拆分结果封装为一个 String 类型的数组。
3. String 的不可变性【面试题目】
(1) String 的字面值是字面常量,如果在字符串上进行操作,在原有字符串的基础上拷贝一个副文本,在副
文本上完成操作 ( 字符串拼接 )
(2) 由于 String 具有不可变性,所以在完成字符串拼接时,效率较低。
注意: String s = "a" + "b";
上面的字符串的拼接只创建一个对象。原因:如果 + 两端都为字符串常量时,编译器在编译阶
段将 "a"+"b" 直接编译为 "ab", 称为编译器可知。
四、可变长的字符串 ( 位于 java.lang )
1. StringBuffer: JDK1.0 版本,线程安全,运行效率慢
StringBuilder: JDK5.0 版本,线程不安全,运行效率快。
2. 常用的构造方法:
(1) public StringBuilder() : 无参数的构造方法
(2) public StringBuilder(String str) : 带有字符串类型参数的构造方法
3. 常用功能方法:
StringBuilder append(String str) :字符串的拼接
4. 注意: StringBuilder 是可变长字符串,所有拼接效率远远高于 String
面试题目: String StringBuilder StringBuffer 的区别。
解析:
(1) String 是不可变长的字符串,在完成字符串拼接时效率较低。
String 线程安全。
(2) StringBuilder 是可变长的字符串,在完成字符串拼接时效率较高。
StringBuilder 线程不安全。
(3) StringBuffer 是可变长的字符串,在完成字符串拼接时效率较高
StringBuffer 线程安全。
五、 BigDecimal 类【了解】
1. BigDecimal 类:位于 java.math 包中
2. 作用:精确的表示、计算浮点数
3. 常用的构造方法:
public BigDecimal(String n) : 带有字符串类型构造方法
4. 常用的方法:
(1) BigDecimal r1 = bd1.add(bd2); // 加法 bd1 + bd2
(2) BigDecimal r2 = bd1.subtract(bd2); // 减法 : bd1 - bd2
(3) BigDecimal r3 = bd1.multiply(bd2); // 乘法 : bd1*bd2
(4) BigDecimal r4 = bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP); // 除法: bd1/bd2
参数说明:
第一个参数:分母数据
第二个参数:指定保留到小数点后几位
第三个参数:取舍模式,通常采用四舍五入 (BigDecimal.ROUND_HALF_UP)

相关文章:

常 用 类

一、 Object 类 1. Object 类的介绍 (1) Object 类位于 java.lang 包中&#xff0c;是继承关系的根类、超类&#xff0c;是所有类的父类 ( 直接的父类或是间接父类 ) (2) Object 类型的引用可以用于存储任意类型的对象。 (3) Object 类中定义方法&#xff0c;所有类都可以…...

ACL(访问控制列表)

ACL技术概述 • 随着网络的飞速发展&#xff0c;网络安全和网络服务质量 QoS &#xff08; Quality of Service &#xff09;问题日益突出。 ▫ 园区重要服务器资源被随意访问&#xff0c;园区机密信息容易泄露&#xff0c;造成安全隐患。 ▫ Internet 病毒肆意侵略园区内网&am…...

json字符串转json

问题 Json格式化后&#xff0c;存在各种\n ,\r,以及空格&#xff0c;怎么办&#xff1f; 直接replaceAlll(“\s”,“”) 吗&#xff1f; 解决办法&#xff1a; //使用hutool的jsonutil工具&#xff0c;直接将其转换为json&#xff0c;再转string, //这样就不需要使用 各种re…...

GPT-Omni 与 Mini-Omni2:创新与性能的结合

近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;各种模型和平台应运而生&#xff0c;以满足从个人用户到企业级应用的多样化需求。在这一领域&#xff0c;GPT-Omni 和 Mini-Omni2 是两款备受瞩目的技术产品&#xff0c;它们凭借独特的设计和强大的功能&#xff0c;在…...

探秘 JSON:数据交互的轻盈使者

文章目录 一、JSON是什么二、JSON的语法规则三、应用场景四、性能优化五、总结 一、JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff09;即 JavaScript 对象表示法&#xff0c;是一种轻量级的数据交换格式。JSON 以键值对的形式组织数据&#xff0c;键是字符串…...

源码分析之Openlayers中的Attribution属性控件

概述 本文主要介绍 Openlayers 中Attribution属性控件的源码实现&#xff0c;该控件也是 Openlayers 中三个默认控件之一。默认情况下&#xff0c;控件会显示在地图的右下角&#xff0c;可以通过控件的类名设置CSS属性控制。实际应用中该控件主要显示与图层源source相关的所有…...

Shell自定义(二)

1.Shell自定义 1.初始化 定义全局变量environ&#xff0c;把g_env的内容用memset初始化为0&#xff0c;这里用malloc开辟的空间为对应环境变量的长度1&#xff0c;多1位置是最后结束符0&#xff0c;strcpy把此时的对应的环境变量拷贝到g_env里面&#xff0c;下面是新增一个环…...

自然语言处理:我的学习心得与笔记

Pytorch 1.Pytorch基本语法 1.1 认识Pytorch 1.2 Pytorch中的autograd 2.Pytorch初步应用 2.1 使用Pytorch构建一个神经网络 2.2 使用Pytorch构建一个分类器 小节总结 学习了什么是Pytorch. 。Pytorch是一个基于Numpy的科学计算包,作为Numpy的替代者,向用户提供使用GPU强大…...

Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率

为什么 EXISTS 更高效&#xff1f; EXISTS 提前终止&#xff1a; EXISTS 一旦在子查询中找到第一个匹配项&#xff0c;就会立即返回 TRUE&#xff0c;不再继续扫描子查询中的其他记录。IN 必须扫描整个子查询的结果集&#xff0c;将所有结果与主查询的每一行进行对比。大数据集…...

Spring基础分析08-集成JPA/Hibernate进行ORM操作

大家好&#xff0c;今天和大家一起分享一下Spring集成JPAHibernate进行ORM操作的流程~ JPA&#xff08;Java Persistence API&#xff09;作为Java EE标准的一部分&#xff0c;提供了统一的API来管理实体类和持久化上下文&#xff1b;Hibernate则是最流行的JPA实现之一&#x…...

MySQL知识汇总(一)

一些命令行操作注意加 分号 “ ; ” show databases 查看所有数据库 use 数据库名 切换数据库 show tables 查看数据库中所有表 describe 表名 显示表中所有信息 create database [if not exists] 新库名 创…...

PDFMathTranslate 一个基于AI优秀的PDF论文翻译工具

PDFMathTranslate 是一个设想中的工具&#xff0c;旨在翻译PDF文档中的数学内容。以下是这个工具的主要特点和使用方法&#xff1a; 链接&#xff1a;https://www.modelscope.cn/studios/AI-ModelScope/PDFMathTranslate 功能特点 数学公式识别&#xff1a;利用先进的OCR&…...

React+Vite从零搭建项目及配置详解

相信很多React初学者第一次搭建自己的项目&#xff0c;搭建时会无从下手&#xff0c;本篇适合快速实现功能&#xff0c;熟悉React项目搭建流程。 目录 一、创建项目react-item 二、调整项目目录结构 三、使用scss预处理器 四、组件库Ant Design 五、配置基础路由 六、配置…...

@pytest.fixture() 跟 @pytest.fixture有区别吗?

在iOS UI 自动化工程里面最早我用的是pytest.fixture()&#xff0c;因为在pycharm中联想出来的fixture是带&#xff08;&#xff09;的&#xff0c;后来偶然一次我没有带&#xff08;&#xff09;发现也没有问题&#xff0c;于是详细查了一下pytest.fixture() 和 pytest.fixtur…...

Google Cloud Architect 认证考试错题集5

Google Cloud Architect 认证考试错题集5 D. Store static content such as HTML and images in a Cloud Storage bucket. Use Cloud Functions to host the APIs and save the user data in Firestore. - Storing static content in a Cloud Storage bucket is a cost-effecti…...

【Maven】基础(一)

【Maven】基础一 1. 虽然工作有段时间了&#xff0c;但是深感maven了解的不深入&#xff0c;所以这次开始深入的学习。 课程地址: https://www.bilibili.com/video/BV1JN411G7gX?spm_id_from333.788.player.switch&vd_source240d9002f7c7e3da63cd9a975639409a&p2 1.…...

多模态抽取图片信息的 Prompt

多模态抽取图片信息的 Prompt 1. 中文版2. 日文版3. 英文原版 下面使用多模态从图片中抽取文章&#xff0c;表格&#xff0c;Flowcharts的Prompt。 1. 中文版 你是一位擅长提取图片、图表、文本并对其进行解释的专家&#xff0c;能够保持原始语言不变。## 指南- 针对输入内容…...

WPF 使用LibVLCSharp.WPF实现视频播放、停止、暂停功能

使用LibVLCSharp.WPF实现视频播放、停止、暂停功能 1, NuGet 添加 VideoLAN.LibVLC.Windows 2. NuGet 添加 LibVLCSharp.WPF 3. wpf 代码如下&#xff1a; <Grid ><Grid.RowDefinitions><RowDefinition Height"*" /><RowDefinition Height&q…...

Java全栈项目 - 校园招聘信息平台

项目介绍 校园招聘信息平台是一个面向高校学生和企业的双向服务平台。该系统帮助企业发布招聘信息,方便学生查询职位并投递简历,同时为学校就业部门提供就业数据分析功能。 技术栈 后端 Spring Boot 2.xSpring SecurityMyBatis PlusMySQL 8.0RedisRabbitMQ 前端 Vue.js 2…...

java导出

请求头获取responseimport com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet;PostMapping("excel/export") ApiOperation(value "党员档案导出", httpMethod "POST")…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...