




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SPOTOJAVABOOTCAMPversion2 0 SCJP 第五章 基本数据类型与字符串 目录 Java基本数据类型各种整型数据类型的转换Java8种封装类自动装包 拆包 Autoboxing unboxing JDK1 4中 必须手动进行转换Java引用类型不可变的 immutable 字串 Java基本数据类型 数据类型 基本数据类型 引用数据类型 数值型 字符型 char 布尔型 boolean 整数类型 byte short int long 浮点类型 float double 类 class 接口 interface 数组 常量和所有原始数据类型的范围 Java基本数据类型 布尔类型boolean类型适于逻辑运算 一般用于程序流程控制boolean类型数据只允许取值true或false 不可以0或非0的整数替代true和false 用法举例 booleanb false if b dosomething Java基本数据类型 字符型char型数据用来表示通常意义上 字符 字符常量是用单引号括起来的单个字符charc A Java字符采用Unicode编码 每个字符占两个字节 因而可用十六进制编码形式表示 前缀为u表示Unicode charc1 u0061 aJava语言中还允许使用转义字符 来将其后的字符转变为其它的含义charc2 n 代表换行符 Java基本数据类型 classTemp publicstaticvoidmain String args charx 国 System out println x 该程序正确编译 运行后输出国 Java基本数据类型 特殊字符 Java基本数据类型 Java各整数类型有固定的表数范围和字段长度 而不受具体操作系统的影响 以保证Java程序的可移植性 Java基本数据类型 整数类型Java语言整型常量的三种表示形式 十进制整数 如12 314 0 八进制整数 要求以0开头 如012十六进制数 要求0 x或0X开头 如0 x12Java语言的整型常量默认为int型 如 inti 3 声明long型常量可以后加 l 或 L 如 longl 3L Java基本数据类型 浮点型Java浮点类型有固定的表数范围和字段长度 和整数类型一样 在java中 符点类型的范围与机器无关 Java基本数据类型 Java浮点类型常量有两种表示形式十进制数形式 必须含有小数点 例如 3 14314 0 314科学记数法形式 如3 14e23 14E2314E2Java浮点型常量默认为double型 如要声明一个常量为float型 则需在数字后面加f或F 如 doubled 3 14 floatf 3 14f Java基本数据类型 各种整型数据类型的转换 通常 我们需要在不同的数据类型之间进行转换 简单类型除了boolean类型以外 其他的数据类型可以自动转换成其他的数据类型 只要遵循如下图所示的原则 Java8种封装类 例如 int数据类型的封装类Integer classCmdArg publicstaticvoidmain String args intsum 0 for intcut 0 cut args length cut sum Integer parseInt args cut System out println 和为 sum javacCmdArg javajavaCmdArg1053和为 18Integer类中的parseInt 方法执行从字符串换成了相应的整型值 Java8种封装类 自动装包 拆包 Autoboxing unboxing Boxing 装箱 装包 JDK1 4中 必须手动进行转换 当开发人员使用集合对象时 集合对象不允许加入原生数据类型 例如 int long double 等 开发人员经常要处理原生类型 例如 int 与Wrap对象 例如 Integer 之间的转换 藉由JDK5 0的Autoboxing功能 以后将可以让编译器帮开发人员完成这样的转换工作 使用Autoboxing的时机 将primitivevalve置入Collection中时 可以使用Autoboxing 但是Autoboxing不适合用在科学运算方面或其它需要高效率运算的地方 Autoboxing并不是要让Integer替代int 对初学者而言 虽然容易使用但是却要避免观念上的混淆 Java引用类型 Java语言中除8种基本数据类型以外的数据类型称为引用类型引用类型数据以对象的形式存在引用类型变量的值是某个对象的句柄 而不是对象本身声明引用类型变量时 系统只为该变量分配引用空间 并未创建一个具体的对象 一个引用类型的例子 Student java 自定义的一个类 有四个属性 并具有各自的存取方法 有一个构造器 用于在创建对象时初始化四个属性TestStudent java 一个用于测试引用类型的程序 在这里定义了两个引用类型的变量s1 s2 Java引用类型 Java的内存管理方式 静态内存栈堆例子staticintPAI 3 14Students1 newStudent 栈内存 04f s1 堆内存 静态内存 Java引用类型 对象的构造和初始化 Students1 为引用类型变量分配引用空间newStudent Lisa Male 1 18 创建一个新的对象 并进行属性 实例变量 的默认初始化各种数据类型作为实例变量时的默认初始值参见下表 null s1 null null 0 name sex grade 0 age Java引用类型 对象的构造和初始化 执行构造方法 将传递进来的四个参数的值分别赋给四个属性newStudent Lisa Male 1 18 Lisa male 1 name sex grade 18 age null s1 Java引用类型 对象的构造和初始化 最后 对引用类型变量s1赋值 将新创建的Student对象的存储空间的首地址赋给s1 0 x1a4afb Lisa male 1 name sex grade 18 age s1 0 x1a4afb Java引用类型 传值 案例3 9 Java在参数传递时 只使用值传递当对象实例作为参数传递给方法时 这个参数的值是对象的引用 而不是对象本身 0 x1a4afb Lisa male 1 name sex grade 18 age s1 0 x1a4afb s2 0 x1a4afb s2 s1 不可变的 immutable 字串 一个字串对象一旦被配置 它的內容就是固定不可变的 immutable 例如下面这个声明 Stringstr bcterry 以上配置一个长度为8的字串对象 无法改变它的內容 別以为下面这个声明就是改变一个字串物件的內容 Stringstr just str justin 事实上 在这个程式片段中 会有兩个字串对象 一个是 just 长度为4 一个是 justin 長度为6 它们两个是不同的字串对象 并不是在 just 字串后加上 in 字串 而是让str指向至新的字串对象 如下所示 原來指向至此str just 重新指向后str justin 引用新的字串对象 不可变的 immutable 字串 在Java中 使用 將一个字串对象指定给一个名称 其意义为改变名称的引用对象 原来的字串对象若沒有其它对象来引用它 就会在适当的时机被Java的 垃圾回收 Garbagecollection 机制回收 在Java中 程式设计人员通常不用关心无用对象的资源释放问题 Java会检查对象是否不再被引用 如果沒有任何名称引用的对象将会被回收 如果在程式中使用下面的方式来申明 则实际上是指向同一个字串对象 Stringstr1 flyweight Stringstr2 flyweight System out println str1 str2 trueorfalse 不可变的 immutable 字串 以上程式的执行结果会显示true 在Java中 会维护一个StringPool 对于一些可以共享的字串对象 会先在StringPool中查找是否存在相同的String內容 字符相同 如果有就直接传回 而不是直接创造一个新的String对象 以減少内存的占用 不可变的 immutable 字串 再来看个例子 String的intern 方法 来看看它的API说明 不可变的 immutable 字串 以上这段话其实说明了Flyweight模式的运行方式 来用个实例来说明会更清楚 Stringstr1 fly Stringstr2 weight Stringstr3 flyweight Stringstr4 str4 str1 str2 fly weight System out println str3 str4 trueorfalse str4 str1 str2 intern System out println str3 str4 trueorfalse 不可变的 immutable 字串 在程式中第一次比较str3与str4对象是否为同一对象时 结果是false 而intern 方法会先检查StringPool中是否存在字符部份相同的字串对象 如果有的话就传回 由于程式中之前已经有 flyweight 字串对象 intern 在StringPool中发现了它 所以直接传回 这时再进行比较 str3与str4所指向的其实是同一对象 所以结果会是true 不可变的 immutable 字串 运算符在Java中被用来比较两个名称是否引用至同一对象 所以不可以用 来比较两个字串的內容是否相同 例如 Stringstr1 newString bcterry Stringstr2 newString bcterry System out println str1 str2 上面会显示false的结果 因为str1与str2是分別引用至不同的字串对象 如果要比较两个 字串 对象是否相同 要使用equals 方法 例如 Stringstr1 newString bcterry Stringstr2 newString bcterry System out println str1 equals str2 这样结果才会显示所想要的比较结果 true 思考 总结 和 equals 的区别 重写equals SCJP试题分析 QUESTION58Given publicclassReturnIt returnTypemethodA bytex doubley return long x y 2 WhatisthenarrowestvalidreturnTypeformethodAinline2 A intB byteC longD shortE floatF double SCJP试题分析 13 publicclassPass 14 publicstaticvoidmain String args 15 intx 5 16 Passp newPass 17 p doStuff x 18 System out print mainx x 19 20 21 voiddoStuff intx 22 System out print doStuffx x 23 24 Whatistheresult A Compilationfails B Anexceptionisthrownatruntime C doStuffx 6mainx 6D doStuffx 5mainx 5E doStuffx 5mainx 6F doStuffx 6mainx 5 SCJP试题分析 publicclassA publicstaticvoidmain String args insertcodehereSystem out println s Whichtwocodefragments insertedindependentlyatline3 generatetheoutput4247 choosetwo A Strings 123456789 s s 123 replace 1 3 24 89 B StringBuffers newStringBuffer 123456789 s delete 0 3 replace 1 3 24 delete 4 6 C StringBuffers newStringBuffer 123456789 s subString 3 6 delete 1 3 insert 1 24 D StringBuffers newStringBuffer 123456789 s subString 3 6 delete 1 2 insert 1 24 E StringBuffers newStringBuffer 123456789 s delete 0 3 replace 1 3 delete 2 5 insert 1 24 SCJP试题分析 packagespoto classTest publicStringname spoto Whatcandirectlyaccessandchangethevalueofthevariablename A anyclassB onlytheTestclassC anyclassintheTestpackageD anyclassthatextendsTest SCJP试题分析 publicclassTest publicstaticvoidmain String args for intx 1 x args length x System out print args x andthecommandlineinvocationjavaTestabcwhatistheresult A abB bcC abcD CompilationfailsE Anexceptionisthrownatruntime Given 11 publicclassYikes 12 13 publicstaticvoidgo Longn System out println Long 14
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 异形建筑幕墙测绘方案设计
- 活动策划公司团队宣传方案
- 建筑方案设计文本怎么写
- 东营广场舞活动方案策划
- 药品安全法培训小结课件
- 主题剧场建筑布置方案设计
- 二注建筑方案设计心得
- 美发设计开业活动策划方案
- 银川尾矿库施工方案
- 开发商自渠营销方案
- 2025年银行内部审计部门财务审计员竞聘考试指南
- 洗煤厂冬季三防知识培训课件
- 人教版2024九年级物理全一册新教材解读课件
- 2025西安医学院第一附属医院第二批招聘(42人)考试备考题库及答案解析
- 2025年广西中考数学真题卷含答案解析
- 移动通信技术发展历程
- 艺术类院校教学创新计划
- 监控证考试题库及答案
- 钢管护栏拆除方案(3篇)
- 静脉输液十二种并发症及防治措施
- 新生儿呼吸机应用常规
评论
0/150
提交评论