常用类-包装类-Math-Object

来源:互联网 发布:软件行业发展趋势 编辑:程序博客网 时间:2024/05/21 05:22

目录

  • 目录
  • 基本数据类型的包装类
    • Integer类
    • Character类
  • Math类
  • Object类

基本数据类型的包装类

为了更有效的对常用数据进行储存和操作,java中规定了一些基本数据类型。这些数据存放在堆栈中:如int,byte等,因为这些数据只能和固定的操作符相接进行计算,没有成员方法,所以java中还定义了对应的包装类,包装类里包含了很多针对该基本类型的常用方法。

具体基本类型和包装器类型如下所示:

基本类型 大小 最小值 最大值 包装器类型 boolean - - - Boolean char 16-bit Unicode 0 Unicode 2^16-1 Character byte 8 bits -128 +127 Byte short 16 bits -2^15 +2^15-1 Short int 32 bits -2^31 +2^31-1 Integer long 64 bits -2^63 +2^63-1 Long float 32 bits IEEE754 IEEE754 Float double 64bits IEEE754 IEEE754 Double

IEEE浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用,详情可见IEEE754百度百科

这里主要说一下Integer和Character类

Integer类

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。

此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

  1. 构造方法
    可以直接传入int型的数据,转化为Integer类型的对象:
    • Integer ig = new Integer(123);
      可以传入可表示数据的String类型数据,转化为Integer对象:
    • Integer ig2 = new Integer(“123”);
      如果传入的不是可表示数据的类型则会报错:
      at java.lang.NumberFormatException.forInputString(Unkurce)
  2. 字段
    • MAX_VALUE
      值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。
    • MIN_VALUE
      值为 -2^31 的常量,它表示 int 类型能够表示的最小值。
  3. 成员方法
    • static String toBinaryString(int i)
      以二进制(基数 2)无符号整数形式返回一个整数参数的static字符串表示形式。
    • static String toHexString(int i)
      以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
    • static String toOctalString(int i)
      以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式
    • static String toString()
      返回一个表示该 Integer 值的 String 对象。
    • static int parseInt(String s)
      将字符串参数作为有符号的十进制整数进行解析。
  4. int-Integer-String转换

    • in t-Integer

      • new Intrger(int i);
      • Integer.valueOf(int i);
      • Integer.toString(100);
    • String-Integer

      • new Integer(String s);
      • Integer.valueOf(String s);
      • Integer.toString(100);
    • Integer-String

      • ig.toString();
    • int-String:

      • String s = i +”“;
      • String.valueOf(int i);
    • String-int:

      • Integer.parseInt(String s)
    • Integer-int

      • ig.intValue();

      构造方法里可以输入String类型的数据也是调用了parseInt()然后再将得到的int值转化为 Integer对象

  5. 自动拆装箱
    自动拆装箱是JDK5的新特性

    • 自动装箱:基本类型 – 包装类类型
      Integer.valueOf(100)可变为*Integer ig = 100;
    • 自动拆箱:包装类类型 – 基本类型
      i.intValue()可写为int i = ig;

这里所有类都只列出了一小部分常用的方法以及字段,想了解的全面点请自行查看API

Character类

  1. 构造方法

    • Character(char value)
      构造一个新分配的 Character 对象,用以表2. 方法摘要
    • static boolean isUpperCase(char ch)
      判断是否是大写字符
    • static boolean isLowerCase(char ch)
      判断是否是小写字符
    • static boolean isDigit(char ch)
      判断是否是数字
    • static char toUpperCase(char ch)
      转成大写
    • static char toLowerCase(char ch)
      转成小写
    • char charValue()
      返回此 Character 对象的值。
  2. 其他
    和Integer类一样,Character也有MAX_VALUE 和MIN_VALUE 字段但是最小值为’\u0000’最大值为’\uFFFF’

    重写了object类的toString和equals方法(object类是所类的父类,后面会说到)

    String-char[]就用str.toCharArray();

Math类

  1. 字段

    • static double E
      比任何其他值都更接近 e(即自然对数的底数)的 double 值。
    • static double PI
      比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
  2. 方法
    Math里 面的方法和变量全部都是静态的

    • static double abs(double a)
      返回double值的绝对值

    • static double max(double a, double b)
      返回两个 double 值中较大的一个。

    • static double min(double a, double b)
      返回两个 double 值中较小的一个。

    • static double sin(double a)
      返回一个值的正弦值,Math里还有相应的cos,tan,asin等方法表达其他的三角函数计算。

    • static double pow(double a, double b)
      返回第一个参数的第二个参数次幂的值。

    • static double log(double a)
      返回 double 值的自然对数(底数是 e)。

    • static double log10(double a)
      返回 double 值的底数为 10 的对数 。

    • static double random()
      返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。

    • static long round(d以四舍五入的方式返回最接近参数的long值,如果输入的是一个float数,输出是一个int值

    • static double ceil(double a)
      返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。

    • static double floor(double a)
      返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。

ceil()和floor()代表的分别是向上取整和向下取整,floor()与(int)的方式强制取整的区别在于floor()返回的是double类型

Object类

是所有类的根类。所有的类都直接或者间接的继承自该类
Object不是抽象类,可以构造Object类对象
有几个重要的方法值得学习

  • protected Object clone()
    创建并返回此对象的一个副本。

  • boolean equals(Object obj)
    指示其他某个对象是否与此对象“相等”。

  • class<> getClass()
    返回此 Object 的运行时类。

  • int hashCode()
    返回该对象的哈希码值。

  • String toString()
    返回该对象的字符串表示。

这里我们主要说下toString()和equal

  1. toString()

Object的toString()是这样写的

    public String toString() {    return getClass().getName() + "@" + Integer.toHexString(hashCode());}       

可见,如果一个类没用重写toString(),调用该类的toString()时,会输出一个类名+@+该对象的哈希码值的16 进制表达。

package Test1   ;public class ObjectTest {        public static void main(String[] args) {            OneTest ot = new OneTest();            String str = ot.toString();            System.out.println(str);    }//输出结果为:Test1.OneTest@15db9742class OneTest{}

2. equals()

public boolean equals(Object obj) {        return (this == obj);    }   

对于两个对象操作符’==’代表的是比较两个对象的地址值,如果该类没有重写equals方法,则只能表示两个对象的引用是否相等。
我们可以通过重写equals()来做到自己想要的对比方法:

package Test1;  public static void main(String[] args) {        OneTest2 ot1 = new OneTest2();        OneTest2 ot2 = new OneTest2();        OneTest3 ot3 = new OneTest3();        OneTest3 ot4 = new OneTest3();        OneTest3 ot5 = new OneTest3();        ot3.setNum(3);        ot4.setNum(4);        ot5.setNum(3);        System.out.println(ot1.equals(ot2));        System.out.println(ot3.equals(ot4));        System.out.println(ot3.equals(ot5));    }}class OneTest2{}class OneTest3{    private int Num;    public int getNum() {        return Num;    }    public void setNum(int num) {        Num = num;    }    public boolean equals(Object ob){        return this.Num == ((OneTest3) ob).getNum();    }}   /**             输出:             false   false true  
0 0