当前位置: 首页 > news >正文

Java中的基本类型和包装类

Java中基本数据类型与包装类型有

  基本类型    包装器类型  
booleanBoolean
charCharacter
intInteger
byteByte
shortShort
longLong
floatFloat
doubleDouble

存在基本类型对应包装类的原因:

  基本数据类型存方在栈中,效率更高

  new出来的对象存在于堆中(通过栈中的引用来使用这些对象),是一个对象,因此具有更多的诸如“转换”的方法

包装类型的意义

  Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

另外,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。

 

基本类型和包装类转换:

以int和Integer为例(Java5前):

1.int转Integer

int i = 0;
Integer ii = new Integer(i);

2.Integer转int

Integer ii = new Integer(0);
int i = ii.intValue(); 

 

基本类型和包装类的区别:

1. 声明方式不同:

基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间; 

2. 存储方式及位置不同:

基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

 3. 初始值不同:

基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;‘

 4. 使用方式不同:

基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。

 

自动装箱和拆箱

在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:

Integer i = new Integer(10);

而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:

Integer i = 10;

这个过程中会自动根据数值创建对应的 Integer对象,这就是装箱。

 

那什么是拆箱呢?顾名思义,跟装箱对应,就是自动将包装器类型转换为基本数据类型:

Integer i = 10;  //装箱
int n = i;   //拆箱

装箱就是  自动将基本数据类型转换为包装器类型;拆箱就是  自动将包装器类型转换为基本数据类型。

 

转载于:https://www.cnblogs.com/ynhwl/p/9785780.html

相关文章:

  • 用jquery-easyui中的combotree实现树形结构的选择
  • Oracle推出轻量级Java微服务框架Helidon
  • Postgres和MySQL创建用户并授予db权限
  • 自定义JSP标签库及Properties使用
  • Kubernetes - 集群内容器访问集群外服务
  • 同步和异步的区别
  • 认真的做羞羞的事 一颗种子的自我分享
  • Java异常机制
  • 使用Docker1.13.1快速部署ELK环境
  • SliTaz 从入门到精通
  • Decorator装饰者模式(结构型模式)
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • Anaconda3启动ipython的几种方式
  • QueryParser
  • SqlService 索引原理
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • LeetCode29.两数相除 JavaScript
  • passportjs 源码分析
  • python学习笔记 - ThreadLocal
  • rc-form之最单纯情况
  • SpiderData 2019年2月16日 DApp数据排行榜
  • spring + angular 实现导出excel
  • Yeoman_Bower_Grunt
  • 使用权重正则化较少模型过拟合
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 译自由幺半群
  • 责任链模式的两种实现
  • scrapy中间件源码分析及常用中间件大全
  • Spring第一个helloWorld
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (WSI分类)WSI分类文献小综述 2024
  • (动态规划)5. 最长回文子串 java解决
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (原)本想说脏话,奈何已放下
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)ORM
  • *** 2003
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ******之网络***——物理***
  • ***原理与防范
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET 4.0中的泛型协变和反变
  • .NET CLR基本术语
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • /etc/motd and /etc/issue
  • /proc/vmstat 详解
  • @property括号内属性讲解
  • [Angular 基础] - 指令(directives)
  • [BT]BUUCTF刷题第9天(3.27)