Java基础的语法---String

Java的String类是不可变的,意味着一旦创建,其值就不能被改变。String类提供了丰富的API来操作字符串。

以下是一些常用的方法:

构造方法:

有以下几种常见的:

public class stringlearn {
    public static void main(String[] args) {
        String str1 = "Hello World";
        String str2 = new String(str1);
        String str3 = new String();

        char[] chararray = {'a', 'b', 'c', 'd', 'e'};
        String str4 = new String(chararray);
        String str5 = new String(chararray,0,2);

        byte[] bytearray = new byte[] {97,98,99,100,101,102,103};
        String str6 = new String(bytearray);

        System.out.println(str1);//Hello World
        System.out.println(str2);//Hello World
        System.out.println(str3);//
        System.out.println(str4);//abcde
        System.out.println(str5);//ab
        System.out.println(str6);//abcdefg
    }
}

Java13引入了引入的文本块的语法。

在文本块中,您可以跨多行定义字符串,而不需要使用\n+来拼接字符串。这样可以提高代码的可读性。

String str = """
                sfsdf
                sfdsd
                dsf
                dsf
                """;
System.out.println(str)

//输出的结果是
sfsdf
sfdsd
dsf
dsf

//

获取字符串长度:

此处str为String的变量名

int length = str.length();

字符访问

char firstchar = str.charAt(0);

// 获取指定位置的字符

子字符串

String Str = str.substring(startIndex);

从startIndex开始截取到字符串末尾

String Str = str.substring(startIndex, endIndex);

截取从startIndex到endIndex(不包括endIndex)的子串

startIndex和endIndex是要截取的位置(下标)

比较字符串

一、比较内容是否相等

boolean isEqual = str.equals(anotherStr);

二、忽略大小写比较

if(str1.equals("Hello World")){
            System.out.println("相等");
        }else {
            System.out.println("不相等");
        }

boolean isEqualIgnoreCase = str.equalsIgnoreCase(anotherStr);

三、比较返回一个数 

int compareResult = str.compareTo(anotherStr);

如果两个字符串相等,则返回值为0。 

如果调用compareTo()方法的字符串比传入的字符串小,则返回一个负整数。

如果调用compareTo()方法的字符串比传入的字符串大,则返回一个正整数。

具体返回值的计算规则如下:

  1. 如果两个字符串相等,则返回值为0。

  2. 如果调用compareTo()方法的字符串在按字典顺序排列时排在被比较的字符串之前,则返回一个负整数。这个负整数实际上是两个字符串在第一个不同字符上的 Unicode 编码点的差值。

  3. 如果调用compareTo()方法的字符串在按字典顺序排列时排在被比较的字符串之后,则返回一个正整数。这个正整数实际上也是两个字符串在第一个不同字符上的 Unicode 编码点的差值。

以下是ASCII与Unicode的介绍博客 

Unicode与ASCII-CSDN博客 

在Java中,字符串是以Unicode编码的方式存储的。因此,比较字符串时通常会涉及到比较其中包含的字符的Unicode编码点。

compareTo()方法在比较字符串时也是根据两个字符串中的对应字符的Unicode编码点来确定字符串的大小关系的。

了解Unicode编码点的概念对理解字符串比较以及其他涉及Unicode字符集的操作非常重要。Unicode编码点的唯一性可以帮助确保不同的字符在计算机中得到正确的表示和处理。 

查找字符或子串

使用indexOf与lastIndexOf 

indexOf

如果找到相关的字符就返回该字符第一次出现的位置(从0开始数)

lastIndexOf

如果找到相关的字符就返回该字符最后一次出现的位置(从0开始数)

 

替换字符串

有以下四种替换字符串的方法

前三种的替换都是全局调用

replaceAll的使用需要用正则表达式

replaceFirst则就是只替换第一次遇到的

replace与replaceAll的区别:

由于replaceAll使用正则表达式解析,处理速度通常比直接的replace慢,尤其是在处理大量数据时。因此,在不需要正则表达式功能时,优先考虑使用replace。

去除空白

一、trim()

去除字符串首尾的空格 

String str13 = " Hello World ";
String str14 = str13.trim();
System.out.println(str14);//Hello World

