美文网首页
JavaSE之常用类

JavaSE之常用类

作者: kim_liu | 来源:发表于2018-09-26 18:00 被阅读42次

    这一篇主要是讲:
    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文档中查看。

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


    平头哥写代码

    相关文章

      网友评论

          本文标题:JavaSE之常用类

          本文链接:https://www.haomeiwen.com/subject/fkkjoftx.html