java包装类默认值_java包装类
大纲:
包装类简介
创建包装类
自动装箱、拆箱
判断相等
默认值
其他
一、包装类简介
Java中共有八种基本类型,byte, short, int, long, float, double, char, boolean。
分别对应八种包装类,Byte, Short, Integer, Long,Float, Double, Character, Boolean。
相较于基础数据类型,包装类有许多方法和成员变量供我们使用。
每个包装类型都有一个名为value的成员变量,用来存储它自己基本类型的值。
Integer a = new Integer(1);//包装类
int b = 1;//基础类型
二、创建包装类型
以Integer为例子,其他包装类类似
//通过基本类型创建
new Integer(1);
Integer.valueOf(1);//通过字符串创建
new Integer("1"); //调用parseInt
Integer.valueOf("1"); //调用parseInt
Integer.parseInt("1");
几种常见创建方式,其他包装类也有类似的创建方法。
值得注意的是valueOf方法
public static Integer valueOf(inti) {if (i >= IntegerCache.low && i <=IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return newInteger(i);
}
可以发现使用了缓存,看下这个IntegerCache,它是Integer的嵌套类
private static classIntegerCache {static final int low = -128;static final int high = 127;//默认127,可配置
static finalInteger cache[];static{//将-128至127的包装类缓存到cache中
}
}
也就是说使用valueOf()来创建值为-128至127的包装类时,会使用已经创建好的缓存。我们创建包装类尽量使用这个方法避免重复创建对象。
还有一点需要注意的是,有2个包装类(Float, Double)是不使用缓存的
三、自动装箱、拆箱
Integer a = 1; //自动装箱,反编译后发现使用Integer.valueOf(1)方法
int b = a; //自动拆箱,反编译后发现使用a.intValue()方法
java1.5以后,编译器会帮助我们完成自动装箱拆箱、不需要我们手动转换。
四、判断相等
//基础类型判断相等直接用==判断即可//包装类型判断相等用equals,通过源码可知,比较的是两个包装类的基础类型的value值。//基础类型和包装类型比较
int a = 1;
Integer b= 1;
System.out.println(a==b);//true,这里b会被自动拆箱//包装类用==比较
Integer c = 1;
Integer d= 1;
System.out.println(c==d); //true,包装类自动装箱使用的是valueOf()方法,使用的是缓存
Integer e= 200;
Integer f= 200;
System.out.println(c==d); //false,这里由于200>127没有使用缓存,使用的都是new Integer()
五、默认值
包装类没有默认值,基础数据类型有初始化默认值。
private static inta;private staticInteger b;public static voidmain(String[] args) {
System.out.println(a);//0
System.out.println(b);//null
}
使用的时候需要注意与数据库打交道的po对象尽量使用包装类,因为数据库查询结果为null时,使用基础数据类型会被赋上默认值。
六、其他
泛型只能使用包装类。
计算的时候避免基础类型与包装类直接运算(Long+long 一个包装类与基础类型直接加法运算),会导致自动拆装箱,影响性能。
java包装类默认值_java包装类相关推荐
- java 注解默认值_Java系列之注解
Java 注解(Annotation)又称之为 Java 标注.元数据,是 Java 1.5 之后加入的一种特殊语法,通过注解可以标注 Java 中的类.方法.属性.参数.包等,可以通过反射原理对这些 ...
- java 泛型 默认值_java泛型 Java泛型的入门知识
在学习java的过程当中,我们就肯定会接触到java泛型,那么你知道java泛型是什么吗,有关java的使用方法又有哪些呢?今天小编就从java泛型的使用方法来了解一下java泛型这一知识. java ...
- java xmx 默认值_java默认的Xmx大小
记录这个问题是因为看到CSDN上一个人问的一个问题: 为什么-Xmx的设置不管用,问题的内容大概是用top看进程资源的时候,VIRT列的内容为什么不符合自己设的值的预期(跟Xmx的值的关系). 1. ...
- java变量默认值_Java变量的默认值和初始化
Java变量的默认值和初始化 学习自 <Thinking In Java> 变量的默认值 注意只有成员变量才有默认值,而局部变量必须要赋初值.为什么会这么设计,下面会讨论. 关于各种基础类 ...
- java对象默认值_java对象的默认值
2.4.1 字段和方法 定义一个类时(我们在Java里的全部工作就是定义类.制作那些类的对象以及将消息发给那些对象),可在自己的类里设置两种类型的元素:数据成员(有时也叫"字段") ...
- java char 默认值_java 中char 的初始值
jdk官方教程里有写 Default Values(缺省值) ----------------------------------------------------- |Data Type |Def ...
- 八大基本数据类型、数组和包装类默认值
八大基本数据类型.数组和包装类默认值 1.八大基本数据类型 Java八种基本数据类型总结 序号 数据类型 大小/字节 封装类 默认值 可表示数据范围 1 byte 1 Byte 0 -128~127 ...
- java的默认值规则_Java 8:默认方法解析规则
java的默认值规则 随着Java 8中默认方法的引入,一个类现在可以从多个位置(例如另一个类或接口)继承相同的方法. 在这种情况下,可以使用以下规则来确定选择哪种方法: 类或超类方法声明始终优先于默 ...
- java注解封装默认值_Java注解默认值
可以为注解中的元素定义默认值.不需要为带有默认值的注解元素提供值. 默认值可以使用以下一般语法定义: @interface { () default ; } 关键字default指定默认值.默认值必须 ...
最新文章
- NIPS2018 | 腾讯AI Lab入选20篇论文,含2篇Spotlight
- 60篇论文入选,两度夺魁,“史上最难ECCV”商汤再攀高峰
- 第 5 章 Stream
- opengl库中gl glu glut glaux的区别
- cs8900a网卡驱动--寄存器
- java快捷键 --_Java中的快捷方式“或分配”(| =)运算符
- 谈谈你对oracle,对Oracle的优化
- SAP License:SAP与ORACLE到底谁更强?
- 王者荣耀服务器维护中有什么漏洞,王者荣耀:排位惊现漏洞,利用这个BUG一天上王者,三天登荣耀...
- 以贝叶斯思维看待世界
- c语言程序设计对称字符串,清华大学C语言程序设计 L13_字符串精选.pdf
- 割线法matlab实验报告,牛顿迭代割线法二分法算法实验报告.docx
- innodb_flush_method 的理解
- 用Springboot写饼状图
- 攻防世界_Crypto_Decrypt-the-Message
- 完全免费快速搭建个人www服务器
- System.Windows.Forms.DataVisualization.Charting.Chart
- 【干货】柔性电池的未来展望
- 为何要转换为GERBER文件交PCB厂制板
- esp32cam 服务端远程视频方案