- 1、本文档共64页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2讲Java语言的类型系统
Lecture Notes on
Object-Oriented Programming Design
/~lwj/object-oriented/
Dr. LI Wenjun
lnslwj@/~lwj/
Department of Computer Science
SUN YAT-SEN UNIVERSITY, GZ 510275;第三讲 Java语言的类型系统;;类型的作用;强类型 vs 弱类型;强类型带来的好处;数据:在程序中表达实体的属性。常量+变量=数据。
常量:在程序执行过程中取值不能改变的数据。
变量:在程序执行过程中取值可改变的数据。;如何确定数据的类型;变量的4个要素;Java语言提供了8种基本数据类型又称原始(primitive)数据类型。 Integral char、byte、short、int、long Numeric Floating float、double Logical boolean
Java语言的类型系统(Type System) 基本类型 数组(array)类型 引用类型 class 用户自定义类型(UDT) interface;布尔类型;表示方法只需占用1位。Java语言并未规定编译器的实现方式。
取值范围{true, false}
可用操作可用:赋值运算、关系运算(仅==和!=)、逻辑运算、位运算(位非除外)、条件运算、...不可用:算术运算、位非运算。;字符类型;;整数类型;;浮点类型;表示方法1985年通过的IEEE 754标准:阶码采用增码、尾数采用原码;数符位于最左位;尾数规格化,从而可多用1位精度。 32位(单精度)浮点数:阶码8位、尾数24位。 64位(双精度)浮点数:阶码11位、尾数53位。
取值范围 类型 长度 取值范围 float 4字节(32位) 约-3.4?1038 ? +3.4?1038 double 8字节(64位) 约-1.8?10308 ? +1.8?10308
可用操作可用:赋值运算、算术运算、关系运算、位运算、条件运算、...不可用:逻辑运算。;与数学意义下实数的区别(1) 程序中的浮点数是数学意义下实数的一个子集;(2) 程序中的浮点数是离散的而数学意义下的实数是连续的。
精度与溢出JRE不执行运行期间的溢出检查。没有C++语言的long double类型(10字节80位表示格式)。JDK预定义的类:java.math.BigDecimal。;字符串类型;变量的初始化;基本数据类型的包装类(wrapper);所谓常量只是指在程序运行过程其值保持不变,
但并不意味着在应用环境中或整个软件生存期会一成不变!;编译器可保证符号常量只能初始化,而不能对其赋值。
适当使用符号常量可提高程序的可扩充性。;常量只能进行一次赋值不同于C++语言:既可使用初始化表达式,也可使用赋值。通常在声明的同时进行初始化: final double PI = 3.14; // 圆周率 final int MAX = 100; // 学生人数的上限
禁止对已有初始值的符号常量再次进行赋值!;3.4 运算符与表达式;表达式的作用;赋值运算;复合与简化写法除方便程序员外,还可生成效率更高的代码!x += expr、x -= expr、x *= expr、x /= expr、x %= exprx = expr、x = expr、x = exprx = expr、x |= expr、x ^= exprx++、++x、x--、--x
x++与++x副作用相同,但求值结果不同。;算术运算;重载(overloading)运算符运行符“/”的含义由其参数的类型确定。
Java语言不允许程序员重载现有的运算符C++语言则允许程序员重载现有的运算符。;关系运算;;逻辑运算;短路(short-circuit)求值只有两个逻辑运算会短路求值:“”和“||”。无论单纯逻辑表达式求值还是控制分支或循环,均以短路形式求值。
为什么要短路求值?优化了时间效率仅仅是一方面原因。对语言使用者(程序员编程)或实现者(设计编译器)的影响! if ((count != 0) (total / count 10)) ... if ((obj != null) obj.found()) ...;位运算;位运算的应用较少应用场合才需要。通常是面向设备级的底层应用,如机顶盒或其他嵌入式应用。
位运算的用法每一个bit对应一种二值的开关状态。使用易记忆的枚举符号常量帮助程序员记忆每一位的含义。;移位运算;右操作数决定移位
文档评论(0)