Java数字包装类基本程序,Java基本数据类型包装类
基础数据类型包装类
当一个程序要求交互式输入一个int类型的年龄时,从文本框中输入的结果肯定是String类型的。要在程序中进行相关操作,它必须先转换为int类型。因此可以使用数据类型的转换或强制转换,但这种转换方式太过简单,功能太少,因此Java中提供了数据类型包装类的概念。
数据类型包装类是指可以将数据转换成对象(包装),还可以从数据对象中取得数据(解包装)。相当于对数据包了一层皮,里面的内容不变,但既然是对象,就有了很多数据操作的方法。包装的过程是将栈空间的数据复制到堆空间的对象中,这个对象中的内容就是所需要的数据。
byte对应的包装类为Byte;
short --> Short;
int --> Integer;
long --> Long;
float --> Float;
double --> Double;
boolean --> Boolean;
char --> Character;
这些数据类型包装类的功能大多都相似,提供的各种方法也大多相似。其中最重要功能之一是:数据类型和String类型之间互相转换。★★★★★
以Integer包装类为例:
基本功能:
它有几个字段属性:MAX_VALUE、MIN_VALUE,这两个分别表示int类型的数据最大值和最小范围值。
System.out.println(Integer.MAX_VALUE);
提供了将int数据转换成二进制、八进制、十六进制的方法,返回值为String类型:
System.out.println(Integer.toBinaryString(20));
将String类型数据转换为Int类型的方法parseInt(),显然返回值为Int类型:
System.out.println("123"+2);
System.out.println(Integer.parseInt("123")+2);
System.out.println(Integer.parseInt("a123")+2); //Exception:NumberFormatException
还有个重载的方法,用于将其他进制的值转换为十进制:
System.out.println(Integer.parseInt("110",2));
其它数据类型包装类也同样有String转对应类型的解析方法:parseByte()、parseDouble()等,但character没有,因为它本身就是字符。
int类型转String类型:
System.out.println(Integer.toString(110)+2);
System.out.println(String.valueOf(110)+2);
System.out.println(110+""+2);
将int数值装进integer对象中,可以通过构造方法或valueOf()方法实现。构造方法和valueOf()都重载了两种参数的写法,一个是int参数,一个是String参数:
int i = new Integer(4);
int ii = new Integer("4");
int iii = Integer.valueOf(4);
int iii = Integer.valueOf("4");
xxxValue()方法取出对象中的值,并转换为数值类型。因为操作的是对象,因此该类方法是非静态方法,需要以对象名调用来返回该对象中包装的值:
int i = new Integer(4);
int num = i.intValue(); //对象调用,并返回为int类型
Long num = i.LongValue(); //取出对象i中的值,并转换为Long类型
判断Integer对象是否相等。Integer重写了equals()方法,只要对象中的值相同,对象就相等:
int x = new Integer(3);
int y = new Integer(3);
System.out.println(x==y); //false
System.out.println(x.equals(y)); //true
自动装箱、自动拆箱特性:
要操作一个数值,需要定义一个int类型的变量:int i = 4;,要使用Integer类的一些通用方法,需要定义一个Integer类的对象Integer i = new Integer(4);。要对int变量执行方法,需要先将其封装为Integer类对象,或者反过来,要加减乘除Integer对象,需要将其转换为int数据类型,之间的来回转换极为麻烦。
从jdk 1.5开始,支持自动装箱、拆箱的功能。
Integer i = 4;
定义一个引用类型变量i,引用类型只能指向对象,所以4自动转换为对象,所以等号右边这等价于使用了Integer.valueOf(4)。Integer.valueOf()重写的方法中实际上是调用了new Integer()。所以下面的几种写法是等价的:
Integer i = 4;
Integer i = new Integer(4);
Integer i = Integer.valueOf(4);
自动拆箱则相反,是指自动取出对象中的值。
Integer i = 4;
i = i + 5;
其中"i+5"是数值运算,i首先从对象转换为数值,得到9。而等号左边的i是对象引用,所以还要再将9自动装箱为对象。所以等价于下面的代码:
i = Integer.valueOf(i.intValue()+5);
由此可见,自动装箱、拆箱的特性,极大地增强了可读性。
但自动装箱的过程有一点小细节:当数值在byte范围内(-128-127)时,自动装箱时不会新创建对象。意思是当有一个Integer x对象中的值为3时,它小于127,如果还有一个Integer y,它的值也是3,那么x和y指向同一个对象。
Integer x = new Integer(3);
Integer y = new Integer(3);
System.out.println(x==y); //false
System.out.println(x.equals(y)); //true
Integer a = 3;
Integer b = 3;
System.out.println(a==b); //true
System.out.println(a.equals(b)); //true
Integer c = 128;
Integer d = 128;
System.out.println(c==d); //false
System.out.println(c.equals(d)); //true
Java数字包装类基本程序,Java基本数据类型包装类相关推荐
- java入门~第十五天 基本数据类型包装类,各种常用类.以及正则表达式md
1.基本数据类型包装类 1.01基本类型包装类的概述 需求: a:将100转换成二进制 , 八进制 , 十六进制 b:判断一个数是否在int的范围内 if(25252525>=Integer.M ...
- java 简单的计算器程序,Java 简易计算器程序
最近开始学习java,参考教科书写了一个简单的计算器程序,贴上来,以便有用的时候可以参考. 呵呵,哈哈!!! import java.awt.Container; import java.awt.Fl ...
- java多客户端聊天程序,java – 多客户端聊天程序,向所有客户端广播聊天?
我正在尝试制作一个可以容纳多个客户端的非常简单的聊天程序.我有一个多线程服务器,可以连接多个客户端,但服务器只与单个客户端通信(因为它应该,每个客户端都在自己的线程上)我需要帮助让服务器发送来自所有连 ...
- java 数字1类型_java-1.基础与数据类型
第三节数据类型 1.Java程序基本结构 package Mr;定义了 Java程序中类所在的包是Mr,其中Mr是一个标识符 public class Example是创建类的语句,其中public是 ...
- java能调用python吗_如何使用运行时在Java中调用python程序 - java
我想用来自Java的参数调用python程序.但是我的输出是空白.代码在这里. Python代码在这里: import sys print(sys.argv[1]) Java代码在这里: public ...
- java的算术表达式程序,java计算数学表达式
import java.util.EmptyStackException; import java.util.Stack; public class CaculateFunction { privat ...
- JAVA日历窗口小程序,Java日历的小程序
Java写的日历小程序,算法效率虽然不算很高,却是简单实用的 CalendarBean.java import java.util.Calendar; public class CalendarBea ...
- java万能万年历的程序,java 实现万年历
以前初学java写万年历,都是采用基本的算法求出是否闰年闰月 计算公式如下 int year = 2014, month = 8, total = 0; if (month == 1 || month ...
- java实现表白小程序——java小程序
今天闲来无事,教大家一个哄妹子的小case.我们需要创建一个心形图案,按照心形图案的位置和长度,对所创建的字符串进行截断并在所需的位置上输出,最终能呈现在屏幕上满满的爱心.废话不多说,直接上源码看效果 ...
最新文章
- android6鼠标驱动,USB鼠标按键驱动(示例代码)
- stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗
- 微软公司部署小型数据中心网络连接产品
- URL编解码、Big Endian和Little Endian
- 【Git入门之五】版本管理
- bp matlab 训练参数,基于MATLABBP神经网络设计与训练.PDF
- centos7安装xterm_CentOS 7使用x-manager中Xstart工具报缺少xterm包错误
- java服务端异步处理机制_Java异步处理机制实例详解
- 女生天生就是产品经理
- Nginx下配置多个web服务
- excel 图表制作--趋势线误差线
- OPPO技术开放日第六期丨OPPO安全解析“应用与数据安全防护”背后的技术
- 2021-07-12 怎么将桌面图标变大变小
- java jse jee jme_Java学习笔记(1) --JSE 、JEE、 JME三者的区别
- 治疗“实火”引起的急性口腔溃疡及清新口气的方法
- 2021年Q1微信视频号生态趋势调查报告 | 友望数据
- 6.5 负反馈对放大电路性能的影响
- Linux_centos版初学(基础命令)
- 微信公众号开发者接入
- 第9章 慕课网日志实战
热门文章
- (Excel)常用函数公式及操作技巧之四:文本与页面设置(二)
- TortoiseSVN SendRpt.exe not found解决方案
- 怎么解决svn清理失败且路径显示乱码问题
- IDEA——找不到或无法加载主类的一种暴力解决方法
- 解决yum 不能更新问题 :yum 报错Loaded plugins: fastestmirror, refresh-packagekit, security
- shell脚本中的YYYY-MM-DD格式日期
- 如何使用JavaScript更改元素的类?
- 海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践
- spring 获取配置文件的值
- 【CentOS 7MySQL常用操作2】,连接MySQL#180112