16.Jdk包装类与自定义包装类(JavaBean即封装)

Java 语法特性历史演化全览概述(JDK 1.0 — JDK 7) JDK 1.0-1.4:无泛型,集合操作需要强制类型转换↓JDK 5.0 :引入泛型,编译期类型检查↓JDK 7 :钻石运算符,减少泛型冗余声明。 阅读详情

来自 

Java教程 - 廖雪峰的官方网站研究互联网产品和技术,提供原创中文精品教程icon-default.png?t=M0H8https://www.liaoxuefeng.com/wiki/1252599548343744

但有缩减增加


1.包装类

ava的数据类型分两种:
基本类型:byte,short,int,long,boolean,float,double,char
引用类型:所有class和interface类型,String,数组,基本数据类型的封装类型
引用类型可以赋值为null,表示空,但基本类型不能赋值为null

 


Auto Boxing(自动装箱),自动拆箱(Auto Unboxing)
因为int和Integer可以互相转换:
int i = 100;
Integer n = Integer.valueOf(i);
int x = n.intValue();

所以,Java编译器可以帮助我们自动在int和Integer之间转型:
Integer n = 100; // 编译器自动使用Integer.valueOf(int)
int x = n; // 编译器自动使用Integer.intValue()
注意:自动装箱和自动拆箱只发生在编译阶段,目的是为了少写代码。
class代码是严格区分基本类型和引用类型的。并且,自动拆箱执行时可能会报NullPointerException,因为基本数据类型不能赋值为null

2.不变类


对两个Integer实例进行比较要特别注意:绝对不能用==比较,因为Integer是引用类型,必须使用equals()比较:
public class Main {
    public static void main(String[] args) {
        Integer x = 127;
        Integer y = 127;
        Integer m = 99999;
        Integer n = 99999;
        System.out.println("x == y: " + (x==y)); // true
        System.out.println("m == n: " + (m==n)); // false
        System.out.println("x.equals(y): " + x.equals(y)); // true
        System.out.println("m.equals(n): " + m.equals(n)); // true
    }
}
new一定会开辟新地址



3.存储,处理


int n = 100在内存中总是以4字节的二进制表示:
使用的System.out.println(n);是依靠核心库自动把整数格式化为10进制输出并显示在屏幕上,使用Integer.toHexString(n)则通过核心库自动把整数格式化为16进制。
这里我们注意到程序设计的一个重要原则:数据的存储和显示要分离。
静态常量(final修饰)
// boolean只有两个值true/false,其包装类型只需要引用Boolean提供的静态字段:
Boolean t = Boolean.TRUE;
Boolean f = Boolean.FALSE;
// int可表示的最大/最小值:
int max = Integer.MAX_VALUE; // 2147483647
int min = Integer.MIN_VALUE; // -2147483648
// long类型占用的bit和byte数量:
int sizeOfLong = Long.SIZE; // 64 (bits)
int bytesOfLong = Long.BYTES; // 8 (bytes)
所有的整数和浮点数的包装类型都继承自Number,因此,可以非常方便地直接通过包装类型获取各种基本类型:
// 向上转型为Number:
Number num = new Integer(999);
// 获取byte, int, long, float, double:
byte b = num.byteValue();
int n = num.intValue();
long ln = num.longValue();
float f = num.floatValue();
double d = num.doubleValue();
处理无符号整型
在Java中,并没有无符号整型(Unsigned)的基本数据类型。byte、short、int和long都是带符号整型,最高位是符号位。而C语言则提供了CPU支持的全部数据类型,包括无符号整型。无符号整型和有符号整型的转换在Java中就需要借助包装类型的静态方法完成。
byte是有符号整型,范围是-128~+127,但如果把byte看作无符号整型,它的范围就是0~255。我们把一个负的byte按无符号整型转换为int:
public class Main {
    public static void main(String[] args) {
        byte x = -1;
        byte y = 127;
        System.out.println(Byte.toUnsignedInt(x)); // 255
        System.out.println(Byte.toUnsignedInt(y)); // 127
    }
}
类似的,可以把一个short按unsigned转换为int,把一个int按unsigned转换为long。
小结
Java核心库提供的包装类型可以把基本类型包装为class;
自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);
装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;
包装类型的比较必须使用equals();
整数和浮点数的包装类型都继承自Number;
包装类型提供了大量实用方法。



4.JavaBean


即封装,属性隐藏private
属性获取/设置,公共方法get/set方法
及其他自定义方法


 

用友u8服务器优化,用友U8erp软件运行的性能优化方案图文教程 今天一定要给大家分享一下用友U8erp软件运行的性能优化方案图文教程,以下方案来自用友软件官方维护工程师反馈在在处理客户问题的时候,有一类问题较为挠头,就是诸如用友U8服务器效率低下的问题。比如用友U8运行慢,卡住等,我们暂先不提用友U8软件代码、脚本层面本身的性能提升问题,我们只是基于现有用友U8软件版本,在客户现有环境下排查用友U8软件运行的性能瓶颈,并采取一定的技术手段进行性能调校。本文将推... 阅读详情

