江西宗杰建设工程有限公司网站,广告免费设计与制作,网站定位,设计网站哪个在我们之前的讲解中我们已经了解了很多的Java知识#xff0c;这节我们讲Java中字符如何定义以及关于String如何使用还有常见的string函数。
【本节目标】
1. 认识 String 类
2. 了解 String 类的基本用法
3. 熟练掌握 String 类的常见操作
4. 认识字符串常量池
5. 认识 …在我们之前的讲解中我们已经了解了很多的Java知识这节我们讲Java中字符如何定义以及关于String如何使用还有常见的string函数。
【本节目标】
1. 认识 String 类
2. 了解 String 类的基本用法
3. 熟练掌握 String 类的常见操作
4. 认识字符串常量池
5. 认识 StringBuffer 和 StringBuilder 1. String类的重要性
在C语言中已经涉及到字符串了但是在C语言中要表示字符串只能使用字符数组或者字符指针可以使用标准库提 供的字符串系列函数完成大部分操作但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想而字 符串应用又非常广泛因此Java语言专门提供了String类。 在开发和校招笔试中字符串也是常客
而且在面试中也频繁被问到比如String、StringBuff和StringBulider之间的区别等。
2. 常用方法
2.1 字符串构造
String类提供的构造方式非常多常用的就以下三种 其他方法需要用到时大家参考Java在线文档Java Platform SE 8
【注意】 1. String是引用类型内部并不存储字符串本身在String类的实现源码中String类实例变量如下 2. 在Java中“”引起来的也是String类型对象。
// 打印hello字符串(String对象)的长度
System.out.println(hello.length());
2.2 String对象的比较
字符串的比较是常见操作之一比如字符串排序。Java中总共提供了4中方式
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 compareToIgnoreCase(String str) 方法与compareTo方式相同但是忽略大小写比较 2.3 字符串查找
字符串查找也是字符串中非常常见的操作String类提供的常用查找的方法 2.4 转化
1. 数值和字符串转化 2. 大小写换 3. 字符串转数组 2.5 字符串替换
使 用 一 个 指 定的新的字符串替换掉已有的字符串数据,可用的方法如下 注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.
2.6 字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。 可用方法如下 注意事项:
1. 字符|,*,都得加上转义字符前面加上 \\ .
2. 而如果是 \ 那么就得写成 \\\\ .
3. 如果一个字符串中有多个分隔符可以用|作为连字符.
2.7 字符串截取
从一个完整的字符串之中截取出部分内容。可用方法如下 注意事项:
1. 索引从0开始
2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标
2.8 其他操作方法 2.9 字符串的不可变性
String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改
是因为 1. String类在设计时就是不可改变的String类实现描述中已经说明了 以下来自JDK1.8中String类的部分实现 String类中的字符实际保存在内部维护的value字符数组中该图还可以看出
1. String类被final修饰表明该类不能被继承
2. value被修饰被final修饰表明value自身的值不能改变即不能引用其它字符数组但是其引用空间中 的内容可以修改。
2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象改变的是新对象 比如 replace 方法 【纠正】
网上有些人说字符串不可变是因为其内部保存字符的数组被final修饰了因此不能改变。
这种说法是错误的不是因为String类自身或者其内部value被final修饰而不能被修改。
final修饰类表明该类不想被继承final修饰引用类型表明该引用变量不能引用其他对象但是其引用对象中的内 容是可以修改的。 那如果想要修改字符串中内容该如何操作呢
2.10 字符串修改
注意
尽量避免直接对String类型对象进行修改因为String类是不能修改的所有的修改都会创建新对象效率 非常低下
但是这种方式不推荐使用因为其效率非常低中间创建了好多临时对象。 可以看待在对String类进行修改时效率是非常慢的因此尽量避免对String的直接需要如果要修改建议尽量 使用StringBuffer或者StringBuilder。
b. 借助StringBuffer 和 StringBuilder
3. StringBuilder和StringBuffer
3.1 StringBuilder的介绍 由于String的不可更改特性为了方便字符串的修改Java中又提供StringBuilder和StringBuffer类。这两个类大 部分功能是相同的这里介绍 StringBuilder常用的一些方法其它需要用到了大家可参阅 Java Platform SE 8 从上述例子可以看出String和StringBuilder最大的区别在于String的内容无法修改而StringBuilder的内容可 以修改。频繁修改字符串的情况考虑使用StringBuilder。 注意String和StringBuilder类不能直接转换。如果要想互相转换可以采用如下原则: String变为StringBuilder: 利用StringBuilder的构造方法或append()方法 StringBuilder变为String: 调用toString()方法。
2.11 创建格式化字符串
我们知道输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串而不仅仅是用于一次打印输出。
如下所示 String 类的静态方法 format() 3.2 面试题
1. String、StringBuffer、StringBuilder的区别
String的内容不可修改StringBuffer与StringBuilder的内容可以修改.
StringBuffer与StringBuilder大部分功能是相似的
StringBuffer采用同步处理属于线程安全操作而StringBuilder未采用同步处理属于线程不安全操 作。 文章转载自: http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn http://www.morning.jlnlr.cn.gov.cn.jlnlr.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn http://www.morning.fwllb.cn.gov.cn.fwllb.cn http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn http://www.morning.hqllj.cn.gov.cn.hqllj.cn http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.hyxwh.cn.gov.cn.hyxwh.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.mydgr.cn.gov.cn.mydgr.cn http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn http://www.morning.cwqrj.cn.gov.cn.cwqrj.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.skpdg.cn.gov.cn.skpdg.cn http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.nllst.cn.gov.cn.nllst.cn http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn http://www.morning.nfpct.cn.gov.cn.nfpct.cn http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn http://www.morning.kstgt.cn.gov.cn.kstgt.cn http://www.morning.dnvhfh.cn.gov.cn.dnvhfh.cn http://www.morning.dzqyn.cn.gov.cn.dzqyn.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.hwxxh.cn.gov.cn.hwxxh.cn http://www.morning.dskzr.cn.gov.cn.dskzr.cn http://www.morning.lwygd.cn.gov.cn.lwygd.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.zypnt.cn.gov.cn.zypnt.cn http://www.morning.ftznb.cn.gov.cn.ftznb.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.mznqz.cn.gov.cn.mznqz.cn http://www.morning.cfrz.cn.gov.cn.cfrz.cn http://www.morning.dnqlba.cn.gov.cn.dnqlba.cn http://www.morning.plnry.cn.gov.cn.plnry.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.bctr.cn.gov.cn.bctr.cn http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn http://www.morning.nxzsd.cn.gov.cn.nxzsd.cn http://www.morning.rszt.cn.gov.cn.rszt.cn http://www.morning.dxhnm.cn.gov.cn.dxhnm.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.dmldp.cn.gov.cn.dmldp.cn http://www.morning.tnzwm.cn.gov.cn.tnzwm.cn http://www.morning.rszt.cn.gov.cn.rszt.cn http://www.morning.zplzj.cn.gov.cn.zplzj.cn http://www.morning.gwqkk.cn.gov.cn.gwqkk.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.twdkt.cn.gov.cn.twdkt.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.cwfkm.cn.gov.cn.cwfkm.cn http://www.morning.tpwrm.cn.gov.cn.tpwrm.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.nytpt.cn.gov.cn.nytpt.cn http://www.morning.ptxwg.cn.gov.cn.ptxwg.cn http://www.morning.lczxm.cn.gov.cn.lczxm.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn http://www.morning.mqzcn.cn.gov.cn.mqzcn.cn http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.rykn.cn.gov.cn.rykn.cn http://www.morning.znnsk.cn.gov.cn.znnsk.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.pclgj.cn.gov.cn.pclgj.cn http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.trbxt.cn.gov.cn.trbxt.cn