java integer最大值_五分钟学会java中的基础类型封装类

在刚刚学习java的时候,老师不止一次的说过java是一种面向对象的语言,万物皆对象。对于java中的基础数据类型,由于为了符合java中面向对象的特点,同样也有其封装类。这篇文章对其有一个认识。

一、基本认识

其实在jdk1.5之前,在基础数据类型与其封装器之间的转化必须手动进行,但是从jdk1.5之后,由于提供了自动装箱的机制,因此我们不再手动进行了。

装箱:基础类型转封装类型。Integer a = 3
底层实现:Integer a = Integer.valueOf(3);
拆箱:封装类型转基础类型。int b = a;
底层实现:int b = a.intValue();

既然封装类能够封装基础类型,那么能封装的范围是多少呢?

基本类型封装器字节数最大值最小值byteByte1byte2^7 - 1-2^7shortShort2byte2^15 - 1-2^15charCharacter2byte2^16 - 10intInteger4byte2^31 - 1-2^31longLong8byte2^63 - 1-2^63floatFloat4byte3.4e+381.4e-45doubleDouble8byte1.8e+3084.9e-324booleanBoolean1byte/4byte/不明确--

我们对其进行了一个总结。不过我们应该注意到boolean类型没有给出精确的定义,可能是一个字节也有可能是四个字节,这是为什么呢?java虚拟机规范中规定的是4个字节,但是不同的厂家虚拟机可能不同,所以可能不会按照规范来。

以上这张图想必我们都不陌生,每一种基础类型都有一个唯一的封装类。而且也给出了字节数、最大值最小值等。下面我们就看一下其基本使用:

public 

二、基础类型与封装类的区别

1、传递方式不同

基本类型是按值传递,而封装类型是按引用传递的。int是基本类型,直接存放数值;Integer类会产生一个对象引用指向这个对象。

2、存储位置不同

基本类型存储在栈中,封装类的引用存储在栈中,而值是存在堆中。这样看上去好像基础封装类多此一举,而且基本类型的速度也确实会比封装类更快。为什么快呢?这是因为封装类涉及到了对象内存的分配和垃圾回收。但是基本类型直接拿起来就计算了。

三、源码分析

在讲解源码之前我们先给出一个神奇的例子,请看下面的代码:

public 

第一种情况感觉和第二种情况一模一样呀,为什么第二种是false呢?想要知道原因,我们就必须要深入到源码中找寻答案。

public 

也就是说,在合理表示范围之内就直接拿出来一个旧的数据,如果不在表示范围之内那就创建一个新的。但是对于源码的了解不能仅限于此。我们还是按部就班的分析,下面我们以Integer封装类为例。

1、参数

//最小值::-2147483648

2、方法

//方法1:将字符串参数解析为有符号的整数

3、缓存

上面支持给出了一些基本的使用方法,不过最核心的还是缓存范围的实现。下面我们看一下:

private 

上面这些代码能看懂最好,看不懂我来描述一下大概意思:这是一个静态内部类,类中定义一个静态cache数组,这个静态数组预先放了自己指定范围内的数据,拆箱的时候首先判断范围然后从缓存数组中去抓取数据。就是这么一个简单的过程。

四、使用场景

上面分析了这么多,最主要的还是如何使用,在什么地方使用。下面我们就总结几个场景:

1、类型之间的转换:

String 

2、泛型中使用

List<>为原始类型,不指定元素类型时,会出现不安全的警告:

List is a raw type. References to generic type List<E> should be parameterized

大概意思就是:List的<>中应该指定清楚是那种类型,如Integer、String等。

3、强制类型转换

4、集合中使用

public 

这种情况下会出现空指针异常。

OK。今天的文章先到这里,如有问题还请批评指正。

0bd3d54dd4d60dda8197bd365861834e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hadoop 单节点安装

http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html ,一&#xff0c;.安装hdfs1&#xff0c;hadoop-env.sh修改java_home2&#xff0c;core-site加入1,注意使用主机名映射2,端口使用&#xff1a;80203&#xff0c;缓存目录&#xff0…

web.xml文件位于web项目的目录结构中的_看完这篇,别人的开源项目结构应该能看懂了...

我为什么要写这篇近来&#xff0c;和不少初学Spring或Spring Boot的小伙伴私信交流了关于项目目录结构划分和代码分层的问题。很多小伙伴表示网上下载下来的开源项目看不懂&#xff0c;项目结构和代码分层看得很蒙&#xff0c;不知道应该以一个什么样的思路去学习和吸收别人的项…

06-CABasicAnimation基础核心动画

06-CABasicAnimation基础核心动画 核心动画只作用在层上面. 动画的本质是改图层的某一个属性. CABasicAnimation *anim [CABasicAnimation animation]; 图层有哪些属性,这里才能写哪些属性. anim.keyPath "transform.scale"; anim.toValue 0.5; 告诉动画完成的时候…

java 异常 理解_java异常理解(1)

JAVA异常处理机制1引子try…catch…finally恐怕是大家再熟悉不过的语句了&#xff0c;而且感觉用起来也是很简单&#xff0c;逻辑上似乎也是很容易理解。不过&#xff0c;我亲自体验的“教训”告诉我&#xff0c;这个东西可不是想象中的那么简单、听话。不信&#xff1f;那你看…

python turtle 绘图速度用函数会快吗_有趣的Python turtle绘图

专 题 Feature Story 16 \ China Science & Technology Education 文 _ 毛京宇&#xff0f;北京师范大学第三附属中学 魏云靖&#xff0f;北京市师达中学 有趣的 Python turtle 绘图  Python turtle 的发展 Python 中的 turtle 模块受启发于在欧美有 着广泛基础且历史悠久…