使用这个方法会返回一个新的字符串 

二、strip()

 

Java 11起,功能与trim相同,但更高效

 strip()                   删去头尾的空格

stripLeading()       删去头部的空格

stripTrailing()        删去尾部的空格

转换大小写

toUpperCase();  转化为大写

toLowerCase();  转化为小写

String str1 = "Hello World";
String str19 = str1.toLowerCase();
System.out.println(str19);   //hello world
String str20 = str1.toUpperCase();
System.out.println(str20);   //HELLO WORLD

分割字符串

String[] parts = str.split(","); // 根据指定分隔符拆分字符串为数组

String sentence = "Hello World this is Java";
String[] words = sentence.split(" ");
// words 现在是 ["Hello", "World", "this", "is", "Java"]

判断字符串特性

boolean str2 = str.isEmpty();

判断字符串是否为空

boolean str2 = str.isBlank();

Java 11起,判断字符串是否为空白(空格、制表符、换行符或空字符串)

连接字符串

一、concat()

String str1 = "Hello World";
String str2 = new String(str1);
String str21 =str1.concat(str2);
System.out.println(str21);

//Hello WorldHello World

二、join()

使用分隔符连接字符串数组

String str =String.join("_","str1","str2");
System.out.println(str);

//str1_str2

其他操作

转换为字节数组

byte[] bytes = str.getBytes();

格式化字符串

String str23 = String.format("hello|%20s|",str1);
System.out.println(str23);

//输出的结果是:hello|         Hello World|

反转字符串(非String类直接方法,但常用)

String reversed = new StringBuilder(str).reverse().toString(); 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/639492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CTF-web-WP-攻防世界-1

1、view_source:打开开发者工具F12就能看到flag 2、robots (1)、使用目录扫描工具 工具:dirsearch命令:python dirsearch.py -u http://61.147.171.105:55644/ -e * (2)、看到下面有robots.txt文件,在URL后面输入&#xff0c…

mdm 推送证书制作教程

第一步点击获取,点击以后会下载一个zip压缩包 解压以后:会得到四个文件,请务必保存好,待会需要使用 登录apple开发者官网 https://developer.apple.com/account/resources/certificates/list 点击添加证书 找到mdm csr 然后点击…

利用边缘计算网关的工业设备数据采集方案探讨-天拓四方

随着工业4.0时代的到来,工业设备数据采集成为了实现智能制造、提升生产效率的关键环节。传统的数据采集方案往往依赖于中心化的数据处理方式,但这种方式在面对海量数据、实时性要求高的工业场景时,往往显得力不从心。因此,利用边缘…

跟TED演讲学英文:Do schools kill creativity by Sir Ken Robinson

Do schools kill creativity? Link: https://www.ted.com/talks/sir_ken_robinson_do_schools_kill_creativity Speaker: Sir Ken Robinson Date: February 2006 文章目录 Do schools kill creativity?IntroductionVocabularySummaryTranscriptAfterword Introduction Sir…

Win10【无线显示器】安装失败(无法添加)解决中。。。

目录 ■失败现象 ■解决方法 【服务启动1】 【服务确认】 【服务启动2】 参考 ■查看电脑是否支持【Miracast无线投屏功能】 参考2 ■解决方法(对我的这台电脑有效) ■解决后的效果 ■连接时,出现【无法在此设备上查看受保护内容。…

查看目录或文件的磁盘使用情况

在排查问题过程中,会遇到磁盘占满,需要排查具体哪个文件占用比较大,此时可以使用du 命令 du [选项] [文件或目录...] 常用的选项包括: -h 或 --human-readable:以人类可读的格式(如 K、M、G)…

<MySQL> 【数据类型】

目录 一、数据类型一览 二、整型 (一)INT (二)BIT 三、浮点数 (一)FLOAT (二)DECIMAL (三)如何选择 四、字符 (一)CHAR &a…

hive初始化失败报错:Error: Duplicate key name ‘PCS_STATS_IDX‘ (state=42000,code=1061)

意思是key name ‘PCS_STATS_IDX’ (state42000,code1061)重复了,问题出在不是第一次初始化,因为我们在hive-site.xml中配置了 javax.jdo.option.ConnectionURL jdbc:mysql://192.168.200.137:3306/metastore?createDatabaseIfNotExisttrue JDBC conne…

