【JAVA基本数据类型包装类】
一、概述
JAVA中一共有8种数据类型,分别是byte short int long boolean float double char,与此相对应的,有8个类与它们分别对应:
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
将基本数据类型封装成对象有什么好处?
基本数据类型包装类中封装了很多属性和方法,使得对数据的操作更加方便和灵活。
举例说明:
想要获得int类型所能表示的最大值,只需要使用静态属性:Integer.MAX_VALUE即可。
想要将十进制数转换成二进制数,只需要调用静态方法:Integer.toBinaryString()方法即可。
二、基本数据类型和字符串之间的相互转换。
1.基本数据类型转换成字符串。
方法:
1.1基本数据类型+“”
1.2使用String类的静态方法valueOf
1.3使用基本数据类型包装类的非静态方法valueOf
2.字符串转换成基本数据类型。
方法:
2.1使用parseXXX方法。
用法示例:int x=Integer.parseInt("123");
注意,该方法中的参数字符串必须合法,否则会抛出运行时异常NumberFormatException。
此外,还有Long.parseLong、Double.parseDouble、Float.parseFloat、Boolean.parseBoolean、Byte.parseByte、Short.parseShort方法,但是应当注意,Character类中并没有类似的方法,原因是显而易见的,一个字符串长度一旦超过1,该方法就没有意义了。
2.2使用构造方法创建新对象。
例如:Integer x=new Integer("123");
其它基本数据类型包装类用法类似。但是仍然要注意Character类的构造方法。
三、十进制数和其它进制数之间的转换。
1.十进制数转换成其它进制数。
1.1使用三个常用方法。
public static String toBinaryString(int i); 该方法将十进制数转换成二进制数的补码表示形式。
public static String toHexString(int i); 该方法将十进制数转换成十六进制数。
public static String toOctalString(int i); 该方法将十进制数转换成八进制数。
1.2使用toString方法。
public static String toString(int i,int radix);该方法能将十进制数转换成任意进制数,前提是基数小于Character.MIN_RADIX
或者大于Character.MAX_RADIX。
用法示例:String str=Integer.toString(12,2); 将十进制数12转换成2进制数并返回二进制数的字符串表示形式。
2其它进制数转换成十进制数。
使用parseInt方法。
public static int parseInt(String s,int radix)throws NumberFormatException;
该方法能够将字串x视为radix进制数,并将该数转换为十进制数。
如果转换失败,则抛出NumberFormatException异常。
四、自动装箱、拆箱操作。
如果基本数据类型已经封装成了对象,该怎么获取该基本数据类型的值?
使用方法:intValue();(针对Integer类)其它方法的使用类似。
Double.doubleValue()、 Float.floatValue() 、Boolean.booleanValue()、Byte.byteValue()、 Character.characterValue ()、 Long.longValue()、
Short.shortValue()
例1:自动装箱示例。
public class Demo
{
public static void main(String args[])
{
Demo1();
}
public static void Demo1()
{
Integer i=new Integer(123);
Integer j=123;
System.out.println(i==j);
System.out.println(i.equals(j));
System.out.println(i.compareTo(j));
}
}
运行结果:
false
true
0
自动装箱是基本数据类型自动封装成基本数据类型包装对象的过程。
equals方法在基本数据类型包装类中比较的是对象中基本数据类型值是否相同。
例2:关于特殊值127
public class Demo
{
public static void main(String args[])
{
//Demo1();
Demo2();
}
public static void Demo2()
{
for(int i=1;i<=200;i++)
{
Integer x=i;
Integer y=i;
System.out.println(i+":"+(x==y));
}
}
public static void Demo1()
{
Integer i=new Integer(123);
Integer j=123;
System.out.println(i==j);
System.out.println(i.equals(j));
System.out.println(i.compareTo(j));
}
}
观察127行,在这一行之前的结果都是true,在这一行之后的结果都是false,这是有原因的。
JDK1.5不仅做出了自动装箱和自动拆箱的规定,而且还针对整数的大小做出了是否开辟出新的空间存储对象的规定:
如果自动装箱的是一个字节,那么该数据会被共享,而不会重新开辟空间。
五、判断拆箱操作还是装箱操作。
public class Demo
{
public static void main(String args[])
{
//Demo1();
//Demo2();
Demo3();
}
public static void Demo3()
{
Integer i=1;
i=i+1;
System.out.println(i);
}
public static void Demo2()
{
for(int i=1;i<=200;i++)
{
Integer x=i;
Integer y=i;
System.out.println(i+":"+(x==y));
}
}
public static void Demo1()
{
Integer i=new Integer(123);
Integer j=123;
System.out.println(i==j);
System.out.println(i.equals(j));
System.out.println(i.compareTo(j));
}
}
运行结果:2
最关键的一句就是i=i+1;这个操作。
这其中包含着自动拆箱和自动装箱的操作。
分析:i+1,我们知道JAVA中的运算必须是同一种类型数据之间的运算。在这里,一个基本数据类型1,还有一个是基本数据类型包装类的对象,那么他们之间的运算是怎么回事儿呢?首先,JAVA中的运算只能是基本数据类型之间的运算,所以,在这里,基本数据类型包装类的对象会调用intValue方法,返回一个整数,在这里,这个整数是1,然后1+1得出结果2,但是2是基本数据类型,所以如果要赋值给i,还需要有一个自动装箱的操作。
【JAVA基本数据类型包装类】的更多相关文章
- java基本数据类型包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数 ...
- java基础数据类型包装类
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java基本数据类型-包装类
为什么会有基本数据类型包装类? 将基本数据类型封装成为对象,这样可以在对象中定义更多的方法来操作该数据 包装类常用操作就是用于基本数据类型与字符串之间的转换 基本数据类型对应的包装类 byte(Byt ...
- Java基础知识(JAVA基本数据类型包装类)
基本数据类型的包装类 为什么需要包装类? Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的.但是我们在实际使用中经常需要将基本数据转化成对象 ...
- 黑马程序员——JAVA基础之基本数据类型包装类和1.5JDK新特性装箱
------- android培训.java培训.期待与您交流! ---------- 基本数据类型包装类: byte Byte short Short int Integer char Charac ...
- JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类
字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...
- 黑马程序员----java基础:String与StringBuffer及基本数据类型包装类
------- android培训.java培训.期待与您交流! ---------- java中一些基础类比如String.StringBuffer和基本数据类型包装类都是非常常见且使用非常频繁的类 ...
- Java基本数据类型、包装类与String类之间的转换
一.基本数据类型与包装类之间的转换: import org.junit.Test; public class MainTest { /** * 基本数据类型与包装类之间的转换 */ @Test pub ...
- Java基础---String类和基本数据类型包装类
第一讲 String类 一.概述 String是字符串的类类型,用于描述字符串事物.字符串是一个特殊的对象.特殊之处就在于: Stings= new String();和Str ...
随机推荐
- git 教程(4)--版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...
- BZOJ 1462: Superkmp
Description 匹配字符串A,B,匹配条件是在A长度为=B的子串中,排名顺序相同. Sol KMP+树状数组. KMP匹配的时候计算排名就可以了啊...这个东西可以用树状数组维护. 这题是个双 ...
- 将Apache加入到linux系统service
将Apache加入到linux系统service 将apache加入到linux系统服务,用service命令来控制apache的启动和停止. 本文由乌合之众瞎写http://www.cnblogs. ...
- 10. JEB1.5 插件编写二
一些实例 1. 遍历当前光标处函数所有的Element Java代码: import java.io.*; import java.util.List; import jeb.api.IScript; ...
- IDEA 配置 tomcat 启动内存
-server -XX:PermSize=128M -XX:MaxPermSize=256m
- PHP程序员如何突破成长瓶颈(php开发三到四年)
看了这篇博文,我正好处于这个阶段,也有心要突破自己,呵呵! 作为Web开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题, ...
- 【Nginx】nginx 代理 Haproxy 怎么设置?
由于Haproxy是通过 url 正则匹配 识别 的,nginx代理到 haproxy需要设置 proxy_set_header Host 为 haproxy的目标 url 直接上配置 upstrea ...
- Linux下安装gcc和g++
以CentOS为例,安装后是没有C语言和C++编译环境的,需要手动安装,最简单的是用yum的方式安装,过程如下: 1.安装gcc yum install gcc 询问是否,按y键回车即可,或者 yum ...
- ACM/ICPC 之 Kruskal范例(ZOJ1203-POJ1861(ZOJ1542))
两道最小生成树范例,Kruskal解法-以边为主体扩展最小生成树,需要利用并查集. ZOJ1203-Swordfish 题意:求n个给定平面坐标的城市中的一条平面距离上的最短路长(保留两位小数) 题解 ...
- 7.js模式-装饰者模式
1. 装饰者模式 给对象动态增加职责的方式称为装饰者模式. Function.prototype.before = function(beforefn){ var _self = this; retu ...