当前位置: 首页 > news >正文

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 WorldSystem.out.println(str2);//Hello WorldSystem.out.println(str3);//System.out.println(str4);//abcdeSystem.out.println(str5);//abSystem.out.println(str6);//abcdefg}
}

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

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

String str = """sfsdfsfdsddsfdsf""";
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(); 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Xed编辑器开发第三期:使用Rust从0到1写一个文本编辑器
  • python-找出四位数中的玫瑰花数
  • CSDN 访问量增加脚本
  • java单元测试:编写可测试性好的代码
  • 【机器学习论文阅读笔记】Robust Recovery of Subspace Structures by Low-Rank Representation
  • 嵌入式学习——3——域套接字UNIX
  • 如何在go语言中调用c语言代码
  • CTF-web-攻防世界-3
  • IT廉连看——UniApp——事件绑定
  • 使用FFmpeg推流实现在B站24小时点歌直播
  • 电路仿真软件:点亮教学新篇章,十大便利助力高效学习
  • -FIT5197
  • 基于Kafka的日志采集
  • ArcGIS提取含有计曲线的等高线
  • 设置环境变量,忽略yarn对node的版本检查
  • 自己简单写的 事件订阅机制
  • Apache的基本使用
  • ES6语法详解(一)
  • gitlab-ci配置详解(一)
  • isset在php5.6-和php7.0+的一些差异
  • JS函数式编程 数组部分风格 ES6版
  • Service Worker
  • Tornado学习笔记(1)
  • 包装类对象
  • 初识 webpack
  • 力扣(LeetCode)22
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 入门级的git使用指北
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​什么是bug?bug的源头在哪里?
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #AngularJS#$sce.trustAsResourceUrl
  • #NOIP 2014# day.1 T2 联合权值
  • (19)夹钳(用于送货)
  • (a /b)*c的值
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .net 简单实现MD5
  • .NET构架之我见
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net流程开发平台的一些难点(1)
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @antv/g6 业务场景:流程图
  • @FeignClient注解,fallback和fallbackFactory
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ 数据结构 - C++] AVL树原理及实现