day18_常用API之String类丶Object类
String概述
java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,同时String类提供了很多操作字符串的功能,我们可以直接使用。Java 程序中的所有字符串文字(例如“abc”)都为此类的对象
- String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。String变量每次的修改其实都是产生并指向了新的字符串对象,原来的字符串对象都是没有改变的,所以称不可变字符串。
- 以“”方式给出的字符串对象,在字符串常量池中存储。
String类创建对象的方式
方式一:直接使用“”定义。
String s = "中国人"; 
不同的创建方式,有不同的特点。具体如下:
- 以" "方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
- 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
代码示例
public class Demo01String {public static void main(String[] args) {String s1 = "中国人";String s2 = "中国人";System.out.println(s1 == s2);//truechar[] c = {'中', '国', '人'};String s3 = new String(c);String s4 = new String(c);System.out.println(s3 == s4);//false}
}
String类常用方法
字符串的内容比较相关的方法

代码示例
import java.util.Scanner;public class Demo02String {public static void main(String[] args) {String okName = "admin";String oKPassword = "123456";Scanner sc = new Scanner(System.in);System.out.println("输入账号");String inputName = sc.next();System.out.println("输入密码");String inputPassword = sc.next();if ((okName.equals(inputName))&&(oKPassword.equals(inputPassword))){System.out.println("密码账号正确,登录成功..");}else {System.out.println("密码或账号不正确,登录失败..");}}
}
String中与遍历、替换、截取、分割操作相关的方法

代码示例
import java.util.Arrays;public class Demo03String {public static void main(String[] args) {// 1、public int length(): 获取字符串的长度String name = "我爱你中国love";System.out.println(name.length()); //9// 2、public char charAt(int index): 获取某个索引位置处的字符char c = name.charAt(1);System.out.println(c);// 爱// 3、public char[] toCharArray():: 把字符串转换成字符数组char[] chars = name.toCharArray();System.out.println(Arrays.toString(chars)); //[我, 爱, 你, 中, 国, l, o, v, e]// 4、public String substring(int beginIndex, int endIndex) :截取内容,(包前不包后的)String name2 = "Java是最厉害的编程语言!";String rs = name2.substring(0, 4);System.out.println(rs);//javaString rs1 = name2.substring(6, 8);System.out.println(rs1);//厉害// 5、public String substring(int beginIndex):从当前索引一直截取到末尾String rs2 = name2.substring(9);System.out.println(rs2); //编程语言!// 6、public String replace(CharSequence target, CharSequence replacement)String name3 = "TMD是最厉害的80后语言,TMD棒棒的!";String rs3 = name3.replace("TMD", "***");System.out.println(rs3);//***是最厉害的80后语言,***棒棒的!// 7、public boolean contains(CharSequence s)System.out.println(name3.contains("厉害")); // trueSystem.out.println(name3.contains("不厉害")); // false// 8、public boolean startsWith(String prefix)System.out.println(name3.startsWith("T")); //trueSystem.out.println(name3.startsWith("MD是"));// false// 9、public String[] split(String s): 按照某个内容把字符串分割成字符串数组返回。String name4 = "张三,李四,王五";String[] names = name4.split(",");System.out.println(Arrays.toString(names)); //[张三, 李四, 王五]}
}
Object根父类
类 java.lang.Object是类层次结构的根类,即所有类的父类。每个类都使用 Object作为超类。
- Object类型的变量与除Object以外的任意引用数据类型的对象都多态引用
- 所有对象(包括数组)都实现这个类的方法。
- 如果一个类没有特别指定父类,那么默认则继承自Object类。例如:
public class MyClass /*extends Object*/ {// ...
} Object类中常用方法
根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。
public String toString( )
默认情况下,toString()返回的是“对象的运行时类型 @ 对象的hashCode值的十六进制形式",如果我们直接System.out.println(对象),默认会自动调用这个对象的toString()。通常是建议重写,
因为Java的引用数据类型的变量中存储的实际上时对象的内存地址,但是Java对程序员隐藏内存地址信息,所以不能直接将内存地址显示出来,所以当你打印对象时,JVM帮你调用了对象的toString()。
例如自定义的Person类:
public class Person {private String name;private int age;@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}//类中其他代码
}
public final Class<?> getClass():获取对象的运行时类型。
因为Java有多态现象,所以一个引用数据类型的变量的编译时类型与运行时类型可能不一致,因此如果需要查看这个变量实际指向的对象的类型,需要用getClass()方法
public class Test {public static void main(String[] args) {Object obj = new String();//获取对象的运行时类型System.out.println(obj.getClass()); //class java.lang.StringObject ob = new Person();System.out.println(ob.getClass()); //class sgg1.demo02.Person}
}
protected void finalize( ):用于最终清理内存的方法
- 当对象被GC确定为要被回收的垃圾,在回收之前由GC帮你调用这个方法,不是由程序员手动调用。
- 这个方法与C语言的析构函数不同,C语言的析构函数被调用,那么对象一定被销毁,内存被回收,而finalize方法的调用不一定会销毁当前对象,因为可能在finalize()中出现了让当前对象“复活”的代码
- 每一个对象的finalize方法只会被调用一次。
- 子类可以选择重写,一般用于彻底释放一些资源对象,而且这些资源对象往往时通过C/C++等代码申请的资源内存
public int hashCode():返回每个对象的hash值。主要用于后面当对象存储到哈希表等容器中时,为了提高存储和查询性能用的。
- 如果两个对象的hash值是不同的,那么这两个对象一定不相等;
- 如果两个对象的hash值是相同的,那么这两个对象不一定相等。
public class Test {public static void main(String[] args) {System.out.println("Aa".hashCode());//2112System.out.println("BB".hashCode());//2112System.out.println("ABC".hashCode());//64578}
}
public boolean equals(Object obj):用于判断当前对象this与指定对象obj是否“相等”。
- 默认情况下,equals方法的实现等价于与“==”,比较的是对象的地址值
- 绝大部分情况下,我们都应该去重写此方法,
import java.util.Objects;public class Person {private String name;private int age;@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age && Objects.equals(name, person.name);}//类中其他代码
} 未完待续
相关文章:
day18_常用API之String类丶Object类
String概述 java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,同时String类提供了很多操作字符串的功能,我们可以直接使用。Java 程序中的所有字符串文字(例如“abc”)都为此类的对象 特点:St…...
OSG三维渲染引擎编程学习之五十五:“第五章:OSG场景渲染” 之 “5.13 一维纹理”
目录 第五章 OSG场景渲染 5.13 一维纹理 5.13.1 一维纹理介绍 5.13.2 一维纹理示例 第五章 OSG场景渲染 OSG存在场景树和渲染树,“场景数”的构建在第三章“OSG场景组织”已详细阐明,本章开始...
RTOS随笔之FreeRTOS启动与同步方法
RTOS启动与同步机制RTOS启动任务切换场景任务同步机制队列信号量事件组任务通知任务延时RTOS启动 FreeRTOS在任务创建完成后调用函数vTaskStartScheduler()启动任务调度器。 vTaskStartScheduler()任务启动函数详解 void vTaskStartScheduler( void ) {BaseType_t xReturn;xR…...
【AI/NLP】InstructGPT数据标注问题
文章目录1 背景介绍2 标记员筛选2.1 标记员筛选标准3 数据集及其标注3.1 预训练3.2 微调3.2.1 SFT-demonstration data3.2.2 RM-comparison data3.3 数据集大小4 模型实现1 背景介绍 ChatGPT的训练过程与InstructGPT相近,大致分为三步: SFT:…...
三次握手和四次挥手
文章目录TCP三次握手为什么要三次握手三次握手可以携带数据吗?三次握手失败,服务端会如何处理?ISN代表什么,意义,何要动态随机什么是半连接队列第2次握手传回了ACK,为什么还要传回SYN?为什么要四次挥手TCP…...
Jmeter常用断言之响应断言详解
响应断言是最常用的一种断言方法,主要是对响应结果中的文本内容进行断言,比如响应结果是否包含指定的值,或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果,如:Test、html、application/json、applicatio…...
【Python学习笔记】36.Python3 MySQL - mysql-connector 驱动(1)
前言 MySQL 是最流行的关系型数据库管理系统,本章节为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。 Python3 MySQL - mysql-connector 驱动 我们可以使用 pip 命令来安装 mysql-connector࿱…...
计算机SCI论文课题设计需要注意什么? - 易智编译EaseEditing
课题设计就要本着严谨性和可行性来进行。实验设计的类型要选择准确,统计学的方法要运用合理,研究对象和观察指标的选择也要符合研究目的的要求,技术路线要清晰明了。 关于课题的设计的可行性也要综合考虑,比如前期的相关工作基础…...
Quartz入门教程
本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时ÿ…...
TypeScript 学习之 function
函数可以实现抽象层,模拟类,信息隐藏和模块。 函数有:有名字的函数、匿名函数 在 JavaScript 中的函数 // 有名字的函数 function add(x, y) {return x y; }// 匿名函数 let myAdd function (x, y) {return x y; };函数类型 typescript 可…...
【云计算自学路线】
云计算包含的技术内容和涉及的方向比较多,一定要进行系统化的学习才能更好的掌握这门技术。 云计算作为互联网新技术领域,现阶段也是出于高速发展期,想学习加入云计算行业的小伙伴可以抓紧机会了,跟着小课一起来了解云计算以及它…...
code01 v2黑屏、花屏、死机、断电重启、休眠死机的进来
症状解决 长话简说,症状如下: 使用浏览器、播放视频等,遇到突然死机或花屏死机的情况 关闭硬件加速,如:浏览器中设置关闭硬件加速,出现这种症状的软件都需要设置 开机电流音、播放与暂停时喇叭吱吱想、打…...
分享107个HTML电子商务模板,总有一款适合您
分享107个HTML电子商务模板,总有一款适合您 107个HTML电子商务模板下载链接:https://pan.baidu.com/s/1VW67Wjso1BRpH7O3IlbZwg?pwd0d4s 提取码:0d4s Python采集代码下载链接:采集代码.zip - 蓝奏云 Aplustemplates 购物模板…...
Barra模型因子的构建及应用系列三之Momentum因子
一、摘要 在之前的Barra模型系列文章中,我们已经初步讲解、构建了Size因子和Beta因子,并分别创建了对应的单因子策略。通过回测发现,其中Size因子的小市值效应具有很强的收益能力。而本篇文章将在该系列下进一步构建Momentum因子。 二、模型…...
8.2.1.3 索引合并优化
索引合并访问方法检索具有多个范围扫描的行,并将其结果合并为一个。此访问方法仅合并来自单个表的索引扫描,而不是跨多个表的扫描。合并可以生成其基础扫描的合并、交叉或交叉的合并。 可以使用索引合并的查询示例: SELECT * FROM tbl_name…...
水雨情在线小能手-雨量水位报警站
雨量水位报警站由水位探测器、雨量传感器、报警灯、扩音器、太阳能板和采集传输控制器组成。实时采集水位等级,三个水位探测器对应3个水位等级,当现场水面浸没相应探测器时,本机会实时发出语音报警,同时可发送相应的预警/报警等级…...
【蓝桥杯集训4】双指针专题(6 / 6)
目录 3768. 字符串删减 - 滑动窗口ac 799. 最长连续不重复子序列 - 滑动窗口 800. 数组元素的目标和 - 二分ac 2816. 判断子序列 - 双指针 1238. 日志统计 - 滑动窗口 1240. 完全二叉树的权值 - 双指针 1、前缀和 - 通过了 5/12个数据 2、双指针 3768. 字符串删减 -…...
文件流,gzip解压,压缩
目录 文件画布 写入 (空文件Foutnew File(Parent,entry.getName());)FileOutputStream outnew FileOutputStream(Fout);BufferedOutputStream Boutnew BufferedOutputStream(out);其他流量基于基础包装文件--文件流---字节流 顺序pbf一般是形成后再压缩目…...
在线开会,来开开圆桌会议吧~
圆桌会议应用场景:适合内部培训、部门会议亦或是头脑风暴等较为轻松的场景,有兴趣的朋友可以联系我来测试哦~~ 上图: 图:圆桌会议应用截图 在圆桌布局之下,企业可以将每一位参会者和座位绑定,1:1模拟线下圆…...
使用营销自动化的 7 大主要优势
对于大多数企业家来说,自动化已成为在数字时代简化业务的必要条件。那么,您可以采取哪些步骤来实施营销自动化呢? 1. 社交媒体整合 拥有吸引人的社交媒体形象是成功的先决条件。您不可能完成所有社交媒体营销任务,使用自动化软件&…...
统计建模大赛的评分标准
2026年统计建模大赛正在进行中,相关文章: 统计建模大赛去哪找数据? 2026年统计建模大赛AI工具使用规范 2026年统计建模大赛选题思路——数字经济统计监测体系研究 我在公开课以及以前的文章中经常强调,数模竞赛不是考试&#…...
PCB设计实战:数字模拟隔离的元件抉择——从0Ω电阻到磁珠的精准应用
1. 数字模拟隔离的基础原理与挑战 在混合信号电路设计中,数字电路和模拟电路就像两个性格迥异的邻居。数字电路工作时会产生高频开关噪声,就像隔壁装修时的电钻声;而模拟电路对噪声极其敏感,如同正在录音的麦克风。这时候…...
[认知计算] 神经网络架构:从生物启发的神经元到现代激活函数演进
1. 从生物神经元到人工神经元的数学抽象 1943年,麦卡洛克和皮茨在论文《神经活动中内在思想的逻辑演算》中首次提出用数学模型模拟生物神经元。这个看似简单的想法,彻底改变了人类对智能的认知方式。生物神经元由树突、细胞体和轴突三部分组成࿱…...
从if-else到assign:聊聊RTL代码风格如何影响X态传播与电路质量
从if-else到assign:RTL代码风格对X态传播与电路质量的深层影响 在数字IC设计领域,X态就像电路中的"幽灵信号",它无声无息地潜伏在设计中,直到某个关键时刻突然显现,引发难以追踪的异常行为。对于RTL工程师而…...
类和对象(中)——运算符重载
引入语言在语法上可以直接用指令实现运算符对 内置类型 的操作C中加入了类类型,那如何使用以前的运算符(如 - * / 等),对类类型进行操作呢?由此引入运算符重载:C为了增强代码的可读性引入了运算…...
新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据)
新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据) 当你用手机导航时,是否想过这些定位信号有多可靠?RAIM(Receiver Autonomous Integrity Monitoring)算法就像GNSS系统的"质…...
ccmusic-database新手教程:Gradio输出组件定制——增强Top5结果可读性技巧
ccmusic-database新手教程:Gradio输出组件定制——增强Top5结果可读性技巧 1. 项目简介与背景 ccmusic-database是一个基于深度学习的音乐流派分类系统,它能够自动识别音频文件所属的音乐流派。这个系统在计算机视觉预训练模型VGG19_BN的基础上进行微调…...
Qwen3-ASR-0.6B惊艳效果:藏语、维吾尔语等少数民族语言识别案例
Qwen3-ASR-0.6B惊艳效果:藏语、维吾尔语等少数民族语言识别案例 1. 引言:多语言语音识别的突破 语音识别技术正在改变我们与设备交互的方式,但有一个领域一直存在巨大挑战——少数民族语言的识别。传统的语音识别模型往往只支持主流语言&am…...
泛微OA单点登录配置全攻略:从零开始实现第三方系统免密登录
泛微OA单点登录深度实战:Token机制与系统集成最佳实践 对于企业IT架构师和运维团队而言,系统间的无缝衔接一直是提升工作效率的关键。想象一下这样的场景:销售人员在CRM系统中完成客户跟进后,无需反复登录就能直接跳转到OA系统提…...
OpenClaw备份方案:GLM-4-7-Flash自动加密重要文件并上传网盘
OpenClaw备份方案:GLM-4-7-Flash自动加密重要文件并上传网盘 1. 为什么需要自动化加密备份 去年的一次硬盘故障让我损失了三个月的项目资料,这件事彻底改变了我对数据安全的认知。传统备份方案要么需要手动操作(容易遗忘)&#…...
