一.String 类是一个比较相当重要的类,像网络上很多数据都是以字符串的形式进行处理的,它的构造函数很多,它允许通过其它类型的数组作为构造参数,能很方便的与其他类型数据进行转换.
例如:
String(byte[] bytes) : 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes) : 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
二.对字符串的的一些处理
对字符串的处理也很方便,可以通过调用方法完成对其的定位,查找,截取,转化,比较,替换等等操作,在此就不举例了,API里对字符串的方法很多很清楚
三.特别注意:
先看下面一个程序:
public class test {
public static void main(String[] args) {
String str = new String("");
String dtr1 = "";
boolean b = str=="";
boolean b1 = str.equals(dtr1);
System.out.println(b);
System.out.println(b1);
}
}
以上程序的输出结果是:
false,true以惯常思维应该是两个true才对,其实仔细分析一下,不难发现里面的不同之处,首先我们应该明确的是String 是一个类,它并不属于8种基本数据类型,而且是一个进过特殊处理的类,一般的类要创建对象是需要new一下的,而对于String类则不然,它既可以new也可以不new,当不new的时候JVM里给它准备了一个特别的‘房间’——常量池,里面存储数据时和集合框架里的Set很相像,不会允许重复,如果上面再有一个变量、str=””,用双等号比较会发现结果是true,这说明此时他们占用同一个地址。说的有点远,现在说一下上面的程序,如果是对于8种基本数据类型,上面的程序结果肯定是两个true,但对于类类型,对于‘==’号,数据识别是通过地址的,而equals是对于两个类的具体数据而言的,所以以上程序的的结果就显而易见了。