相关推荐

[ESP32]:基于esp-modbus实现serial主机

[ESP32]:基于esp-modbus实现serial主机

LINKKEEE的博客 2570

Object类和包装类

Object类 Object类是JDK默认提供的一个类,所有类默认继承Object类。 Object类是所有类的父类,使用Object可以接收所有类的对象。 1.取得对象信息toString() 使用系统输出输出对象时,默认输出的是一个地址编码。而使用系统输出输出String常量时,输出的是字符串内容。本质原因就在于Object类提供的toString()有没有被类所覆写。 系统输出(print/...

mayanni_blogs的博客 338

信创迁移实战:在银河麒麟V10-SP1上为Milvus离线部署Docker(附SP1专属避坑指南)

本文详细介绍了在银河麒麟V10-SP1 x86_64环境下离线部署Docker的全流程,特别针对该版本特有的自定义目录安装失败问题提供深度分析和解决方案。通过实战验证的步骤和避坑指南,帮助用户在信创项目中顺利完成Milvus等应用的容器化部署。

weixin_30687051的博客 532

java中三大特殊类之—Object类和包装类

Object类和包装类基本知识(toString();equals();包装类和字符串的相互转化)

m0_58006481的博客 1027

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 273

量化策略分享 | MA超进化:LLT低延迟趋势线

移动平均线(MA)是我们技术分析中常用的一种趋势跟踪指标,但在使用的时候你是否也会有这样的烦恼:交易信号延迟太久,或者交易信号太频繁了!延迟性和平滑性问题似乎是不可兼得的“鱼和熊掌”。 针对这个问题,广发证券基于通信领域的滤波器原理,在《短线择时策略研究之三:低延迟趋势线与交易性择时》中创造性构建了:LLT低延迟趋势线(Low-lag Trendline)。 LLT低延迟趋势线是一种二阶滤波器,阶数相对适宜,相比MA、EMA等均线指标能够降低延迟,同时增强在低频部分的输出信号。 当然,..

量化交易研究 5311

【JDK常用的API】包装类

1.什么是包装类?基本数据类型对应的对象2.JDK5以后对包装类新增了什么特性?自动装箱、自动拆箱3.我们以后如何获取包装类对象?不需要new,不需要调用方法,直接赋值即可Integer 成员方法。

人若无名,便可专心练剑 964

AI开发提效10倍:从需求到部署的全流程实战指南(附Prompt模板)

用AI开发不是“偷懒”,而是把时间花在更有价值的地方——原来花80%时间写重复代码,现在用AI搞定后,能把精力放在“优化用户体验”“提升系统性能”这些核心工作上,这才是AI给开发者的真正红利。如果你还没开始用AI做开发,建议从“写一个简单接口”“补一段注释”开始尝试,先用起来再优化方法。记住:AI是工具,不是对手,学会驾驭它,你会发现开发效率提升的同时,还能告别无效加班。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1532

自定义一个简单的包装类

【代码】自定义一个简单的包装类。

hdjag的博客 170

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 849

system.img解包打包工具

最近需要对system.img进行解包,修改系统属性和添加自己的APK,再打包烧录,整理俩个方法。 system.img解包打包工具方法一 1、把system.img转换成ext4格式 ./simg2img system.img system_ext4.img 2、挂载ext4到systemMount目录进行修改 sudo mount system_ext4.img systemMount/ -o loop 3、修改完成后 unmount 退出挂载使用如下命令

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 9706

20231122_165450 java 体验自定义包装类与基本数据类型的关系

20231122_165450 java 体验自定义包装类与基本数据类型的关系

pyhui的技术博客 130

自动化上位机开发C#100例:如何用面向对象的方式封装雷赛运动控制卡EtherCAT总线卡(C#代码)

自动化上位机开发C#100例:雷赛运动控制卡EtherCAT总线卡C#封装类。

十多年IT经验,专注机器视觉,智能制造半导体行业 5034

9、类与对象、封装、构造方法

9、类与对象、封装、构造方法1、面向对象思想的概述2、面向对象思想的举例3、类和对象的关系4、类的定义 1、面向对象思想的概述 面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。 面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事儿。 Arrays.toString(array) public class Demo01PrintArray{ public static void main(String[]args){ int[]

weixin_57686376的博客 588

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

第10章 封装与访问控制

把对象的属性(数据)和操作属性的方法(行为)包装在一起,并隐藏内部实现细节,只对外暴露必要的访问入口。// 年龄可以是负数?数据不合理!// 成绩超过满分?属性直接暴露,外界可以随意赋值,数据安全性没有保障。属性用private私有化,外界不能直接访问提供公开的 getter / setter 方法,在方法里做合法性校验为什么必须靠方法这层"闸门"?属性本身没有"检查"能力,赋值一瞬间就完成,坏数据直接写入;方法里却能写任意校验逻辑。

成熟的标题 626

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java基础11-16

一、面向对象的三大特征 分别是封装、继承、多态 二、封装 在面向对象的语言中,吧属性和方法放在一个类中,然后对类进行命名,以后通过类型来使用类。面向对象的设计五大原则SOLID中,又一个原则称为单一职责原则,因此,类的功能不是无限的。也就是每个类应该有它专门的职责。 每个类只能封装属于它自己应该具有的属性和方法。 封装可以更好的管理代码,也可以更好地实现功能的复用。 java中封装的实现。 在java中有一种特殊的类的设计方式,具有这种设计方式的类称为javaBean,javaBean的对象在项目中用来

m0_43534942的博客 302

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

javabean Introspector

javabean Introspector 原创 2012年06月16日 00:31:47 标签:getter /string /exception /setter /object /import 246 javaBean是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有字段,且方法名符合某种规则。

evilcry2012的专栏 283

【java】 jsp/javaBean javaDoc

什么是JavaDoc? 文档标记 JDK定义好的, 如 @author、@version、@since、@see、@link、@code、@param、@return、@exception、@throws等。 写在类上的文档标注(javadoc) 概要:文档标注,用于标注作者、创建时间、参阅类等信息 详细:参数和参数描述,其他说明,一般每段话都以英文句号作为结束 文档标注,用于标注...

qq_32265719的博客 220

JDK17 前后写法对比:差点没认出是 Java

Java 17新特性大幅提升开发体验:record简化POJO定义,自动生成构造器和方法;switch表达式支持返回值与模式匹配,避免传统陷阱;文本块(""")优雅处理多行字符串;instanceof模式匹配消除冗余类型转换;密封类(sealed)精确控制继承范围。这些特性使Java代码更简洁安全,特别适合Web开发中的数据建模(DTO/Response)、状态处理(订单/支付结果)、SQL/模板生成等场景,显著减少样板代码,提升可读性和类型安全性。

IT枫斗者的博客 898

在jsp提交表单的参数封装到一个方法里

建议去看一下孤傲苍狼写的Servlet+JSP+JavaBean开发模式(http://www.cnblogs.com/xdp-gacl/p/3902537.html), 最好把他JavaWeb学习总结全部看完会有很大的收获哦! 而把jsp专递的参数封装到一个方法里面也是从他那里学到的. 我觉得特别有用,尤其是在做项目的时候能省很多的代码 一:需要的包 根据上一篇JDBC+Se...

weixin_34417635的博客 267

Java面向对象与常用API核心知识点汇总

本文档汇总了Java面向对象编程与常用API的核心知识点,涵盖JavaBean、对象数组、继承、抽象类、接口、多态、内部类、异常处理以及常用API(如BigDecimal、日期时间、包装类等)。重点内容包括:JavaBean的数据封装作用,继承中成员访问特点与方法重写规则,抽象类与接口的区别及使用场景,多态的实现方式与优势,以及引用类型转换的注意事项。文档通过代码示例详细说明了各知识点的实际应用,为Java开发者提供了全面的参考指南。

2501_92864729的博客 514

Java面向对象和封装-基础知识笔记(黑马视频基础部分)

文章目录JRE和JDK方法Java内存划分一个数组的内存图:一个对象的内存图使用对象类型作为方法的参数局部变量Vs成员变量private关键字this关键字构造方法Java Bean 标准类 JRE和JDK JRE(Java Runtime Environment):Java程序运行环境,包含JVM和运行时所需要的核心类库(环境信息)。 JDK(Java Development Kit):Jav...

qq_41878358的博客 445

JavaSE 拾遗(16)——JavaSE 高新技术基础增强...反射

反射的作用 反射的作用总结起来就一个:倒转了目标类和客户类的依赖关系。 以前我们设计程序,客户类要么依赖于目标类,要么依赖于目标类的接口。因为目标类是作为工具提供给客户类使用的,根据 java 基本语法规则,要使用某个类,必须知道该类提供的接口。有了反射之后,我们就可以方便是使用反射来实现框架,解除框架中对于我们写的类——目标类,的依赖关系。 反射的概念和实现原理 Refl

分享美好的专栏 1694

面向对象基础

面向对象基础

南城余coding的博客 166

JDK 17新特性深度解析:从文本块到密封类,Java开发效率与代码安全的全面升级

Java作为企业级应用开发的核心语言,其版本迭代始终围绕提升性能、简化语法和增强安全性展开。理解Java新特性的原理,对于优化工程实践、应对复杂业务场景至关重要。JDK 17作为最新的长期支持版本,在语言层面引入了多项旨在提升代码质量和开发体验的革新。其中,文本块特性通过全新的三引号语法,彻底解决了多行字符串拼接带来的可读性与维护性难题,让JSON、SQL等结构化文本的编写变得直观清晰。同时,密封类特性从语言层面提供了对继承体系的精细化控制,通过`sealed`和`permits`关键字,开发者可以明确限定

weixin_33847182的博客 868
上一篇: 15.枚举类enum(还可和switch匹配使用)学到了
下一篇: 17.常用工具类,BigInteger和BigDecimal大整数与大浮点数(不限制位数)
Eastlin_1
博客等级 码龄6年 3109粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值