当前位置: 首页 > 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")…...

【嵌入式系统】期末试题库,ARM处理器,CortexM3内核,USART,EXTI,GPIO

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具&#xff0c;并取消勾选“识别和存储面邻域信息”&#xff0c;如下&#xff1a; 2、得到的线要素&#xff0c;如下&#xff1a;...

QTday1

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口标题this->setWindowTitle("向日葵远程控制");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\Hasee\\Desktop\\pictrue\\mypicture\\logo.png&…...

SAP ALV选择列排序时弹出定义排序顺序窗口问题

需求场景 使用REUSE_ALV_GRID_DISPLAY_LVC生成ALV&#xff0c;发现一个问题&#xff1a;使用it_events的时候选择列排序时会弹出定义排序顺序窗口&#xff0c;如下图所示。&#xff08;正常选择某一列再使用排序功能时会直接排序&#xff0c;不用再选择列&#xff09; CLASS l…...

CSS Backgrounds(背景)

CSS Backgrounds(背景) Introduction(介绍) CSS backgrounds play a crucial role in web design, allowing developers to apply colors, images, and other decorative elements to the background of HTML elements. This enhances the visual appeal of web pages and he…...

欧拉计划 Project Euler 27 题解

欧拉计划 Problem 27 题解 题干思路code 题干 思路 可以先筛1e6的素数出来然后暴力找即可&#xff0c;具体思路看代码 code #include <bits/stdc.h>using namespace std;using ll long long;const int N 1e6 5; bool vis[N]; int pri[N];void getPrime() {memset(v…...

迁移学习--fasttext概述

迁移学习 1、fasttext概述 作为NLP工程领域常用的工具包, fasttext有两大作用&#xff1a;进行文本分类、训练词向量 正如它的名字, 在保持较高精度的情况下, 快速的进行训练和预测是fasttext的最大优势。fasttext工具包中内含的fasttext模型具有十分简单的网络结构。使用fa…...

【数字信号处理】数字信号处理试题及答案,离散序列,Z变换,傅里叶变换

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

CNN、RNN、LSTM和Transformer之间的区别和联系

文章目录 CNN、RNN、LSTM和Transformer之间的区别和联系前言CNN&#xff08;卷积神经网络&#xff09;RNN&#xff08;循环神经网络&#xff09;LSTM&#xff08;长短期记忆网络&#xff09;Transformer四者之间的联系与区别Yolo算法简介Yolo和CNN的关系YOLO各版本 CNN、RNN、L…...

springboot448教学辅助系统(论文+源码)_kaic

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#x…...