| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java中的String类 -> 正文阅读 |
|
[Java知识库]Java中的String类 |
目录 1. String类的重要属性? 在C语言中已经涉及到字符串,但是在c语言中表示字符串只能使用字符数组或字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但这种将数据和操作数据分离开的方式不符合面向对象的思想,而字符串应用又非常广泛,因此Java专门提供了String类。 在开发和校招中,字符串也是常客,面试中也被频繁问到,比如String,StringBuffer,StringBuilder之间的区别等。 2. 常用方法2.1 字符串构造String类常用的构造方式有以下三种:
注意: 1. String是引用类型,内部并不存储字符串本身,在String类的实现源码中,String类的实例变量如下:
?2. 在Java中“ ”引起来的也是String类型对象
2.2 String对象的比较1. == 比较是否引用同一个对象 注意:对于基本类型,==比较变量中的值,对于引用类型,==比较引用的地址
2. boolean equals(Object anObject)方法:按照字典序比较---字符大小的顺序 String类重写了父类Object中equals方法,Object中equals默认按照==比较,String类重写equals后,按照如下规则进行比较,比如:s1.equals(s2) 3. int compareTo(String s)方法:按照字典序比较 与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型,具体比较方式: 1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符大小的差值 2. 如果前k个字符相等(k为两个字符长度最小值),返回两个字符串长度差值。
4.int compareToIgnorCase(String str)方法:与compareTo方式相同,但是忽略大小写比较
2.3 字符串查找字符串查找也是字符串中重要的操作,String类提供常用查找的方法
注意:上述方法都是实例方法 2.4 转化1.数值和字符串转化
2. 大小写转换
?3. 字符串与数组相互转换 //字符串转数组 String s = "hello"; char[] ch = s.toCharArray(); for(int i=0;i<ch.length;i++){ System.out.println(ch[i]); } System.out.println(); //数组转字符串 String s2 = new String(ch); System.out.println(s2); 4. 格式化 String s = String.format("%d-%d-%d",2021,10,29); System.out.println(s); //2021-10-29 ?2.5 字符串的不可变性String是一种不可变的对象,字符串中的内容是不可改变的,字符换不可被修改,是因为: 1. String类在设计时就是不可改变的,String类实现描述中已经说明了
?String类中的字符实际保存在内部维护的value字符数组中,该图还可以看出: 1.String类被final修饰,表示该类不能被继承 2. value被final修饰,表明value自身的值不能改变,即不能引用其他字符数组,但是引用空间中的内容可以修改 2. 所有涉及到可能修改字符串内容的操作都是在创建一个新对象,改变的是新对象 final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容可以修改 为什么String要设计成不可变的? 2. 不可变对象是线程安全的 3. 不可变对象更方便缓存hash code,作为key时可以更高效的保存到HashMap中。 2.6 字符串修改注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下。
这种方式效率非常低,不推荐使用,中间创建了好多临时对象 3. StringBuilder和StringBuffer3.1 StringBuilder的介绍由于String的不可更改特性,为了方便字符串的修改,Java中提供了StringBuilder和StringBuffer类,这两个类大部分功能是相同的,这里介绍StringBuilder常用的一些方法。
注意:String和StringBuilder类不能直接转换,要转换,采用以下原则: · String变为StringBuilder,利用StringBuilder的构造方法或append()方法 · StringBuilder变为String,调用toString()方法 3.2 区别· String的内容不可修改,StringBuffer与StringBuilder的内容可以修改 · StringBuffer与StringBuilder大部分功能是相似的 · StringBuffer采用同步处理,属于线程安全操作;StringBuilder未采用同步处理,属于线程不安全操作 ? ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:58:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |