工具类(Object,String,包装类,Math,日期类)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Youth_Mr6/article/details/82152924

工具类:
    Object:所有类的超类,唯一一个没有父类的类 
        常用方法:
            1)equals();
            2)hashCode();
            3)toString();
        
    String:不可变字符序列,造成内存浪费
        StringBuffer:可变字符序列,节省内存开销
        StringBuilder:可变字符序列,节省内存开销
            StringBuffer和StringBuilder的区别:
                1)StringBuffer:线程安全的,加锁同步,数据安全,效率比较低,jdk1.0出现
                2)StringBuilder:线程不安全的,不同步,数据不安全,效率高,jdk1.5之后出现        
        判断StringBuffer和StringBuilder相等:
            StringBuffer和StringBuilder用equals()方法比较的还是地址是否相等,想要判断两个StringBuffer和StringBuilder变量的内容是否相等,应先用toString()方法将他们转换成String对象,然后再用equals()方法进行比较
        
        字符串常量池:共享的,唯一的
            为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池.如果字符串已经存在池中,就返回池中的实例引用.如果字符串不在池中,就会实例化一个字符串并放到池中
            String str = new String("aaa");创建2个或者1个对象
    包装类:
        1)byte:Byte        -127~128
        2)short:Short    -32768~32767
        3)long:Long        0x8000000000000000L~0x7fffffffffffffffL
        4)float:Float    
        5)double:Double
        6)Boolean:Boolean
        7)int:Integer
            1)-128~127之间的数字会转成int型来进行操作,区间之外的是用new Integer()判断
        8)char:Character
        
        jdk1.5之后自动装箱,拆箱
            装箱:将基本数据类型转成包装类
            拆箱:将包装类转成基本数据类型
            装箱和拆箱存在安全问题,用泛型可以解决
    Math:所有的方法都是静态的,类是final的
        abs():绝对值
        max():比较两个数的最大值
        min():比较两个数的最小值
        ceil():返回大于所给参数的最小的整数值
        floor():返回不大于所给参数的最大的整数值
        random():返回在0.0~1.0之间的随机的double值
        round():4舍5入
        sin/cos/tan():返回给定的弧度值对应的三角函数值
        sqrt():返回所给值的平方根,若所给值为负数则返回NaN
    System:
    日期相关:
    
Object: Object是层次结构的根类,唯一一个没有父类的类
    方法:
        toString():将对象转成字符串返回,默认
        equals():只能判断引用类型是否相等
            == :     
                判断基本数据类型和引用数据类型是否相等,判断引用数据类型时,判断的是两个变量(对象的地址)的引用是否相等
            equals:方法,可以重写
                判断引用数据类型是否相等,判断的是两个变量的引用是否相等;但是String/包装类/Date/File除外,判断的是对象的数据是否相等
        hashCode():
            重写equals方法,必须重写hashCode()方法
            1)equals方法返回值为true,hashCode()的值必须相等
            2)equals方法返回值为false,hashCode()的值有可能相同,也可能不同
            3)hashCode()方法的值不相等,equals()方法的返回值必须为false
            4)hashCode()方法的值相等,equals()方法的返回值可能相等,也可能不等
        clone():
            接口:Cloneable:标记接口(里面没有任何方法)
                1)深拷贝:
                    对象以及该对象中的引用类型都进行拷贝
                2)浅拷贝:
                    只对对象本身拷贝,不对该对象中的引用类型进行拷贝
                    
String:不可变字符序列
    数组的长度是属性length,字符串的长度是方法length();
    
可变长参数  ...类似于动态一维数组            
    1)一个方法中只能有一个可变长参数
    2)可变长参数必须是最后一个参数
    3)可变长参数的长度用length获得
    
链式编程:
    
Integer:
    xxxValue():将Integer转换成xxx基本数据类型
    parseXxx(String str):将字符串强解析为xxx基本类型
    toXxxString():将Integer转换成xxx进制    
        toStringHexString():十六进制
        toOctalString():八进制
        toBinaryString():二进制
        
Character:
    isDigit(char ch):判断指定字符是否为数字
    isLetter(char ch):判断指定字符是否是字母
    isLowerCase(char ch):判断指定字符是否是小写字母
    isSpaceChar(char ch):判断指定字符是否是Unicode中的空格

    字符串String能转换成除了Character以外其他的类型

日期相关的:
    Date:不支持国际化
    Calendar:常用的日期处理对象,可以设置自己的时区和国际化格式,是一个抽象类
    GregorianCalendar:格里高利日历,Calendar的子类,非抽象类,可以设置自己的时区和国际化格式
    DateFormat:抽象类,只能按照固定格式
        format():将日期转成字符串
        parse():将字符串转成日期
    SimpleDateFormat:DateFormat的子类,可以按照一定格式输出
        数据库日起:yyyy-mm-dd hh24:mi:ss
        Java:yyyy-MM-dd HH:mm:ss:SS

Integer a=1, b=1;
Integer c=1000, b=1000;
System.out.println(a==b);//true
System.out.println(a==b);//false
Integer c1 = new Integer(10);
Integer c2 = new Integer(10);
System.out.println(c1 == c2);//false;不会进行装拆箱
Java进行自动装箱封箱时调用valueOf()方法,该方法中,对于在-127~128的数据用基本数据类型存储,即int;而对于不在区间内的用new Integer(n),对于引用类型,==比较的是引用值所以第一句true,第二句false;


Integer i = null;
System.out.println(String.valueOf(i));//输出null
System.out.println(i.toString());//空指针异常

猜你喜欢

转载自blog.csdn.net/Youth_Mr6/article/details/82152924
今日推荐