JavaSE之常用类

2018-09-26  本文已影响42人  kim_liu

这一篇主要是讲:
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指的是缓冲区,举个例子:

image.png
String 为不可变的字符串,因此当拼接字符串时是无法直接往S1指向的内存区域添加的,只能重新在data seg中创建一块新的区域,字符串拼接完成之后,再将S1指向它。
有了StringBuffer之后,StringBuffer是可变字符序列,不再需要创建一个新的区域来进行字符串的拼接,直接可以改变其中的字符串即可。
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

基础数据包装类,Math类,File类,可以自行去Api文档中查看。

欢迎关注个人公众号,加入进来一起学习吧!


平头哥写代码
上一篇下一篇

猜你喜欢

热点阅读