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

Java String函数的使用

文章目录

  • String
    • 字符串比较
    • 字符串查找
    • 转化
    • 字符串替换
    • 字符串拆分
    • 字符串截取(常用)
    • 字符串的不可变性

在这里插入图片描述

String

  1. str本来是字符串常量的引用,应该打印地址,但是编译器重写了toString方法,所以打印hello
    在这里插入图片描述
  2. String 的构造方法
public class test {public static void main(String[] args) {// 用常量字符串构造String s1 = "hello";System.out.println(s1);// 用字符数组构造char[] array = new char[]{'a','b','c'};String s2 = new String(array);System.out.println(s2);char[] array1 = new char[]{'a','b','c'};String s4 = new String(array,0,2);// 从0位置后拿2个字符System.out.println(s4);// 直接newSting对象构造String s3 = new String("hello");System.out.println(s3);}
}
  1. String对象在内存中的情况

在这里插入图片描述

在这里插入图片描述
4. 空指针异常和空字符串,isEmpty()判断是否为空字符串

在这里插入图片描述

字符串比较

  1. s1 == s2 比较地址
  2. s1.equals(s2)比较是否相等,返回true或者false
  3. s1.compareTo(s2)比较大小
  4. s1.compareToIgonreCase(s2)忽略大小写比较
public class test {public static void main(String[] args) {String s1 = new String("hello");String s2 = new String("Hello");System.out.println(s1 == s2);// 不等于,s1和s2表示对象的引用都存的是地址System.out.println(s1.equals(s2));System.out.println(s1.compareTo(s2));// s1 大于 s2 返回正数// s1 小于 s2 返回负数// s1 等于 s2 返回0System.out.println(s1.compareToIgnoreCase(s2));// 忽略大小写比较}
}

字符串查找

  1. char charAt(int index),返回数组中下标对应的字符
public static void main(String[] args) {String s1 = new String("hello");char ch = s1.charAt(1);System.out.println(ch);// e}
  1. int indexOf(char ch),返回第一次出现ch字符的下标
String s2 = new String("hello");int index = s1.indexOf('l');System.out.println(index);// 2
  1. int indexOf(char ch,int k),k表示下标,从指定位置开始查找
String s2 = new String("hello");int index = s1.indexOf('l',3);System.out.println(index);// 3
  1. int indexOf(String s),可以查找子串在主串中出现的位置,如果没有找到返回-1
String s3 = "ababcdeabcf";int index = s3.indexOf("abc");System.out.println(index);// 2int index1 = s3.indexOf("abc",3);System.out.println(index1);// 7 
  1. int lastIndexOf(String s),倒着往前找,返回第一个找到的下标
 String s3 = "ababcabcd";int index = s3.lastIndexOf("abc");System.out.println(index);// 5int index1 = s3.lastIndexOf("abc",4);System.out.println(index1);// 2// 从4下标位置倒着往前找

转化

  1. 数字和字符串之间的转化
 String s2 = String.valueOf(new Student("zhangsan",20));System.out.println(s2);String s3 = String.valueOf(123);System.out.println(s3);String s4 = String.valueOf(123.34);System.out.println(s4);String s5 = String.valueOf(true);System.out.println(s5);// true

在这里插入图片描述
2. 字符串转数字

 int a = Integer.parseInt("190");System.out.println(a);int b = Integer.parseInt("19.9");// 错误,给的要是整数的字符串

在这里插入图片描述

  1. 大小写转化

小写转大写:toUpperCase
转变为大写不是在原有字符串的基础上转换,而是转变为大写是一个新的对象,不会改变原有的字符串

String s = "hello";String ret = s.toUpperCase();System.out.println(ret);

大写转小写

String s = "HEllo";
String ret = s.toLowerCase();System.out.println(ret);// hello
  1. 字符串转为数组
String s = "hello";char[] ret = s.toCharArray();System.out.println(Arrays.toString(ret));// [h,e,l,l,o]

数组转为字符串

char[] ret = {'a','b','c'};String s = new String(ret);System.out.println(s);// abc
  1. 格式转换
String s = String.format("%d-%d-%d",2019,9,20);
System.out.println(s);// 2019-9-20

字符串替换

  1. 替换字符串

在这里插入图片描述

  1. 替换单个字符

在这里插入图片描述
3. 替换第一个ab

在这里插入图片描述
4. 把所有的ab都替换为123

在这里插入图片描述

字符串拆分

  1. s.split()以这里面的字符串为标准分割
public static void main(String[] args) {String s = "hello world k";String[] array = s.split(" ");System.out.println(Arrays.toString(array));// [hello,world,k]String s1 = "hello world k";String[] array1 = s.split(" ",2);// 以空格分割最多分成两组System.out.println(Arrays.toString(array1));// [hello, world k]}
  1. 特殊的情况,使用转义字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多次分割

在这里插入图片描述

字符串截取(常用)

  1. substring(a,b) [a,b) a和b均为下标
String str = "hello";
String ret = str.substring(0,3);// hel
  1. 给一个参数,会把后面的全不截取
String str = "hello";
String ret = str.substring(0);// hello
  1. trim(),去掉字符串的左右空格,中间的空格不可去掉

在这里插入图片描述

字符串的不可变性

  1. 字符串中的value[] 数组是被private修饰的,也没有提供get方法,在类外是无法拿到的,就无法修改该数组了
  2. 而被final修饰的,只是表明它是常量了,它的引用只能指向一个对象,不能被改变成指向别的对象
  3. 被final修饰的不能被继承
final int[] array = {1,2,3};
// array = new int[]{1,2};
// 不能改变array的指向了 
array[0] = 2;// 可被修改

在这里插入图片描述

http://www.xdnf.cn/news/9354.html

相关文章:

  • 016搜索之广度优先BFS——算法备赛
  • word中表格拉不动以及插入图片有间距
  • MySQL的参数 innodb_force_recovery 详解
  • vue3+element-plus el-date-picker日期、年份筛选设置本周、本月、近3年等快捷筛选
  • JavaEE初阶-网络编程
  • 使用Mathematica绘制随机多项式的根
  • OpenCV---findCountours
  • [java八股文][JavaSpring面试篇]SpringBoot
  • 前端Vue3列表滑动无限加载实现
  • 佰力博科技与您谈谈高温介电温谱仪如何保养
  • ROS2学习(15)------ROS2 TF2 机器人坐标系管理器
  • MySQL问题:MySQL中使用索引一定有效吗?如何排查索引效果
  • LeetCode-栈-最小栈
  • 现代 CSS 高阶技巧:实现平滑内凹圆角的工程化实践
  • UDP 传输时间(延迟)
  • 关于Oracle SGA内存抖动
  • FastAPI 异常处理
  • vscode ssh远程服务端设置
  • OpenCV视觉图片调整:从基础到实战的技术指南
  • PH热榜 | 2025-05-26
  • hive 笔记
  • WEB安全--RCE--webshell HIDS bypass4
  • PostgreSQL auto_explain
  • Unity3D中Mono与IL2CPP对比
  • 使用mermaid快速绘制流程图
  • 3D Tiles高级样式设置与条件渲染(3)
  • 50多种垃圾类型都能清理Wise便携版:系统临时文件 /浏览器缓存秒清理
  • 利用亮数据实现大规模数据自动抓取
  • 项目部署react经历
  • IDEA使用Git进行commit提交到本地git空间后撤回到commit版本之前