网络导通概率的研究

最近老师给了一个题目&#xff0c;说是研究一个正常矩阵任意概率置点概率下&#xff0c;双向导通&#xff08;x,y&#xff09;的概率&#xff08;要求有自然边界条件&#xff0c;也就是可以从0->length-1&#xff09;&#xff0c;用代码敲了一下demo&#xff0c;结果发现有个…

在java中字符流怎么复制_Java 使用字符流拷贝数据

使用字符流拷贝数据时&#xff0c;需要注意在文件末尾处的数据&#xff0c;因为最后一次读取的长度不会刚好与数组input长度相同&#xff0c;所以需要引入新的变量来存储每次读取的长度。import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExcep…

mysql workbench中文设置_使用Workbench完成流体压力渗透分析

“之前的案例&#xff0c;APDL Showcase3里使用到了流体压力渗透载荷。有朋友读到以后&#xff0c;希望能在Workbench里实现这一功能。有需求就有动力&#xff0c;我们来试一试。 ”01—结果展示先看计算结果&#xff1a;(为了截图方便将模型旋转了90度)该案例为轴对称模型&…

总结下用Vue.js和webpack遇到的问题

这段时间用vue.jswebpack做一个单页应用的demo&#xff0c;第一次尝试模块化&#xff0c;技术水平有限&#xff0c;学习不够深入&#xff0c;总是遇到各种问题&#xff0c;所谓前事不忘后事之师&#xff0c;so记录下。 1.ES6匿名函数里面this值 结合webpack&#xff0c;使用Bab…

java+session+存在哪_JAVA中Session

会话状态的维持是开发Web应用所必须面对的问题&#xff0c;有多种方法可以来解决这个问题&#xff0c;如使用Cookies&#xff0c;hidden类型的表单域&#xff0c;或直接把状态信息加到URL中等&#xff0c;还有Servlet本身提供了一个HttpSession接口来支持会话状态的维持&#x…

ddns客户端_DDNS哪家最方便?试试看Mikrotik的ROS!

没有固定IP的情况下&#xff0c;想要提供外网访问&#xff0c;那么DDNS是必不可少的一个设置。DDNS&#xff08;Dynamic Domain Name Server&#xff0c;动态域名服务&#xff09;是将用户的动态IP地址映射到一个固定的域名解析服务。需要注意的是&#xff0c;不是域名是动态的…

手机网页里的模态对话框

今日帮朋友写了一个手机网页里用的模态对话框&#xff0c;防止自己日后忘记&#xff0c;所以mark一下。原理很简单&#xff0c;当弹出了模态对话框的时候&#xff0c;就是touchmove事件进行监听&#xff0c;如果是对话框的touchmove事件&#xff0c;就允许拖动&#xff0c;其他…

python最好用的画图工具_python Matplotlib.plot 超好用的画图技巧,总有一条用得到!...

低阶通用模板 import numpy as np import matplotlib.pyplot as plt # 数据准备 xnp.linspace(0,10,num30) ynp.sin(x) znp.cos(x) # 设置画布大小 plt.figure(figsize(6, 3)) # plot 画x与y和x与z的关系图 plt.plot(x,y,labelsin(x),colorred, linewidth1,markero,markersize3…

java join使用实例_Java多线程中关于join方法的使用实例解析

先上代码新建一个thread,代码如下:package com.thread.test;public class mythread extends thread {private string name;public mythread(string name) {this.name name;}overridepublic void run() {for (int i 0; i < 100; i) {system.out.println(name"["i…

iptables禁止端口和开放端口

1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。 下面是命令实现&#xff1a; iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 再用命令 iptables -L -n 查看 是否设置好&#xff0c; 好看到全部 DROP 了 这样的设置好了&#xff0c;我们只…

python中级程序员是什么水准_程序员进阶:一篇搞懂Python中级应用

异常处理&#xff1a;try-except 异常即是一个事件&#xff0c;该事件会在程序执行过程中发生&#xff0c;影响了程序的正常执行。一般情况下&#xff0c;在Python无法正常处理程序时就会发生一个异常。 异常是Python对象&#xff0c;表示一个错误。当Python脚本发生异常时我们…

python做excel表格代码_[宜配屋]听图阁

安装两个库&#xff1a;pip install xlrd、pip install xlwt1.python读excel——xlrd2.python写excel——xlwt1.读excel数据&#xff0c;包括日期等数据#codingutf-8import xlrdimport datetimefrom datetime import datedef read_excel():#打开文件wb xlrd.open_workbook(rte…

语文高考识记现代汉字的字形【转】

要点导读&#xff1a;基础知识&#xff0c;既是得分重点&#xff0c;也是常见失分点&#xff0c;13个状元帮你牢记易错知识点&#xff0c;13位名师助你剖析易误点&#xff0c;让你6月7号考场不再有失分点。 备考启示&#xff1a;误点总结&#xff0c;全面剖析&#xff0c;多记…

python分布式框架_高性能分布式执行框架——Ray

Ray是UC Berkeley RISELab新推出的高性能分布式执行框架&#xff0c;它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式&#xff0c;具有比Spark更优异的计算性能。 Ray目前还处于实验室阶段&#xff0c;最新版本为0.2.2版本。虽然Ray自称是面向AI应用的分布式…

java 读取list文本_【java基础】读取本地文件赋给Bean或list、Map

private Map messageTypeControllerMap; private static final String CONTROLLERS_CONFIG_PATH "config/controller/controllers.json"; /** * 从文件中获取 controller的配置&#xff1a;优先级、消息类型、类名 */ public void init(ApplicationContext app) { t…