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

认识String类

文章目录

  • String类
    • 字符串的遍历
    • 字符串的比较
    • 字符串的替换
    • 字符串的转换
    • 字符串的切割
    • 字符串的切片
    • 字符串的查找
  • 总结

String类

在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提
供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面向对象的思想,而字
符串应用又非常广泛,因此Java语言专门提供了String类。

String是一种不可变对象

在java.lang包里,不需要import手动导包,系统自动导好了

package java.lang;

字符串常量池:

字符串内容不可修改的原因
误区1:认为final修饰了String,被final修饰意味着不能被继承,并不是不能修改
在这里插入图片描述
误区2:以为final修饰了value
在这里插入图片描述
正确的答案是:
是因为value是由private修饰的,只能在本类中使用,所以不能修改value的值,只能创建新的字符串对象
在这里插入图片描述
字符串的创建
推荐使用直接赋值
new字符串对象需要在堆上开辟空间

public class demo1 {public static void main(String[] args) {String str="hello world";String str1=new String("hello world");String str2=str1;System.out.println(str+" "+str1);System.out.println(str2);}
}

内存图
在这里插入图片描述
由于字符串不可修改,使用方法都是创建了新的对象,所以使用了方法需要用变量接收

字符串的遍历

通过length()方法
和charAt()获取字符串中的元素

public class demo1 {public static void main(String[] args) {String s="abcdefg";for (int i = 0; i < s.length(); i++) {System.out.print(s.charAt(i)+" ");}
}

在这里插入图片描述

字符串的比较

==比较的是地址
通过.equals比较的是字符串的内容是否一致,返回的是boolean类型

 public static void main(String[] args) {String a="haha";String b=new String("haha");System.out.println(a==b);System.out.println(a.equals(b));}

输出结果是
在这里插入图片描述

a的地址是在堆中的字符串池里的,而b是new出来的在堆里的另一块地址,地址不一样,==比较的是地址故输出false;而equal是比较内容是否相同

引用类型不能直接比较大小

字符串的替换

替换单个字符

    public static void main(String[] args) {String s = "abcdefg";String replace = s.replace('a', 'v');System.out.println(replace);}
}

在这里插入图片描述
在这里插入图片描述
替换所有内容

public class demo1 {public static void main(String[] args) {String s1= "ayouayouayou";String s2 = s1.replaceAll("a", "love");System.out.println(s2);}
}

在这里插入图片描述
替换出现的第一个内容

public class demo1 {public static void main(String[] args) {String s1= "ayouayouayou";String s2 = s1.replaceFirst("a", "love");System.out.println(s2);}
}

在这里插入图片描述

字符串的转换

  1. 大小写的转换
public class demo1 {public static void main(String[] args) {String s1= "Sbfabfcsf";String s = s1.toLowerCase();System.out.println(s);String s2 = s1.toUpperCase();System.out.println(s2);}
}

在这里插入图片描述

  1. 字符串和数组的转换
public class demo1 {public static void main(String[] args) {String str="ahfkfIH";//字符串转数组char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.print(chars[i]+" ");}System.out.println();//数组转字符串String str2=new String(chars);System.out.println(str2);}
}
  1. 数值和字符串的转换
    数值转字符串
    各种类型都可以转换成字符串在这里插入图片描述

valueOf是于Object类的,在调用时需要用类名去调用

public class demo1 {public static void main(String[] args) {String str=String.valueOf(113);System.out.println(str);}
}

字符串转数字

public class demo1 {public static void main(String[] args) {String str = "123";int i = Integer.parseInt(str);System.out.println(i);}
}
public class demo1 {public static void main(String[] args) {String str = "123.21";double i = Double.parseDouble(str);System.out.println(i);}
}

在这里插入图片描述

在这里插入图片描述

字符串的切割

一个是从起始位置截到末尾
一个是在指定范围内切割

在这里插入图片描述

示例

 public static void main(String[] args) {String str="ahhfbg";String str1 = str.substring(2);System.out.println(str1);String str2 = str.substring(2, 4);System.out.println(str2);
}

在这里插入图片描述

字符串的切片

在这里插入图片描述
演示:

public class Test {public static void main(String[] args) {String str = "https://mp.csdn.net/mp_blog/manage/article?spm=1011.2266.3001.5448" ;String[] result = str.split("/") ;for(String s: result) {System.out.println(s);}}
}

在这里插入图片描述

public class Test {public static void main(String[] args) {String str = "https:/hhhh/mp.csdn.net/mp_blog/manage/article?spm=1011.2266.3001.5448" ;String[] result = str.split("/",3) ;for(String s: result) {System.out.println(s);}}
}

在这里插入图片描述
注意:

  1. 字符"|" ,“*”,“+“都得加上转义字符,前面加上”\\”.
  2. 而如果是"\“,那么就得写成”\\\\".
  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

字符串的查找

在这里插入图片描述
重点掌握charAt()
在这里插入图片描述
在这里插入图片描述
如何处理异常我们下篇博客介绍!

方法演示:

public class Test {public static void main(String[] args) {String s="abfsasrabcdef";System.out.println(s.charAt(5));//sSystem.out.println(s.indexOf('a'));//0System.out.println(s.indexOf('a',3));//4System.out.println(s.indexOf("sa"));//3System.out.println(s.indexOf("sa",4));//-1System.out.println(s.lastIndexOf('a'));//7System.out.println(s.lastIndexOf('a',5));//4System.out.println(s.lastIndexOf("ab"));//7System.out.println(s.lastIndexOf("b",8));//8}
}

总结

相信你看完已经对String类有了一定的理解,继续学习下去吧!
在这里插入图片描述

http://www.lryc.cn/news/390187.html

相关文章:

  • 计算机图形学入门23:蒙特卡洛路径追踪
  • 探索 TensorFlow 模型的秘密:TensorBoard 详解与实战
  • yolov8obb角度预测原理解析
  • CICD之Git版本管理及基本应用
  • Python作用域及其应用
  • 谷歌上架,应用被Google play下架之后,活跃用户会暴跌?这是为什么?
  • web安全渗透测试十大常规项(一):web渗透测试之Fastjson反序列化
  • Unity 3D软件下载安装;Unity 3D游戏制作软件资源包获取!
  • PyTorch之nn.Module与nn.functional用法区别
  • 2024.06.24 校招 实习 内推 面经
  • 【C++】using namespace std 到底什么意思
  • 基于ESP32 IDF的WebServer实现以及OTA固件升级实现记录(三)
  • 116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台
  • Android - Json/Gson
  • 盲信号处理的发展现状
  • 二轴机器人装箱机:重塑物流效率,精准灵活,引领未来装箱新潮流
  • 使用python做飞机大战
  • Python面向对象编程:派生
  • 华为仓颉编程语言
  • 【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(2)
  • 解锁数据资产的无限潜能:深入探索创新的数据分析技术,挖掘其在实际应用场景中的广阔价值,助力企业发掘数据背后的深层信息,实现业务的持续增长与创新
  • Bridging nonnull in Objective-C to Swift: Is It Safe?
  • 算法训练 | 图论Part1 | 98.所有可达路径
  • 【JVM基础篇】垃圾回收
  • Spark join数据倾斜调优
  • YOLOv5初学者问题——用自己的模型预测图片不画框
  • 【linux学习---1】点亮一个LED---驱动一个GPIO
  • Redis分布式锁代码实现详解
  • Day01-02-gitlab
  • PyCharm远程开发配置(2024以下版本)