Windows DNS 服务器配置转发器

DNS服务器转发器 在企业中由于自身条件的限制, 可能本身的DNS新能并不是很好,这个时候通过使用转发器功能, 将收到的DNS请求转发给另外一台高性能的DNS服务器,让其做后面的迭代查询。 1. 选择DNS服务器, 右击选择属性…

【知识蒸馏】deeplabv3 logit-based 知识蒸馏实战,对剪枝的模型进行蒸馏训练

本文将对【模型剪枝】基于DepGraph(依赖图)完成复杂模型的一键剪枝 文章中剪枝的模型进行蒸馏训练 一、逻辑蒸馏步骤 加载教师模型定义蒸馏loss计算蒸馏loss正常训练 二、代码 1、加载教师模型 教师模型使用未进行剪枝,并且已经训练好的原始模型。 teacher_mod…

Java+Spring+ MySQL + MyCat云HIS有哪些优势?智慧医疗云(HIS)低成本与安全保障的完美结合

JavaSpring MySQL MyCat云HIS有哪些优势?智慧医疗云(HIS)低成本与安全保障的完美结合 云HIS的优点包括节省成本、便捷高效、稳妥安全等。通过云HIS,医疗机构无需在本地建立机房、购买服务器和应用软件,降低了硬件和人力成本。同时&#xff0…

spring-boot-starter-mail 发送带附件的邮件信息

背景 项目使用的事ruoyi低代码开发平台ruoyi中有常见的web端下载excel的方式,但是这种方式是直接把输出流写到一个response中,而不是给一个outputstream,如果是给一个outputstream的话,就可以写入到一个固定的文件中去了 解决思路…

普源精电收购耐数电子——用“钞能力”拿下“量子”?

「量子市界」聚焦量子前沿,揭秘市场动态┃2024年4月30日,普源精电新增“量子科技”概念。 似乎一夜之间,新增“量子科技”概念的上市企业如雨后春笋般登场——普源精电就是其一。普源精电本就持有耐数电子32.26%股权,于4月2日发布…

飞天发布时刻|阿里云可观测全速演进

在数字化转型的浪潮中,云计算的深化应用不断推动着技术边界的扩展,而可观测性作为确保系统稳定运行与高效迭代的关键支撑,正逐渐成为现代云原生架构不可或缺的一部分。5 月 22 日 10:00,阿里云飞天发布时刻,阿里云应用…

【C++提高编程-03】----C++之STL常用容器基础实战

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

【机器学习】必会降维算法之:t-分布邻域嵌入(t-SNE)

t-分布邻域嵌入(t-SNE) 1、引言2、随机梯度下降(SGD)2.1 简介2.1.1 定义2.1.2 应用场景 2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例解析: 3、总结 1、引言 小屌丝:鱼哥, 啥是降维算法 小鱼…

(二)可视化面板:Grafana的安装

其他相关文章 (一)一套开源的系统监控报警框架:Prometheus安装 什么是grafana Grafana是一个面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为…

【汽车操作系统】Autosar和商用OS

目录 什么是AUTOSAR? CP AUTOSAR架构 CAN通信 AP AUTOSAR 背景 CP&AP 开发方面的不同: WRLinux介绍 QNX介绍 什么是AUTOSAR? 随着汽车功能越来越多,导致ECU的数量越来越多。1993年的时候,奥迪A8才只有5个ECU现在典型的现代汽车…

用数据,简单点!奇点云2024 StartDT Day数智科技大会,直播见

在充满挑战的2024,企业如何以最小化的资源投入和试错成本,挖掘新的增长机会,实现确定性发展? “简单点”是当前商业环境的应对策略,也是奇点云2024 StartDT Day的核心理念。 5月28日,由奇点云主办的2024 S…

分享一个思路,使用插桩技术解决慢查询测试问题

前段时间,我负责测试的系统在生产环境运行出现问题。该系统对于响应时间要求较高,问题发生的时候并发很高,出现大量请求超时,超时请求比例随时间推迟越来越高,最后几乎全部请求都失败。滚动重启了所有进程后&#xff0…