世界新消息丨Java 数据类型(全网最全)
Java 数据类型(全网最全)
数据类型方法论
程序本质上是对数据的处理(逻辑运算),因此任何语言都需先解决如何表征【数据】这个核心概念。数据作为抽象的概念,天然的包含2个方面属性:
类型:类型决定了数据只能和同类型的数据进行运算才有意义,不同类型的数据必须进行类型转换数值:是数据的数学意义上的大小或内容。同时数据保存在内存或磁盘中,总是占用一定的存储空间,因此一个数据在程序中是由类型、数值和存储空间表示的。
(资料图片仅供参考)
Java 数据类型
Java 是一种强类型语言,每个变量在声明时必须指定其数据类型。根据参数传递时的赋值方式,Java 中的数据类型分2类:
基本数据类型(值类型)
参数传递时总是以值拷贝的形式,赋值给接收变量。
本质是对数学意义上的纯数值类数据的抽象,因此又叫值类型.
注意:基本数据类型在语言层面是不可分割的基本单元,但硬件层面并非是不可分割的,因为内存的读写是以内存行(64位)为基本单位的,占用2个或2个以上内存行的数据在高并发下是不安全的。
引用类型
即参数传递时是以拷贝引用地址的方式传递给接收变量,而非复制整个"数据"本体。
除了基本数据类型外的、其他结构化的数据类型,如字符串类型String、或自定义的类(如Person),本质上是对现实世界结构化、关系化数据的抽象,因为一个对象(如人)总是具备多个特征属性的,每个属性都是一个基本数据类型。
为什么不是拷贝值?
这类类型的变量本质上是一段存储空间的起始地址,因为结构化数据的存储空间的大小是由所有属性叠加的,且是可变的,不能或很难实现原子性的拷贝,且空间代价很大,因此参数传递时并不是机械的拷贝所有属性、所有空间,而是仅复制拷贝起始地址就行了,其他字段可以据此基地址和字段顺序进行偏移计算所得。
值类型和引用类型的区别
概念方面基本类型:变量名指向具体的数值,参数传递会拷贝值的副本,原值不受影响
引用类型:变量名指向存数据对象的内存地址,参数传递是复制内存段的起始地址,最终指向同一内存段。
相等语义基本类型:使用时需要赋具体值,使用 == 号判断值是否相等。
引用类型:== 是判断引用地址是否相同;通常应重写 equals 方法实现自定义的逻辑,如同一学生会存在多个缓存中,重写equals,根据学号no是否相等判断是否是同一学生。
基本数据类型(值类型)
Java 语言共提供了4 类、8 种基本类型
整数型
是对数学中整数的表达,按照数值范围和存储空间大小顺序:byte < short < int < long
浮点型
是对数学中的小数的表达,即有浮动小数点的数,
float- 32 位,直接赋值时必须在数字后加上 f 或 F,指示编译器这是一个float型浮点数
double- 64 位,赋值时一般在数字后加 d 或 D,指示编译器这是一个double型浮点数
Unicode 字符型
是对Unicode编码的表达,Unicode编码是对全世界所有主要语言中各类字符、符号的编码,是将文档转存成计算机的二进制序列进行保存的理论基础。
char- 16 位,存储 Unicode 码,用单引号赋值。
可计算的java 提供字符型,可以更方便的表述字符,同时支持基于编码的数值计算,因此char类型的值本质还是数值,可以参与数值计算。
布尔型(真假)
是对逻辑运算值的表达,即真True和假False。
boolean- 只有 true 和 false 两个取值。
非数值boolean 类型是非数值类型的,因此和其他基本数据类型不能参与计算。
最小使用原则
即在满足需求的前提下,优先使用更小的类型,可以节省大量的内存,提升程序的性能。Java每个大类都提高了多个大小不一的类型,即是灵活的需要,更是内存优化的需要。
类型转换
正如方法论中所说,不同类型的数据不能直接混合计算,必须转换同一种类型。
Java 中,数据类型转换有两种方式:自动转换和 强制转换
自动隐式转换
在符合下面的规则下,Java编译器会安全的、隐式的进行转换,降低用户手动转换的压力。
自动膨胀原则即在精度不一致的混合场景下,Java编译器会隐式的将精度较小的类型转换成精度稍大的类型后才进行计算,由小转大,数据精度并不会丢失,因此是安全的。
膨胀的顺序是:byte -> short/char -> int -> long -> float -> double
由下面的例子可以看出,Java编译器不仅自动优化了变量类型,减少了内存,而且自动隐式的将 byte 转换成了 float,整个表达式的最终结果已是float类型
再使用精度较小的int型变量接收时就会提示出错。
强制转换
在不符合自动转换条件时或者根据用户的需要,可以使用符号()对数据类型做强制的转换。
注意!!!:从精度大到精度小的强制转换,因为存储空间也会缩小一半,因此存在数据出错的不确定性问题,用户自身需要自我承担这样的风险。
可以看到虽然编译阶段是正常的,没有提示错误,但是运行时的结果却是一个不确定的数据,而不是预期的。
装箱和拆箱
为了基本数据类型可以与引用类型互相转换,以利用彼此的特性,Java 为每一种基本数据类型提供了相应的包装(封装)类。
包装类和享元模式
Java基本数据类型的包装类以value字段保留其对应的数值,如Integer#value,可以通过构造器或者valueof方法生成新的包装对象实例。
享元模式(即缓存池模式)因为在堆中创建新的对象是相对比较重的操作,同时基本数据类型的自动装箱又是程序中最常见的情况之一,因此为为避免重复创建这些常用的对象,Jdk实现的基本类型包装类基本都会采用缓存池的设计,即享元模式,数量由jvm参数XX:AutoBoxCacheMax指定。
饥饿池化- 包装类在首次加载时会对指定小范围内的数值进行饥饿式池化,如java.lang.Integer.IntegerCache.high指定
懒加载池化- 对每个首次使用的其他数值进行懒加载池化和替换
享元模式是非常重要的设计模式一直,对内存优化和系统系统方面都是非常友好的。
装箱(boxing)
即将基本数据类型转换为对应封装类的引用类型,目的是获得对应封装类的各类方法的能力。例如:int 转 Integer,编译器是通过调用包装类的 valueOf 方法实现的。
自动装箱(auto boxing)当基本数据类型赋值给对应包装类的引用类型时,Java会自动的将基本数值类型通过其包装类的valueOf,在堆上创建其对应的包装类对象。
拆箱(unboxing)
是将封装类的引用类型转换为基本数据类型,例如:Integer 转 int,目的是可以参与常规的数学运算。本质是编译器通过调用包装类的 xxxValue 方法实现的。(xxx 代表对应的基本数据类型)
自动拆箱(auto unboxing)当包装类与基本数据类型混合运算时,Java会调用该包装类的xxxValue获得对应的值类型的值,然后才参与表达式的计算。
总结
最后整理了一个完整的脑图。
推荐
- 世界新消息丨Java 数据类型(全网最全)
- 帝都歌词表达了什么感情_帝都歌词
- 2020款“帕萨特”美版到店,力量与设计的完美结合,安全有保障! 动态焦点
- 怎么制作视频片头动画 视频片头动画制作_动画片头怎么制作过程|全球时讯
- 世界热消息:上弦月
- 360图书馆怎么赚钱原创文章收益怎么算_360个人图书馆怎样盈利 全球信息
- 武威市民勤县消防救援大队联合住建部门开展高层住宅小区消防安全检查-世界速讯
- 专门培养小学生健康人格的美文精选
- 6尺7有多高_6尺7是多少米_环球滚动
- 东流坑组 世界新要闻
- 环球速看:污流爱情故事
- 今日最新疫情实时消息 新增28513例本土确诊病例,新增56例死亡|每日热门
- 塞娅
- 馋“狂飙牌”猪脚面?安排!
- 环球热文:三晋先锋手机客户端_三晋先锋登录入口
- 磨料磨具 全球球精选
- 当前速讯:增收不增利 柏星龙预计2022年净利润下降3.81%但并未解释原因
- 环球热头条丨中国茶艺学300问
- 天天精选!爆裂!足协做出争议决定,扬科维奇受重创,郑智邵佳一很意外
- 环球关注:2023年飞行任务乘组已完成选拔
- 最新:中棉所12
- 第四架“鲲龙”AG600M首飞成功
- 苦尽甘来_关于苦尽甘来的简介
- 校园三剑客
- 全球焦点!止血粉市场调研报告-2023年辰宇最新发布
- 塘沽一中附近房源_塘沽火车站位置在哪 在什么附近_当前热文
- 美国联邦调查局-当前速递
- 回家!马塞洛回归母队弗鲁米嫩塞,初出茅庐的队宠你还记得吗?_环球讯息
- 牛仔裤每季都买,不同身材买什么好?
- 二十四诗品译注评析
- 银保监会:稳步有序推进养老理财产品试点工作_天天头条
- 方正富邦均衡精选混合基金2023年3月6日份额发售 当前观点
- 梨花烟雨作品集rar_梨花烟雨作品集_环球观点
- 羊水和分泌物怎么区分_羊水和分泌物怎么区分
- 世界新动态:2023周杰伦巡回演唱会官方购票入口(附票价+开票时间)
- 可清纯可轻熟,这才是普通人穿搭的正确打开方式,惊艳路人!
- 片字组词怎么组_片字组词
- 今亮点!2022年02月02日整理发布:做兄弟的要讲义气走江湖要讲道义什么歌
- 海外网评:美国两党又“互掐”,脱轨的不止“毒列车”
- 胃食管反流如何根治_胃食管反流病能治好吗|世界新资讯
- 02月23日涨停板连板:扬州金泉、坤泰股份等6板 环球观天下
- 环球热推荐:广播新闻学
- 六娃小说_六娃
- 怎么把游戏存档弄成文件夹,把游戏转到文件夹里怎么 弄 环球微速讯
- win7系统中修改ip地址的操作方法_win7系统ip地址更改
- 易冰_对于易冰简单介绍
- 《BASTARD!!暗黑的破坏神》第2季新角色Netflix年内上线
- 神行2_神行记
- 世界快消息!山东平邑警方通报“一女子持铁棍殴打环卫工”:女子已被行政拘留
- 中邮核心主题混合基金净值_中邮核心主题 快看点
- 移动充话费哪里充最优惠_移动充话费_环球最新
- 世界报道:枢密院十号:拜登说漏了?美国有毁灭台湾计划?
- 当前关注:久祺股份2月22日盘中涨幅达5%
- 70 年所未见,美国工厂“两班倒”疯狂生产炮弹_每日消息
- 环球视点!牙刷不要用到呲毛才换,更换的频率最好是? 蚂蚁庄园今日答案7月24日
- 天天通讯!天韵国际控股(06836):Strong Won HK与山东金顺泰签订天同宜昌全部已发行股本的买卖协议
- 广西威壮击败陕西信达成功卫冕NBL联赛总冠军-每日信息
- 英媒:切尔西初步接触波切蒂诺,但被对方拒绝 今日观点
- 柳泉镇西堡村:春来到 果农忙-全球时讯
- 江南歌词_江南歌词林俊杰-世界关注
- 非婚生子女判定与胎儿必留份之问题探讨
- 世界滚动:莱茵生物:2022年投资布局合成生物技术,加强核心产品及配方竞争优势,巩固龙头企业地位
- 消息!男篮:曾凡博对杜锋指导说出心里话,乔尔杰维奇多次感谢杜锋
- 国际主义风格的特点是什么意思_国际主义风格的特点是什么 环球关注
- 伟哥能坚持多久?_伟哥能坚持多久
- 外国专家:谁有动机炸毁“北溪”管道?
- 刘邦跟刘备,同样占据蜀地跟汉中,获得不同结局的原因是什么?
- 02月20日德马科技股票异动解析
- 全球快看:奋进的春天 | 消费空间推陈出新 实体商业加速“触网”
- 商洛法院:为人民群众捂紧“钱袋子”_全球视点
- 华茂伟业拟在深交所创业板上市募资10亿元,投资者可保持关注 当前速讯
- 电影《地狱男爵》再度重启 《怒火攻心》导演执导
- 这个春节过去了,实体零售迎来了哪些商机|环球速看
- 正常人吃奥氮平会得精神病吗_正常人吃奥氮平的后果 当前动态
- 田径界一“怪”:男子世界纪录又破了 女子纪录还是70年代的-每日热点
- 皮皮虾怎么剥_怎样给皮皮虾去皮|环球报道
- 怎么打开晨曦小账本里的日记本_晨曦小账本手机版
- 全球聚焦:冰咖啡_关于冰咖啡的介绍
- [新时代 新征程 新伟业]旅游产业实现新领跑新跨越_环球热头条
- 生姜的各个部分-新消息
- QQ抢名额_qq至尊宝怎么抢名额
- 热资讯!法意兰377是正规品牌吗_法意兰
- 天天资讯:剪纸玩出新花样 新疆非遗传承人“圈粉”年轻人
- 天天快资讯丨360摄像机离线怎么解决_360摄像机离线怎样重连
- 【ES三周年】ES元信息
- 全球今日讯!两条设计时速350公里高铁,取得新进展!
- 天天看点:「奋进的春天」河北所有设区市全部退出全国重点城市空气质量“后十”
- 腊肉的制作方法_腊肉的做法步骤
- c盘为什么莫名其妙满_c盘为什么会越来越满
- Model Y又涨2000,特斯拉调价关注该降温?
- 新红楼梦王熙凤介绍_王熙凤人物介绍 天天热推荐
- KPL:落后1万经济,用“真香组合”翻盘,RW侠3:2胜XQ
- 环球速递!abracadabra歌曲_sorry sorry 和abracadabra舞蹈哪个难
- 杜绝计提资产减值操纵利润行为
- 每日讯息!包塑边坡防护网多少钱 边坡防护网什么牌子好
- 沽源县气象台发布大雾橙色预警【Ⅱ级/严重】【2023-02-17】
- 共性承诺_共性承诺 今日快讯
- 瑞信:重申Albemarle(ALB.US)低于大市评级|焦点热议
- 关注:矿山披新绿 绽放满眼春
- 天天快讯:2022年中国柚子市场规模、产销量、加工市场规模及进出口情况分析
X 关闭
行业规章
X 关闭
