Java之String类常用操作

Java之String类常用操作
在这里插入图片描述

Java之String类

一、String类的理解

1、类的声明

publicfinalclassStringimplementsjava.io.Serializable,Comparable<String>,CharSequence{
final:String是不可以被继承的;
Serializable:可序列化的接口,凡是实现此接口的类的对象就可以通过网络或者本地流进行数据的传输。
Comparable:凡是实现此接口的类,其对象都可以比较大小。

2、内部声明的属性

privatefinalchar value[];

存储字符串数据的容器

final:指明此value数组一旦初始化,其地址就不可变

3、字符串常量的存储位置

字符串常量都存储在字符串常量池(StringTable)中
字符串常量池不允许存放两个相同的字符串常量
字符串常量池在不同的jdk版本中,存放的位置不同

4、字符串的不可变性的理解

1、当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,不能在原来的位置修改
2、对现有的字符串进行拼接操作时,需要重新开辟空间保存新的字符串。
3、当调用字符串的replace方法替换现有的某个字符时,需要重新开辟空间保存修改以后的字符串,不能原地修改

publicclassStringDemo{publicstaticvoidmain(String[] args){StringDemo s =newStringDemo(); s.test2(); s.test3();}// todo String的不可变性// 当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,不能在原来的位置修改// 对现有的字符串进行拼接操作时,需要重新开辟空间保存新的字符串。// 当调用字符串的replace方法替换现有的某个字符时,需要重新开辟空间保存修改以后的字符串,不能原地修改publicvoidtest2(){String s1 ="hello";String s2 ="hello"; s2 ="hi"; s2+="world";System.out.println(s1);// todo helloSystem.out.println(s1);// todo hello}publicvoidtest3(){String s1 ="hello";String s2 ="hello";String s3=s2.replace('l','o');System.out.println(s1);// helloSystem.out.println(s2);// helloSystem.out.println(s3);// heooo}}

5、String实例化的两种方式

String s1 = “hello”;
String s2 = new String(“hello”);
publicclassStringDemo1{publicstaticvoidmain(String[] args){StringDemo1 s =newStringDemo1(); s.test1();}publicvoidtest1(){String s1 ="hello";String s2 ="hello";String s3 =newString("hello");String s4 =newString("hello");System.out.println(s1==s2);//trueSystem.out.println(s1==s3);//falseSystem.out.println(s1==s4);//falseSystem.out.println(s3==s4);//falseSystem.out.println(s1.equals(s2));//trueSystem.out.println(s1.equals(s3));//trueSystem.out.println(s1.equals(s4));//trueSystem.out.println(s3.equals(s2));//true}}

6、字符串的拼接

1、常量+常量:结果仍然存储在字符串常量池;此时的常量可能是字面量,也可能是final修饰的变量。
2、常量+变量 或者 变量+常量:都会通过new的方式创建一个新的字符串,返回堆空间中此字符串对象的地址
3、调用字符串的intern():返回字面量的地址
publicvoidtest2(){String s1 ="hello";String s2 ="world";String s3 ="helloworld";String s4 ="hello"+"world";String s5 = s1 +"world";//todo 通过查看字节码文件发现调用了StringBuilder()——》new String()String s6 ="hello"+ s2;String s7 = s1 + s2;System.out.println("------------------------------");System.out.println(s3 == s4);//trueSystem.out.println(s3 == s5);//falseSystem.out.println(s3 == s6);//falseSystem.out.println(s3 == s7);//falseSystem.out.println(s5 == s6);//falseSystem.out.println(s5 == s7);//false}
publicvoidtest3(){finalString s1 ="hello";finalString s2 ="world";String s3 ="helloworld";String s4 ="hello"+"world";String s5 = s1 +"world";//todo 通过查看字节码文件发现调用了StringBuilder()——》new String()String s6 ="hello"+ s2;String s7 = s1 + s2;System.out.println("------------------------------");System.out.println(s3 == s5);//trueSystem.out.println(s3 == s6);//true}

二、String的构造器

1、构造器

public String() :初始化新创建的 String对象,以使其表示空字符序列。
public String(String original):初始化一个新创建的“String”对象,使其表示一个与参教相同的字符序列
public String(char[] value):通过当前参数中的字符数组来构造新的String。
public String(char[] valve,int offset,int count):通过字符数组的一部分来构造新的String。
public String(byte[] bytes):通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。
public String(byte[] bytes,String charsetName)':通过使用指定的字符集解码当前参数中的字节数组来构造新的String。

2、String和char之间相互转换

String——》char[]:调用String的toCharArray()方法
char——》String:调用String的构造器

publicclassStringMethodTest{publicstaticvoidmain(String[] args){StringMethodTest s =newStringMethodTest(); s.test1(); s.test2(); s.test3();}publicvoidtest1(){String s1 =newString();String s2 =newString("");String s3 =newString(newchar[]{'a','b','c'});System.out.println(s3);}publicvoidtest2(){String str ="hello";//todo String——》char[]:调用String的toCharArray()方法char[] arr = str.toCharArray();for(int i =0; i < arr.length; i++){System.out.println(arr[i]);}//todo char——》String:调用String的构造器String str1 =newString(arr);System.out.println(str1);//hello}}

3、String和byte之间相互转换

String——》byte[]:调用String的getBytes()方法
getBytes(String charsetName):使用指定的字符集

在utf-8字符集中,一个汉字占用3个字节,一个字母占用1个字节。
在gbk字符集中,一个汉字占用2个字节,一个字母占用1个字节。
publicclassStringMethodTest{publicstaticvoidmain(String[] args){StringMethodTest s =newStringMethodTest(); s.test1(); s.test2(); s.test3();}// String与byte[]之间的转换// 在utf-8字符集中,一个汉字占用3个字节,一个字母占用1个字节。// 在gbk字符集中,一个汉字占用2个字节,一个字母占用1个字节。publicvoidtest3(){String str ="中国";//todo String——》byte[]:调用String的toCharArray()方法byte[] arr = str.getBytes();//使用默认的字符集for(int i =0; i < arr.length; i++){System.out.println(arr[i]);// -28\-72\-83\-27\-101\-67}System.out.println();// String str1 = new String("abc中国");// // todo getBytes(String charsetName):使用指定的字符集// byte[] arr1 = str1.getBytes("gbk"); //使用默认的字符集// for(int i = 0;i<arr.length;i++){// System.out.println(arr[i]); // 101\101\108\108\111// }// byte[]——》StringString str2 =newString(arr);System.out.println(str2);//中国}}

三、String中常用方法

1、boolean isEmpty():字符串是否为空;
2、int length():返回字符串的长度;
3、String concat(xx):字符串拼接;
4、boolean equals(Object obj):比较字符串是否相等,区分大小写;
5、boolean equalsIgnoreCase(Object obj):比较字符串是否相等,不区分大小写;
6、int compareTo(String other):比较字符串大小,区分大小写,按照Unicode编码值比较大小;
7、int compareTolgnoreCase(String other):比较字符串大小,不区分大小写;
8、String toLowerCase():将字符串中大写字母转为小写;
9、String toUpperCase():将字符串中小写字母转为大写;
10、String trim():去掉字符串前后空白符;
11、public String intern():结果在常量池中共享;
12、boolean contains(xx):是否包含xx
13、int indexOf(xx):从前往后找当前字符串中xx,即如果有返回第一次出现的下标,要是没有返回-1;
14、int indexOf(String str,int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引开始向后找;
15、int lastIndexOf(xx):从后往前找当前字符串中xx,即如果有返回最后一次出现的下标,要是没有返回-1
16、int lastIndexOf(String str,int fromIndex):返回指定子字符串在此字符串中最后一次出现处的并且向前找;
17、String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取;
18、String substring(int beginIndex,int endIndex):返回一个新字符串,它是此字符串从beginIndex开始截取,到endIndex结束;
19、char charAt(index):返回[index]位置的字符
20、char[] toCharArray(): 将此字符串转换为一个新的字符数组返回
21、static String valueOf(char[] data):返回char数组参数的字符串表示形式
22、static String valueOf(char[] data,int offset,int count): 返回char数组参数的特定子数组的字符串表示形式
23、static String copyValueOf(char[] data): 返回指定数组中表示该字符序列的字符串。
24、static String copyValue0f(char[] data,int offset,int count):返回指定数组中指定片段的字符串。start:开始下标 count:长度
25、boolean startsWith(xx):方法用于检测字符串是否以指定的子字符串开始。
26、boolean startsWith(string prefix,int toffset):如果字符串以指定的前缀开始,则返回 true;否则返回 false。
27、boolean endsWith(xx):测试此字符串是否以指定的后结束
28、String replace(char oldchar,char newchar):返回一个新的字符串,它是通过用 newchar 替换oldchar;
29、String replace(CharSequence target,charSequence replacement):用replacement替换所有的target,两个参数都是字符串。
30、String replaceAll(String regex,String replacement):用replacement替换所有的regex匹配项,regex很明显是个正则表达式,replacement是字符串。
31、String replaceFirst(String regex,String replacement):基本和replaceAll相同,区别是只替换第一个匹配项。

Read more

Pi0机器人VLA大模型在昇腾A2平台上的测评

Pi0机器人VLA大模型在昇腾A2平台上的测评

Pi0机器人VLA大模型在昇腾A2平台上的测评文档 * 写在最前面 🌈你好呀!我是 是Yu欸🚀 感谢你的陪伴与支持~ 欢迎添加文末好友🌌 在所有感兴趣的领域扩展知识,不定期掉落福利资讯(*^▽^*) 写在最前面 版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。 随着人工智能技术的持续神户以及人形机器人产业的快速发展,算力在提升机器人运动控制精度、实时响应能力与智能化水平方面的作用日益凸显。为实现降本增效,国产化算力代替需求不断攀升,本文基于国产化适配的 Pi0机器 VLA大模型,在昇腾 Atlas 800I A2服务器上完成部署与测试,结果表明:该模型在推理性能、推理精度及功能完整性等方面,不仅实现了与英伟达同级别硬件相当的算力表现,更在部分场景下表现出更优的运行效率。 这一成果充分表明:经过深度适配的国产大模型与国产算力平台,已具备支撑高端人形机器人智能化发展的核心技术能力。国产算力在人形机器人领域的应用场景广阔,正加速迈向自主可控、高效可靠的全新阶段。 一、测评概述 1.1 测试目的 本测评旨在验证Pi0机器人视觉

By Ne0inhk

Tomcat下载安装以及配置(详细教程)

本文讲的是Java环境 文章目录 * 前言 * 下载及安装Tomcat * 启动Tomcat * 测试Tomcat * 配置Tomcat 环境变量 * IDEA中配置Tomcat * Eclipse中配置Tomcat 前言 提示:这里可以添加本文要记录的大概内容: 今天晚上查看自己原来项目的时候,突然发现运行不了,仔细查看发现是tomcat没配置,但是tomcat在电脑里已经下载过了,只是还没有配置,这篇文章就讲tomcat在电脑与idea中的配置 提示:以下是本篇文章正文内容,下面案例可供参考 下载及安装Tomcat 进入tomcat官网,Tomcat官网 选择需要下载的版本,点击下载 下载路径一定要记住,并且路径中尽量不要有中文 下载后是压缩包 .zip,解压后 tomcat系统各个文件夹目录是什么意义: bin:放置的是Tomcat一些相关的命令,启动的命令(startup)和关闭的命令(shutdown)等等 conf:(configure)配置文件 lib:(library)库,依赖的 jar包 logs:Tomca

By Ne0inhk

爬虫技术分享

网络爬虫技术分享 作者:技术分享 日期:2026年3月 适用语言:Python / Java 一、什么是网络爬虫? 网络爬虫(Web Crawler),又称网络蜘蛛或网络机器人,是一种按照一定规则自动抓取网页信息的自动化程序。其本质是模拟人类浏览器访问网页的行为,通过发送 HTTP 请求获取页面内容,再从中提取有价值的结构化数据并加以存储,最终服务于数据分析、业务监控、信息聚合等场景。 爬虫的工作流程可以简单概括为四个核心步骤: 获取网页 → 提取信息 → 保存数据 → 自动化调度 这四个步骤形成了一个完整的数据采集闭环。理解这个闭环,是学习爬虫技术的基础。 为什么要学爬虫? 在数据驱动的时代,数据就是生产力。无论是金融分析、市场调研还是风控建模,高质量、及时准确的数据都是前提。爬虫技术提供了一种低成本、高效率的数据获取手段,在银行、证券、保险等金融机构中有着广泛的实际应用价值。 二、爬虫在银行相关技术中的应用 爬虫技术在银行及金融领域的应用远比想象中广泛,以下是几个典型场景: 1. 舆情监控与品牌风控 银行需要实时关注网络上与自身品牌、

By Ne0inhk
MySQL的下载与安装步骤

MySQL的下载与安装步骤

一、写在前面         MySQL是最流行的关系型数据库管理系统之一,属于Oracle旗下产品。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,并且开放源码,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。         本篇博客将向大家介绍MySQL数据库的安装步骤,包括下载、安装和配置等,希望能对大家有所帮助(文章内容较多,但步骤非常详细,需要可酌情跳过)。 二、MySQL的下载         MySQL官方提供了两种不同的MySQL版本:社区版本(MySQL Community Server)和商业版本(MySQL Enterprise Edition),我们一般选择社区版本进行下载和使用。 1.官网下载         打开MySQL官网下载页面,下滑找到社区版下载入口:         点击进入Windows版本下载:         我们可以选择需要的MySQL版本以及所需的操作系统,这里选择离线安装: 注意:MySQL 8.0 是带有 MySQL Installer 的最后一个系列。从

By Ne0inhk