news 2026/9/25 10:13:56

Java学习日记——DAY9

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java学习日记——DAY9

今天学习了Java中的String类,学习内容如下:

1.String类创建对象的两种方法:

(1)静态创建:String s1 = "abc";

(2)动态创建:String s2 = new String("abc");

区别在于静态创建时只会在方法区的常量池中创建一个对象并由引用直接指向该对象,动态创建则是创建两个对象,一个在堆中,一个在常量池中,引用指向堆的对象,堆的对象指向常量池的对象。注:String创建后即不可修改,String也不可被继承;

2.常见初始化方法:

(1)new String();

(2)new String(char[]);

(3)new String(char[],起始下标位置,长度);

(4)new String(byte[]);

(5)new String(byte[],起始下标位置,长度);

3.字符串连接操作符:

(1)可用+连接字符串:String s1 = "abc"+"def" //s1指向abcdef

String s2 = 10+"def"+20 //s2指向的是10def20

String s3 = 10+20+"def" //s3指向的是30def

即数字与字符串相加会变为字符串,String s1 = "abc"+"def"的过程是先在常量池中开辟abc的空间,再开辟def的空间,再开辟abcdef的空间,String不能被修改是指的是在初始化时常量池中的对象的值。

(2)String s1 = "abc"

String s2 = "def"

String s3 = s1+s2;

String s4 = "abcdeg"

String s5 = "abc"+"def"

这里面如果用==判断的话,s4与s5是相等的,而s3与s4不相等,原因如下:s3是对象相连也就是先开辟出一个新的空间再给初始化为abcdef,而s5则是先在常量池中查找有没有abcdef的常量对象,如果有则直接指向该对象;

4.常用方法:

length():返回有效长度;

equals():判断是否相等;

equalsIgnoreCase():判断是否相等并且忽略大小写;

indexOf/lastIndexOf(char):查找元素第一次/最后一次出现的下标;

indexOf/lastIndexOf(String):查找字符串首次/最后一次出现的下标;

indexOf/lastIndexOf(int):查找对应asc码元素出现第一次/最后一次的下标;

indexOf/lastIndexOf(char int/String int/int int):从指定位置开始查找对应元素第一次/最后一次出现的位置;

charAt(下标):用来返回字符串下标位置的单个字符;

toLowerCase/toUpperCase:转化为全大写/全小写;

subString(int):从指定位置截取字符串,直到结尾;

subString(int,int):从指定位置截取字符串,到指定位置结束,不会将结尾的位置包含进去;

trim():去除字符串前后的空格;

concat(String):与+作用一样,用于连接字符串,但是只能传入字符串类型,且传入的字符串对象不能为null;

getBytes():获得对应的byte数组;

toCharArray():获得对应的char数组;

contains(String):判断是否含有字符串元素,返回boolean类型的值;

startsWith(String):字符串是否以给定值开始;

endsWith(String):字符串是否以给定值结束;

startsWith(String,int):判断字符串在指定位置,是否以指定值开始;

replace(old char,new char):将字符串中所有指定的旧值改为新值;

replace(old charsequence,new charSequence):将所有指定字符序列改为新的字符序列;

replaceAll(String,String):安正则表达式选取被替换的元素,替换为后面的元素;

split(String):按照正则表达式将字符串分为字符串数组;

matches(String):判断字符串是否满足正则表达式,返回布尔类型的值;

Pattern.matches(Sting,String):判断后面的字符串满不满足前面的正则表达式;

contentEquals(charSequence/StringBuffer):可以直接比较内容是否相等;

5.正则表达式:

6.StringBuffer

可以高效的操作字符串,由StringBuffer创建的字符串是可以被修改的,而且在实现操作时没有多余的内存开销

常见方法:

append(String/charSequence):类似于String的+可以添加字符串;

capacity():返回StringBuffer的容量;

length():返回有效值长度;

setCharAt(下标,char):更改指定位置的字符;

reverse():反转字符串;

delete(起始位置,结束位置):删除起始下标至结束下标前一个的字符串;

toString():转为字符串类型;

replace(起始位置,结束位置,要替换为的字符串):将起始下标至结束下标前一个的字符串替换为指定字符串;

7.StringBuilder

提供了和StringBuffer相同的API,区别在于StringBuffer中的方法有synchronized修饰是线程安全的而StringBuilder没有。优点是:如果单线程操作的话Stringbuilder效率高于StringBuffer。

8.String,StringBuffer,StringBuilder区别:

9.String与StringBuffer:常量与变量的区别,String是由final修饰的不能产生子类,String使用final修饰的byte数组来存储值,一旦被创建则不能被改变。如果经常对数据进行修改,如添加,删除,分割等使用StringBuffer更优;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 22:26:03

五年前第一次摸FPDM实现的OFDM系统时,手抖得差点把开发板摔了。今天咱们用Verilog从头撸一套能跑的OFDM系统,重点聊聊那些手册里不会写的实战细节

基于FPGA的OFDM系统verilog实现,包括IFFT,FFT,成型滤波以及加CP去CP,包含testbench。 quartus、vivado、modelsim仿真核心模块得数IFFT/FFT这对欢喜冤家。这里直接调用Xilinx的FFT IP核不香吗?但为了展示底层实现,咱们用Cooley-Tukey算法写个精简版&…

作者头像 李华
网站建设 2026/9/24 5:52:01

游戏定制开发公司有哪些?国内外服务商指南

聚焦游戏定制开发市场,活跃着全球不同规模的服务商身影,既能看到主攻大型网游定制的头部企业,也能发现专精休闲小游戏、H5/AR/VR 等细分赛道的中小团队,下文按国内外分类整理代表性游戏定制开发公司,方便按需挑选。一、…

作者头像 李华
网站建设 2026/9/25 5:49:47

软件测试缺陷管理基础

缺陷管理相关理论禅道工具的使用**用例管理**- 用户入口:测试 --> 用例 --> 功能用例- 编写用例相关题目### 基础题1. **根据下列现象描述哪些是bug?依据哪些判定标准?**- A:抖音APP在iOS8.5版本上出现闪退现象 功能错误-…

作者头像 李华
网站建设 2026/9/25 3:49:59

无列名注入基础

参考https://err0r.top/article/mardasctf/ 这是一张table表 假设在不知道列名的情况下,我们想查询一下列的内容 select 1,2,3,4,5 union select * from table; 这里的列数是需要猜测的 执行语句后 可以看到这里所有的列名都变成了数字,那么接下来想要…

作者头像 李华
网站建设 2026/9/22 1:35:22

为什么电脑需要“内存“和“硬盘“?——存储金字塔的秘密

💾 为什么电脑需要"内存"和"硬盘"?——存储金字塔的秘密 🧠大家好,我是无限大,今天又带来最新一期的十万个为什么系列文章 希望今天的内容能对大家有所帮助想象一下,你正在厨房做饭&am…

作者头像 李华
网站建设 2026/9/22 17:00:40

【加密的密钥管理终极指南】:9大核心策略保障企业数据安全

第一章:加密的密钥管理概述在现代信息安全体系中,加密技术是保护数据机密性的核心手段。然而,加密的有效性不仅依赖于算法强度,更取决于密钥的管理方式。密钥管理涵盖密钥的生成、存储、分发、轮换、使用和销毁等全生命周期操作&a…

作者头像 李华