当前位置: 首页 > 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类有了一定的理解,继续学习下去吧!
在这里插入图片描述

相关文章:

  • mac 安装homebrew
  • uniapp标题水平对齐微信小程序胶囊按钮及适配
  • 【mybatis】mybatis-plus中BaseMapper接口常用方法整理
  • avformat_open_input 代码再分析
  • 不同系统间数据交换要通过 api 不能直接数据库访问
  • 【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十九)
  • LeetCode:经典题之144、94、145、102题解及延伸|二叉树的遍历|前中后层序遍历|Morris算法
  • Rust学习笔记 (命令行命令) : 用override set 设置工具链
  • OpenCV cv::Mat到 Eigen 的正确转换——cv2eigen
  • Vue3轻松创建交互式仪表盘
  • miniconda3 安装jupyter notebook并配置网络访问
  • 番外1:企业数据
  • 【文档+源码+调试讲解】科研经费管理系统
  • WebKit简介及工作流程
  • 是什么让以太坊从众多公链中脱颖而出
  • 《深入 React 技术栈》
  • 78. Subsets
  • CSS实用技巧干货
  • Java反射-动态类加载和重新加载
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Mybatis初体验
  • Redash本地开发环境搭建
  • select2 取值 遍历 设置默认值
  • Spring Cloud Feign的两种使用姿势
  • 高性能JavaScript阅读简记(三)
  • 前端面试之闭包
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 删除表内多余的重复数据
  • 通过git安装npm私有模块
  • 王永庆:技术创新改变教育未来
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 回归生活:清理微信公众号
  • !$boo在php中什么意思,php前戏
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #微信小程序(布局、渲染层基础知识)
  • $NOIp2018$劝退记
  • (04)odoo视图操作
  • (2)MFC+openGL单文档框架glFrame
  • (27)4.8 习题课
  • (55)MOS管专题--->(10)MOS管的封装
  • (MATLAB)第五章-矩阵运算
  • (rabbitmq的高级特性)消息可靠性
  • (超详细)语音信号处理之特征提取
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .net 简单实现MD5
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net(C#)中String.Format如何使用
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .Net程序帮助文档制作
  • .NET中统一的存储过程调用方法(收藏)