廖雪峰Java2面向对象编程-6Java核心类-3包装类型
Java的数据类型:
- 基本类型:int boolean float
- 引用类型:所有class类型

为一个基本类型int赋值为null,会提示“incompatible types”错误。
错误原始:基本类型是不能视为对象(引用类型)的.。
可以定义一个Integer类,包含一个实例字段int。这样可以把Integer视为int的包装类型wrapper。
包装类型本身是引用类型,只是其内部持有一个基本类型的变量。
JDK为每种基本类型都创建了对应的包装类型:
| 基本类型 | 对应的引用类型 |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
使用JDK的Integer类传入null,语句不会再报错,只是执行时会抛出java.lang.NumberFormatException
Integer n = new Integer(null);
int i = n;
System.out.println(i);

类型转换
int i = 100;
//把int、String转换为Integer
Integer n1 = new Integer(i);
Integer n2 = Integer.valueOf(i);
Integer n3 = Integer.valueOf("100");
//把Integer、String转换为int类型
int x1 = n1.intValue();
int x3 = Integer.parseInt("100");
//把Integer、int转换为String类型
String s1 = n1.toString();
String s2 = String.valueOf(i);
自动拆箱和自动装箱
编译器何以自动在int和Integer之间转型。
- 自动装箱auto boxing int -> Integer
Integer n = 99;//自动调用Integer.valueOf(99)
- 自动拆箱auto unboxing Integer -> int
int i = n;//n.intValue()
注意:
* 自动装箱和自动拆箱只发生在编译阶段
* 装箱和拆箱会影响执行效率
* 编译后的class代码是严格区分基本类型和引用类型的,没有自动装箱和拆箱
* Integer的null->int执行时会抛出<font color=#FF0000>java.lang.NumberFormatException</font>
包装类型定义了一些有用的静态变量
```#java
Boolean t = Boolean.TRUE;
Boolean f = Boolean.FALSE;
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
int sizeOfLong = Long.SIZE;
int bytesOfLong = Long.BYTES;
Java的包装类型全部继承自Number这个class。可以利用向上转型,把任意一种包装类型先变为Number对象,利用Number提供的Byte、Integer、Float变为任意的类型。
Integer n = 5 + Integer.valueOf(10);
Number m = n;
System.out.println(m.floatValue());//15.0
总结:
JDK的包装类型可以把基本类型包装为class
自动装箱和自动拆箱是编译器完成的 (JDK>= 1.5)
装箱和拆箱会影响执行效率
注意拆箱时kennel发生NullPointException
廖雪峰Java2面向对象编程-6Java核心类-3包装类型的更多相关文章
- 廖雪峰Java2面向对象编程-6Java核心类-2StringBuilder
字符串操作过程中,每次用 + 拼接字符串,有以下问题: 每次循环都会创建新的对象 绝大部分都是临时对象.浪费内存 影响GC效率 String s = ""; for(int i=0 ...
- 廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码
Java的字符串用String表示 1.String特点: 可以直接使用"..."表示一个字符串,不强制使用new String 内容不可变 String s1 = "h ...
- 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类
1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ...
- 廖雪峰Java2面向对象编程-6Java核心类-5枚举类
直接定义常量 public class Weekday { //定义int常量 public static final int SUN = 0; public static final int MON ...
- 廖雪峰Java2面向对象编程-6Java核心类-4JavaBean
1.JavaBean定义 符合以下命名规范的class被成为JavaBean private 类型的field 针对这个field的get和set方法 public class Person { pr ...
- 廖雪峰Java2面向对象编程-3继承和多态-1继承
1.继承 继承是一种代码复用的方式. Student与Person有相同部分的代码. Student可以从Person继承,这样Student获得了Person的所有功能,只需要编写新增的功能即可.通 ...
- 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础
1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ...
- 廖雪峰Java2面向对象编程-5包和classpath-4classpath和jar
1.classpath 1.1classpath定义 classpath是一个环境变量 classpath指示JVM如何搜索class classpath设置的搜索路径与操作系统相关 * window ...
- 廖雪峰Java2面向对象编程-4抽象类和接口-2接口
1.接口的定义 抽象方法本质上是定义接口规范. 在抽象类中定义了一个抽象方法,子类中必须实现这个抽象方法. public abstract class Person{ public abstract ...
随机推荐
- poj 2155 B - Matrix 二维树状数组
#include<iostream> #include<string> #include<string.h> #include<cstdio> usin ...
- hdu1796 How many integers can you find 容斥原理
Now you get a number N, and a M-integers set, you should find out how many integers which are small ...
- python------模块定义、导入、优化 ------->os模块
1. os模块 提供对操作系统进行调用的接口. 1 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 'C:\\Users\\maziwei' os.chdir() # ...
- (惊艳)基于谷底最小值的阈值的图像分割(改进HSV中的H分量可以用imhist(H)提取)
任务概述:将这张图片作为输入 , 然后抠出只有斑点的图片 灵感来源: 1. 黄色部分用绿色的掩盖掉得到图片B,然后A和B进行∩运算,相同的设置为0 2.统计单词的子母数,开辟一个26个元素的数组,进来 ...
- python——SMTP发送简单邮件
[root@localhost python]# cat smtp.py import smtplib import string from email.mime.text import MIMETe ...
- 获取和设置用户id以及组id
#include<unistd.h> uid_t getuid(void); uid_t geteuid(void);//获取有效用户id gid_t getgid(void); gid_ ...
- Cassandra--JAVA访问Cassandra数据
JAVA创建Cluster对象 cluster = Cluster.builder() .addContactPoints(contactPoints) .withRetryPolicy(new Lo ...
- python一些东西
assert repr() >>> a ['d', 'c', 'c', 'f', 'a', 'a', 'b', 'c', 'd'] >>> sorted(a) [' ...
- Jmeter实现接口自动化测试
一.环境准备 1.Jdk1.7或以上: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...
- hanlp自然语言处理包的基本使用--python
hanlp拥有:中文分词.命名实体识别.摘要关键字.依存句法分析.简繁拼音转换.智能推荐. 这里主要介绍一下hanlp的中文分词.命名实体识别.依存句法分析,这里就不介绍具体的hanlp的安装了,百度 ...