java.lang.number_java学习-java.lang一Number类

java.lang包是java语言中被用于编程的基本包。编写的程序基本上都要用到这个包内的常用类。

包含了基本数据类型包装类(Boolean,Number,Character,Void)以及常用类型类(String,StringBuilder,StringBuffer)

Number类是所有数值类的父类,其直接子类

一、Integer类    int整型的包装类

数值范围(-231~~231-1)      这是64位的jdk,,占用4字节,最大长度为32位

主要以下部分内容

Integet类生成整型对象的静态方法    也就是将字符串转换成整型

Integer对象转换成字符串的方法。

Integer类的equals(Object obj)和toString()方法

Comparable接口方法的实现

生成Integer对象方法

public static Integer valueOf(String s)或者public static Integer valueOf(String s, int radix)

这两个方法都是将字符串转换成整型对象,

Integer.valueOf("123")和Integer.valueOf("123",10)这方法是等同了,不带radix参数时,默认指定s的值是十进制数据,即radix=10

而如果s的值不是十进制数据时则要调用valueOf(String s, int radix)方法,要指定该字符串是多少进制数据。

如Integer.valueOf("abc",16)     指定字符串"abc"  是十六进制数据

这将会返回一个数值为2748的Integer对象,也就是10*162+11*161+12*160=2748

valueOf()方法直接调用了,public static int parseInt(String s, int radix)  ,将字符串解析成整型,

可以代表整型数据的字符,0-9     a-z   A-Z    这些数据可以表示整型数据,如果字符串中包含其它字符,则会发生异常。

a-z和A-Z,其实表示的是同一整型数据,a和A  一样表示10,b和B表示11

note:

十六进制  字母范围为只能A-F ,因为十六进制单个字符能够表示的数值为16,满16进1

如果执行语句

parseInt("G",16)

这会报错  java.lang.NumberFormatException: For input string: "G"

指定的进制数不能解析这个字符串

/*** All possible chars for representing a number as a String*/

final static char[] digits ={'0' , '1' , '2' , '3' , '4' , '5','6' , '7' , '8' , '9' , 'a' , 'b','c' , 'd' , 'e' , 'f' , 'g' , 'h','i' , 'j' , 'k' , 'l' , 'm' , 'n','o' , 'p' , 'q' , 'r' , 's' , 't','u' , 'v' , 'w' , 'x' , 'y' , 'z'};

Integer对象转换成字符串的方法

Integer类内部有一些静态方法,用于将整型转换为字符串类型,

String hexString = Integer.toHexString(50);//整型转换为16进制字符串

String binaryString = Integer.toBinaryString(50);//二进制

String decimalString = Integer.toString(50);//默认十进制

String octalString = Integer.toOctalString(50);//八进制

String otherString = Integer.toString(50, 27);//任意进制,这里为27进制,进制范围为:2~36

System.out.println(hexString);

System.out.println(binaryString);

System.out.println(decimalString);

System.out.println(octalString);

System.out.println(otherString);

输出结果为

10

32

110010

50

621n

整型数据转换成字符串用这个没什么问题,但是负数转换成字符串的时候出现了很多问题

除了

Integer.toString(int i)

Integer.toString(int i, int radix)

这两个方法的正负整数转换成字符串只是在前面加一个负号。其他的暂时看不懂,不纠结

10ffffffce11111111111111111111111111001110

-50

37777777716

-1n

Integer类的equals(Object obj)和toString()方法

Integer类中重写了继承自Object类的equals(Object obj)方法,

Object类中的equals(Object obj )

public booleanequals(Object obj) {return (this ==obj);

}

由于==这个运算符是判断两个对象引用的内存地址是否相等,相等,表示两个object其实引用的是同一内存地址,同一对象。

Integer.equals(Object obj)

public booleanequals(Object obj) {if (obj instanceofInteger) {return value ==((Integer)obj).intValue();

}return false;

}

重写的equals()方法,如果对象不是Integer类型,返回false,如果是Integer类型,在判断对象的值是否相等。所以要比较两个整型对象的值是否相等,可以使用equals()方法进行比较

Integer.toString(),,也是重写了Object的toString()方法,返回了是Integer对象的值

Object.toString()publicString toString() {return getClass().getName() + "@" +Integer.toHexString(hashCode());

}

Integer.toString()publicString toString() {returntoString(value);

}public static String toString(inti) {if (i ==Integer.MIN_VALUE)return "-2147483648";int size = (i < 0) ? stringSize(-i) + 1: stringSize(i);char[] buf = new char[size];

getChars(i, size, buf);return new String(buf, true);

}

Object的toString()是返回 字符串格式:  “类名@16进制的哈希值”,

以后要谨慎使用toString()方法了。

Comparable接口方法的实现,对象列表的升序降序接口

我们通过重写改接口方法,可以对列表进行升序或降序排列。

Number类的实现类,也就是基本数据类型的包装类Integer, Float, Double,Long,Byte等都实现的Comparable接口,

默认就可以调用List或者array的排序方法进行升序或降序排序。

This interface imposes a total ordering on the objects of each class that implements it. This ordering is referred to as the class's natural ordering, and the class's compareTo method is referred to as its natural comparison method.

此接口对实现它的每个类的对象强加一个总排序。这种排序被称为类的自然排序,类的compareTo方法被称为其自然比较方法。

Lists (and arrays) of objects that implement this interface can be sorted automatically by

只有实现的这个接口的对象list列表或array数组才可以使用sort方法让列表或数组的元素被自动排序

只需要实现compareTo()方法即可

public int compareTo(){}这个比较方法,,

如果要将对象列表进行升序排序,则第i个元素和第i+1元素 要满足a[i]>a[i+1] 返回1 a[i]

如果要将对象列表进行降序排序  要满足 a[i]>a[i+1] 返回-1 a[i]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值