社区
Java SE
帖子详情
谁能帮我简单的讲讲概念“封装类”“装箱”“拆箱”“自动装箱”,他们到底有什么用?
liuyong13145
2010-05-09 02:48:26
谁能帮我简单的讲讲概念“封装类”“装箱”“拆箱”“自动装箱”,他们到底有什么用?能举一个简单的例子吗
ps:Why Java Sucks and C# Rocks?这句话什么意思呢
...全文
187
4
打赏
收藏
谁能帮我简单的讲讲概念“封装类”“装箱”“拆箱”“自动装箱”,他们到底有什么用?
谁能帮我简单的讲讲概念“封装类”“装箱”“拆箱”“自动装箱”,他们到底有什么用?能举一个简单的例子吗 ps:Why Java Sucks and C# Rocks?这句话什么意思呢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xy_2005
2010-05-09
打赏
举报
回复
[Quote=引用 3 楼 mf0606 的回复:]
在Java中,所有您要处理的东西「几乎」都是对象(Object),例如您之前所使用的Scanner是对象,字符串(String)是对象,您之后还会看到更多的对象。
然而有些是异常,基本(Primitive)数据类型不是对象,也就是您使用int、double、boolean等宣告的变量,以及您在程序中直接写下的字面常量。
使用Java有一段时间的人都知道,有些时候您需要将基本类型转换为对……
[/Quote]
说得很清楚啦
mf0606
2010-05-09
打赏
举报
回复
在Java中,所有您要处理的东西「几乎」都是对象(Object),例如您之前所使用的Scanner是对象,字符串(String)是对象,您之后还会看到更多的对象。
然而有些是异常,基本(Primitive)数据类型不是对象,也就是您使用int、double、boolean等宣告的变量,以及您在程序中直接写下的字面常量。
使用Java有一段时间的人都知道,有些时候您需要将基本类型转换为对象,例如使用Map时,要使用put()方法时需要的是对象而不是基本类型。
您要使用包裹类型(Wrapper Types)才能将基本数据类型包装为对象,例如在 J2SE 1.4.2 之前,您要如下才能将int包装为一个Integer对象:
Integer integer = new Integer(10);
在 J2SE 5.0 之后您可以这么写:
Integer integer = 10;
事实上编译器在背后自动根据您写下的描述,为您进行自动装箱(Autoboxing)动作,同样的动作可以适用于 boolean、byte、short、char、long、float、double等基本类型,分别会使用对应的包裹类型(Wrapper Types)Boolean、Byte、Short、Character、Integer、Long、Float或Double。
自动装箱运用的方法还可以如下:
int i = 10;
Integer integer = i;
您也可以使用更一般化的Number,例如:
Number number = 3.14f;
3.14f会先被自动装箱为Float,然后指定给number。
J2SE 5.0中可以自动装箱,也可以自动拆箱(Unboxing),例如下面这样写是可以的:
Integer fooInteger = 10;
int fooPrimitive = fooInteger;
在运算时,也可以自动装箱与拆箱,例如:
Integer i = 10;
System.out.println(i + 10);
System.out.println(i++);
上例中会显示20与10,编译器会自动帮您进行自动装箱与拆箱,即10会先被装箱,然后在i + 10时会先拆箱,进行加法运算;i++该行也是先拆箱再进行递增运算。再来看一个例子:
Boolean boo = true;
System.out.println(boo && false);
同样的,先将boo拆箱,再与false进行AND运算,结果会显示false。
qq120848369
2010-05-09
打赏
举报
回复
[Quote=引用 1 楼 keeya0416 的回复:]
面向对象语言一个最大的特点就是封装
但几个基本数据类型却没有这个特性
故 在 1.5 后提供了几个基本类型的封装类
装箱就是 比如 integer i = 100; 这个就自动装箱了
拆箱 int j = i + 10; // 借用上边声明的 i
[/Quote]
学习,嘿嘿。
keeya0416
2010-05-09
打赏
举报
回复
面向对象语言一个最大的特点就是封装
但几个基本数据类型却没有这个特性
故 在 1.5 后提供了几个基本类型的封装类
装箱就是 比如 integer i = 100; 这个就自动装箱了
拆箱 int j = i + 10; // 借用上边声明的 i
Java | 包装
类
面试题之一
引用
类
型和原始
类
型具有不同的特征和用法,它们包括:大小和速 度问题,这种
类
型以哪种
类
型的数据结构存储,当引用
类
型和原始
类
型用作某个
类
的实例数据时所指定的缺省值。`Integer` 需要使用 `new` 关键字来创建新的对象,然后可以通过 `Integer` 对象进行各种操作,包括
类
型转换。`Integer` 的默认值是 `null`,这表明 `Integer` 对象在没有被创建之前是不能使用的。对于
简单
的数学运算和一些不需要复杂属性和方法的场景,`int` 可能是更合适的选择。
Java笔记(基础知识)
Java 基础知识
《互联网大厂 Java 求职者面试:从核心知识到框架应用》
王铁牛:“在多线程环境下,可能会出现并发修改异常(ConcurrentModificationException),因为 ArrayList 不是线程安全的,在迭代过程中如果有其他线程修改了 ArrayList 的结构,就会抛出这个异常。王铁牛:“ArrayList 的扩容机制是当数组满了之后,会创建一个新的数组,长度是原来的 1.5 倍,然后将原来数组中的元素复制到新数组中。王铁牛:“线程池可以提高线程的复用性,减少创建和销毁线程的开销,同时还可以控制线程的数量,避免过多的线程导致系统资源耗尽。
Java基础学习
int和Integer有什么区别? 考察点:数据
类
型 参考回答: Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据
类
型,但是为了能够将这些基本数据
类
型当成对象操作,Java为每一个基本数据
类
型都引入了对应的包装
类
型(wrapper class),int的包装
类
就是Integer,从Java 5开始引入了
自动
装箱
/
拆箱
机制,使得二者可以相互转换。 Java 为每...
面试java基础
Java运行机制 Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为Java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。 ①编写一个 Hello world.Java的文件。 ②使用“Javac Hello world.Java”命令开启Java编译器并进行编译。编译结束后,会自动生成一个Hello World. class的字节码文件 ③使用“ Java Hello world”命令启动Java虚拟机运行程序,Jav
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章