黑马程序员--06.基本数据类型的包装类--【Integer类】【字符串和基本数据类型的包装类】

基本数据类型的包装类—

      Integer类 字符串和基本数据类型的包装类

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

1.    基本数据类型包装类

1). 基本数据类型包装类存在的意义

(1). 比如int有自己的取值范围,但是是一个数字都很大的取值范围,很难记忆。

(2). 一个数的二进制转换成十进制,大小是多少?

以上的细节如果能封装到一个对象里面,这样程序使用起来会非常方便。

2). 基本数据类型的包装类

位于java.lang中,对应关系如下

char Character

byte Byteshort Shortint integerlong Long

boolean Boolean

float Floatdouble Double

【这些类都比较相似,以Integer为例做讲解】

2.    Integer类

1). Integer类的字段

public static final int   MIN_VALUE = 0x80000000;  

//全局常量:整形中最大值 (2^31 -1)

public static final int   MAX_VALUE = 0x7fffffff;

    //全局常量:整形中最小值 (-2^31)

【作用】基本数据包装类的全局字段:用于判定一个数是否在整数的范围内

2). Integer类常用的方法

基本数据类型的包装类常用方法就是:帮助基本数据类型字符串类型之间做转换

(1). 基本数据类型 转换成String类型 (以Integer为例)

[1]. 运算符操作法基本数据类型数据+" "

[2]. 静态作法基本数据类型包装类.toString(基本类型数据)

[3]. 非静态方法:Object类的toString()方法

(2). String类型 转换成 基本数据类型

[1]. 静态方法基本数据类型包装类.parseXxx(str)

[2]. 非静态方法基本数据类型包装类对象.xxxValue(str)

【注】xxx代表基本数据类型   Xxx代表基本数据类型对应的包装类

【注意】{1}Character没有parseXxx(str) 这个方法与之对应的是:

Character.toUpperCase(charch)Character.toUpperCase(char ch)

可以把对应的字符进行大小写转换

【注意】{2}char本身就是String的组成部分,所以不用转换

【注意】{3} parseXxx(str)中的str必须是数字格式的,否则抛出异常


e.g.xxx是int的话,则Xxx表示Integer;xxx是char,则Xxx是Character

(3). 进制转换和移位运算举例(Integer为例)

[1]. 进制转换操作

【转二进制字符串】public static StringtoBinaryString(int i)

【转十六进制字符串】public static String toHexString(int i)

【转八进制字符串】public static String toOctalString(int i)

parseXxx重载形式】static int parseInt(String s, int radix)

radix表示字符串s中的整数的进制表示形式

e.g.

int x =Integer.parseInt("110", 2);//说明字符串中110是二进制形式

System.out.println(x); //打印结果二进制的110----十进制数字是6

x=Integer.parseInt("3c", 16);//说明字符串中3c是十六进制形式

System.out.println(x);//打印结果60  十六进制的3c----十进制数字是60

[2]. 移位操作

【左移位】static int rotateLeft(int i, int distance)

【右移位】static int rotateRight(int i, int distance)

(4). 基本数据类型的equals()方法

包装类重写了Object的equals方法,用于比较两个数值大小是否相同

e.g.

Integer x =new Integer("123");  //接受字符串

Integer y =new Integer(123);    //接受整型值

//new出来的两个不同对象,地址一定不一样,打印false

System.out.println(x ==y);

//xy的值都是123  所以 equals比较结果为true

System.out.println(x.equals(y));

3.    基本数据包装类的新特性

(1). 自动装箱和自动拆箱

【自动装箱和自动拆箱新特性的目的】简化书写

[1]. 自动装箱


[2]. 自动拆箱

自动拆箱原理调用的基本包装类对象.xxxValue();


【解释】

x =x+2:赋值运算左边是x+2  xInteger类型的对象自动拆箱基本数据类型,和整形数据2进行相加。

相加的整形结果再次自动装箱成Integer对象,让引用x指向这个新的Integer对象。

为什么不是2自动装箱成Integer对象在进行运算呢?

因为Integer这个类没有定义+这个运算。

注意【异常抛出】

当包装类引用指向null的时候,是不能进行自动拆箱的。因为自动拆箱的原理就是调用方法调用的基本包装类对象.xxxValue();但是自动拆箱的时候,运算的元素是null。

null没有办法调用成员变量和函数的,所以抛出空指针异常

举例:


(2). 当整形数值大小在一个字节byte之间并且被封装成基本数据类型对应的对象的时候,Java认为是常使用的小数值的对象。全部缓存在常量池中,以后再次使用的时候,直接到常量池中获取,而不必再次开辟内存空间来新建对象------享元设计模式思想

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值