1、实例化String对象
两种方式:
- 直接为String对象赋值:String string="I Love Chain!";
- 调用String类的构造方法:String string=new String("I Love China!");
2、String的内容比较
对于基本数据类型可以通过“==”进行比较,然而对于String来说,“==”是用来进行地址值的比较的,换句话说:String的内容相同,但地址值不同(不同的创建方式导致),使用“==”比较返回的结果就为false。
既然无法使用“==”进行判断,那么该如何去判断两个字符串的内容是否相等呢?此时,String提供了一个方法:
public boolean equals(String str)
举个例子:使用equals()对String内容进行比较
String内容比较.png程序运行结果:
返回结果.png
因为equals()的作用是比较内容的。所以此处的返回结果都为true;
3、String两种实例化方式的区别
既然都能实例化String,那么两种方式有什么区别?该使用哪种方式呢?
如果想对以上问题进行解释,首先需要明白一个概念,即一个字符串就是一个String类的匿名对象。
所以对于以下代码:
String str="hello";
实际上就是把一个在堆内存中开辟好的堆内存空间的使用权给了str对象,而使用这种方法还有一个好处,就是如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再重新开辟空间,而继续使用已经开辟好的堆内存。
下面举个例子吧:采用直接赋值的方式声明多个Stiing对象,并且内容相同,观察地址比较
返回结果:
返回结果.png
从以上结果可以看出,虽然声明了多个内容相同的字符串,但它们的堆内存地址值相等。
而当使用new String()的方式实例化String对象的时候,会在堆内存中开辟两个空间,但真正使用的只是new开辟的空间,另外一个就是垃圾空间了。
总结一下:通过比较可知,对于String的实例化操作就采用直接赋值的方式完成
4、字符串的内容不可改变
郑重提醒:字符串的内容一旦声明则不可改变
举个例子:字符串内容的修改
运行结果:
运行结果.png
从程序的运行结果发现,String对象的内容却是已经修改了,但是内容真的被修改了吗?
字符串内容的修改.png从上图可以发现,一个String对象内容的改变实际上是通过内存地址的“断开---连接”变化完成的,而本身字符串中的内容并没有任何的变化。
所以在开发中绝对不能在循环中对字符串的内容进行改变。对于这种问题,Java提供了StringBuffer类来完成,暂且不介绍StringBuffer。
5、String类中常用方法
5.1 字符串与字符数组的转换
String可以使用toCharArray()方法变成一个字符数组,也可以使用Sting的构造方法把一个字符数组变成一个字符串 。
一言不合上代码.png
程序运行结果:
运行结果.png
5.2 从字符串中取出指定位置的字符:charAt()
一言不合上代码.png程序运行结果:l
5.3 字符串与byte数组的转换
String可以通过getBytes()方法将String变为一个byte数组,然后可以通过String的构造方法将一个byte数组重新变为String。
一言不合上代码.png
程序运行结果:
运行结果.png
5.4 取得一个字符串的长度:length()
5.5 查找一个指定字符串是否存在:indexOf()
一言不合上代码.png程序运行结果:
运行结果.png
5.6 去掉左右空格:trim()
5.7 字符串截取:substring()
在String中提供了两个substring()方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。
5.8 按照指定的字符串拆分字符串:split()
在String中通过split()方法可以进行字符串的拆分操作,拆分的数据将以字符串数组的形式返回。
一言不合上代码.png程序运行结果:
运行结果.png
5.9 字符串的大小写转换:
- 小写转大写:toUpperCase()
- 大写转小写:toLowerCase()
5.10 判断是否已指定的字符串开头或结尾
- 判断开头:startsWith()
- 判断结尾:endsWith()
5.11 不区分大小写进行字符串的比较
equals()方法是区分大小写的,这时就用到equalsIgnoreCase()方法。
5.12 将一个指定的字符串替换成其他的字符串
使用String的replaceAll()方法可以将字符串的指定内容进行替换。
总结:至此,String的内容就先整理到这!!!
2016/12/14续补两张图:
String的方法.jpg 基本类型与String转换.jpg