这一篇主要是讲:
1.字符串相关String、StringBuffer等
2.基本数据类型包装类
3.Math类
4.File类
5.枚举类
String类
java.lang.String类代表不可变的字符序列。“xxxxxx”为该类的一个对象。在Api中的解释如下:
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
因为 String 对象是不可变的,所以可以共享。例如:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
String类常见的构造方法:
1.String(String original) 创建一个String对象为original的拷贝。
2.String(char [] value) 用一个字符数组创建一个String对象
3.String(char [] value,int offset,int count) 用一个字符数组从offset项开始的count个字符序列创建一个String对象。
看这样一段代码:
public class StringTest {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "World";
String s3 = "Hello";
System.out.println(s1 == s3);
s1 = new String("Hello");
s2 = new String("Hello");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
char[] c = {'s','u','n',' ','j','a','v','a'};
String s4 = new String(c);
String s5 = new String(c,4,4);
System.out.println(s4);
System.out.println(s5);
}
}
图片.png
这里重点说一下equals(),Object中的equals(),是供子类重写的,因此,每次用到这个方法的时候要去源码看看是否重写了该方法。在String类中重写了该方法,我们点进源码查看,源码如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[I])
return false;
I++;
}
return true;
}
}
return false;
}
可以看到,String类中的equals(),比较的是长度和内容,长度和内容一致,那么返回true,否则返回false。
其它String类中的方法,可以查看Java中文API。
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
其中public static String valueOf(xxx),把其它基本类型转换成String类型。当参数是Object类型时,该方法实际上调用的是toString()方法。
StringBuffer
StringBuffer代表可变的字符序列,StringBuffer和String类似,但StringBuffer可以对其字符串进行改变。 Buffer指的是缓冲区,举个例子:
String 为不可变的字符串,因此当拼接字符串时是无法直接往S1指向的内存区域添加的,只能重新在data seg中创建一块新的区域,字符串拼接完成之后,再将S1指向它。
有了StringBuffer之后,StringBuffer是可变字符序列,不再需要创建一个新的区域来进行字符串的拼接,直接可以改变其中的字符串即可。
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
基础数据包装类,Math类,File类,可以自行去Api文档中查看。
欢迎关注个人公众号,加入进来一起学习吧!
平头哥写代码
网友评论