06包与Java常用类_旺旺老师JavaSE(测试版后期会更新)(2)
旺旺老师的教学电子书,《旺旺老师JavaSE教程》。理想目标是: 让新手当技术类书籍来学习它,让老手当消遣类散文来阅读它。想让所有人,在快乐中学习,在快乐中成长,在快乐中工作。
主题:旺旺老师软件工程师实训教程--JAVASE 第六章:包与JAVA常用类假如有两变量: int a = 10; Integer b = new Integer(10);他们的内存表示如下图所示:
大家看到,基本数据类型变量只在栈中分配一块内存,而包装类在栈和堆中各占一块。
JAVA语言是面向对象的语言,但它不是所有的设计思想都符合面向对象的,这里大家要知道java不符合面向对象的两个地方:一个是JAVA保留了8个基本数据类型,他们不是对象,更没有属性和方法;另一个就是JAVA中存在着main方法。
包装类可以完成基本数据类型所有的功能,如数数据存储,并且他们是类,拥有属性和方法,也就是有自己的新功能,那有些同学就会想,既然有更强大的包装类,SUN为什么还要保留那八个不是对象的基本数据类型呢?这设计到效率与需求的问题。
上课经常给学生讲这个例子,比如你家有爷爷奶奶父母你五口人,现在需要每人配备一部手机。市面上的手机有两种:便宜的只能通话的手机,昂贵的功能齐全的智能手机。一般的话我们会根据需求来购买,爷爷奶奶没什么要求买个普通的就行,您要上网要拍照要视频要显摆那就买个智能手机吧;其实如果您家太有钱的话给每人一部智能手机也没问题。
JAVA中也是一样,上面我们知道,包装类分配两块内存空间,存放具体数值的数据在堆中,而堆内存的分配比较占用系统资源,而且使用完毕后需要垃圾回收车回收,而我们平时在程序中要大量使用如数字这些变量,他们只做简单的存储,完全没必要使用包装类,那这样不如保留基本数据类型,它在完成功能的同时又不会占用过多的资源, SUN也是基于这样的考虑保留了JAVA中的基本数据类型。
6.2.2自动拆箱与装箱
我们把数据由基本数据类型转换为对应包装类叫做装箱,把数据由包装类转化为基本数据类型叫拆箱。在JDK1.5前在java中实现装箱与拆箱的代码如下:
旺旺老师的教学电子书,《旺旺老师JavaSE教程》。理想目标是: 让新手当技术类书籍来学习它,让老手当消遣类散文来阅读它。想让所有人,在快乐中学习,在快乐中成长,在快乐中工作。
主题:旺旺老师软件工程师实训教程--JAVASE第六章:包与 JAVA 常用类package com.wangwang; public class Test { public static void main(String[] args) { int a = 10; Integer b; int c; //装箱,基本数据类型-->包装类 b = Integer.valueOf(a); //拆箱,包装类-->基本数据类型 c = b.intValue(); } }上面的代码比较繁琐,在 JDK1.5 中提出的一个新功能就是自动装箱和拆箱,代码如下 所示:package com.wangwang; public class Test { public static void main(String[] args) { int a = 10; //自动装箱,基本数据类型-->包装类 Integer b = a; //自动拆箱,包装类-->基本数据类型 int c = b; } }大家看,这样是不是很简单啊! 这里旺旺老师再给大家说下语言的共同性,所谓“天下语言本一家,你抄我来我抄 它”,比如 SUN 公司发明 JAVA 后,微软把 JAVA 除去跨平台的优点抄抄改改后发明了 C#, 当然又加入了自己的一些新东西,比如自动拆箱装箱泛型等。完了在 JAVA 升级时又把 C#中页面 8 / 18 旺旺老师,版权所有
旺旺老师的教学电子书,《旺旺老师JavaSE教程》。理想目标是: 让新手当技术类书籍来学习它,让老手当消遣类散文来阅读它。想让所有人,在快乐中学习,在快乐中成长,在快乐中工作。
主题:旺旺老师软件工程师实训教程--JAVASE第六章:包与 JAVA 常用类这些功能拿过来所用,所以我们在 JDK1.5 时看到了 JAVA 也支持自动拆箱与装箱了,这也算 SUN 抄的微软的东西吧,哈哈,是不是很有意思的事情。6.2.3 包 装 类 的 常 用 方 法首先看 Character 类的常用方法,如下图: 基本数据类型 isDigit() isLetter() isLowerCase() isUpperCase() 包装类 确定字符是否为 0 至 9 之间的数字 确定字符是否为字母 确定字符是否为小写形式 确定字符是否为大写形式注意这些方法都是通过类名点方法名访问的,我们称为静态方法,具体知识后面讲到面向对 象时再说明。看下例:package com.wangwang; public class TestCharacter { public static void main(String[] args) { int count; char[] values = {'*', '7', 'p', ' ', 'P'}; for (count = 0; count < values.length; count++) { if (Character.isDigit(values[count])) { System.out.println(values[count] + "是一个数字"); } if (Character.isLetter(values[count])) { System.out.println(values[count] + "是一个字母"); } if (Character.isUpperCase(values[count])) { System.out.println(values[count] + "是大写形式"); } } } }下面讲解怎么把一个字符串类型变为数字类型,这个在项目代码中使用的非常多,因为 在界面我们虽然输入的是数字,但在程序代码中首先得到的是字符串如:“123”,这样我 们需要把字符串类型转化为数字类型:这您可以使用数字类型对应的 valueOf()方法,也可以 使用 paseXXX()方法,同时 valueOf ()与 paseXXX ()也是静态方法,通过类名点方法名调用:页面 9 / 18 旺旺老师,版权所有
旺旺老师的教学电子书,《旺旺老师JavaSE教程》。理想目标是: 让新手当技术类书籍来学习它,让老手当消遣类散文来阅读它。想让所有人,在快乐中学习,在快乐中成长,在快乐中工作。
主题:旺旺老师软件工程师实训教程--JAVASE第六章:包与 JAVA 常用类package com.wangwang; public class TestValueOf { public static void main(String[] args) { String number = "12"; System.out.println("没转换前" + (number + 1)); Byte byNum = Byte.valueOf(number); Short shNum = Short.valueOf(number); Integer num = Integer.valueOf(number); Long lgNum = Long.valueOf(number); System.out.println("转换后"); System.out.println(byNum + 1); System.out.println(shNum + 1); System.out.println(num + 1); System.out.println(lgNum + 1); System.out.println("使用paseXXX转换:"); System.out.println(Integer.parseInt(number) + 1); System.out.println(Float.parseFloat(number) + 1); } }6.3 STRIN G 类这个类前几章我们也有接触,今天学习 String 类给我们提供的一些方法。?equals(String a):比较两个字符串的值是否相等。这里我们主要讲解 equals()与==的区别。 我们已经知道 String 是类,所以它是引用数据类型,也就是说创建 String 类的对象会 在内存中分配两块内存空间。比如如下代码:public static void main(String[] args) { String a = new String("wangwang"); String b = new String("wangwang"); System.out.println("(a == b) = " + (a == b)); System.out.println("(a.equals(b)) = " + a.equals(b)); }页面 10 / 18旺旺老师,版权所有
旺旺老师的教学电子书,《旺旺老师JavaSE教程》。理想目标是: 让新手当技术类书籍来学习它,让老手当消遣类散文来阅读它。想让所有人,在快乐中学习,在快乐中成长,在快乐中工作 …… 此处隐藏:4142字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




