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

来源:互联网 发布:源码大师咋用 编辑:程序博客网 时间:2024/05/18 08:55

基本数据类型的包装类—

      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]. 进制转换操作

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

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

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

parseXxx重载形式】staticint 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]. 移位操作

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

【右移位】staticint 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学习型技术博客、期待与您交流! ------------

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 排卵期肚子疼怎么回事 排卵期白带会增多吗 排卵期逼为啥老是出水 女子排卵期是什么时候 正常排卵期是什么时候 排卵期下腹隐隐作痛 排卵期会有很多白带吗 排卵期身体有什么反应 过了排卵期会怀孕吗 排卵期有什么症状腰痛 排卵期计算法周期表 女人的排卵期怎么算 排卵期排出褐色分泌物 女生排卵期有什么反应 排卵期出血的症状和图片 排卵期症状有哪些症状 排卵期是不是容易怀孕 一个月排卵期有几天 排卵期肚子痛怎么回事 排卵期体温会升高吗 排卵期测体温怎么测 排卵期肚子疼是在排卵吗 排卵期腰痛是怎么回事 排卵期没有射会怀孕吗 女人排卵期计算方法 排卵期有什么症状白带 排卵期是什么时候有什么反应 女孩排卵期是什么时候 排卵期不带套子外射会怀孕吗 排卵期怎么算计算器 女的排卵期是什么时候 女生排卵期有什么特征 排卵期一定会怀孕吗 排卵期小肚子疼是怎么回事 排卵期身体有什么症状 女人的排卵期怎么算才准确 女性排卵期有什么症状 什么是排卵期怎么计算 排卵期第几天容易怀孕 排卵期是什么时候到什么时候 排卵期有什么症状或感觉