




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 1 3 Inspurgroup JAVA高级特性 2020 1 3 Inspurgroup 学习目标 理解static变量 方法和静态初始化程序块理解final类 变量 方法能正确使用instanceof操作符理解String和StringBuffer的异同能正确编写toString 方法理解 与equals 方法的异同掌握包装类 常用类的常用方法 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 与equals方法包装类和常用类 2020 1 3 Inspurgroup 成员变量 类变量和实例变量 类中定义的变量称为类的成员变量被static关键字修饰的成员变量称为类变量 或静态变量 前面没有static标识的成员变量称为实例变量 2020 1 3 Inspurgroup 类变量和实例变量的异同 类变量被同一个类的所有实例共享 不同的对象 只要所属类相同 类变量的值就相同 实例变量不能在对象之间共享 访问实例变量需要先获得对象实例 访问类变量只需要指定类名实例变量在对象创建时被初始化 在对象销毁时被销毁 类变量一旦创建就永驻内存 2020 1 3 Inspurgroup 变量的内存分配 staticintcount 1 ObjectAinta 10 methodA ObjectBinta 9 methodA ObjectCinta 100 methodA 2020 1 3 Inspurgroup 类变量的用途 1 publicclassCount 2 privateintserialNumber 3 privatestaticintcounter 0 4 publicCount 5 counter 6 serialNumber counter 7 2020 1 3 Inspurgroup 静态方法和非静态方法的比较 被static关键字修饰的方法称为静态方法 或类方法 访问非静态方法需要先获取对象实例 访问静态方法只需要指定类名非静态方法中可以使用类变量 实例变量 静态方法只能使用类变量静态方法中不能使用this关键字静态方法不能被覆盖 2020 1 3 Inspurgroup 静态方法一 静态方法不需要使用对象来访问 可以用 类名 方法名 如例子中的intc GeneralFunction addUp 9 10 2020 1 3 Inspurgroup 静态方法二 注意 static方法不能访问其它非static的变量另外 main方法是static的 2020 1 3 Inspurgroup 静态方法三 如果一个类的方法会被经常反复调用到 则建议把这个方法声明为static的 这样不用反复初始化实例对象 可以提高性能 例如 java lang math类的方法 static类方法无法进行动态联编 所以不方便扩展 2020 1 3 Inspurgroup 静态初始化程序 用static修饰的初始化程序块即是静态初始化块 静态初始化块会在类载入的时候执行一次 并且只执行一次 普通的初始化程序在每次创建对象时都会执行 2020 1 3 Inspurgroup 静态初始化程序 publicclassStaticInitDemo staticinti 5 静态初始化块static System out println Staticcodei i publicclassTest publicstaticvoidmain Stringargs System out println Maincode i StaticInitDemo i 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 与equals方法包装类和常用类 2020 1 3 Inspurgroup final关键字 final关键字可以被用来修饰类 方法或者变量 final修饰的类不能被继承final修饰的方法不能被覆盖的final修饰的变量是常量 2020 1 3 Inspurgroup final类与安全 试图继承被声明为final的类会导致编译错误 创建final类通常是出于安全性的考虑 例如java lang String就是一个final类 因为它保证 如果方法有字符串的引用 它肯定就是类String的字符串 而不是某个其它类的字符串 这样保证了String不被恶意窜改 保证了其在程序中的稳定性 2020 1 3 Inspurgroup final方法 一个方法如果是被声明成final的 则这个方法是不能被覆盖的 这是出于安全的考虑 final保证方法有唯一的实现 例如 Thread类的stop方法就被声明成final的 因为我们并不想让任何人覆写stop方法 final的方法不支持动态联编 所以运行的效率要高 但同时也失去了扩展性 2020 1 3 Inspurgroup final变量 如果final关键字修饰的变量是常量例如 publicfinalintMAX ARRAY SIZE 25 想改变final变量的值会导致一个编译错误 如果对一个实例的引用被标记为final 那么该引用不能指向任何其它对象 但可能改变对象的内容 因为只有引用本身是final的 2020 1 3 Inspurgroup final变量二 1 publicclassA 2 inti 10 3 4 publicclassB 5 publicvoidmethod 6 finalAtest newA a是final的7 test i 100 这样不会出错 改变a的内容是允许的 8 test newB 如果有这行代码会出错 9 10 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 与equals方法包装类和常用类 2020 1 3 Inspurgroup instanceof运算符 instanceof是一个运算符 它可以判断一个对象是否是某个类的 返回一个boolean值 使用方法是 对象ainstanceof类A 如果a是A的一个对象 则进行instanceof运算时会返回true 如果a是A类的子类的对象 则进行instanceof运算时会返回true 2020 1 3 Inspurgroup instanceof运算符 1 publicclassEmployee2 publicclassManagerextendsEmployee3 publicclassContractorextendsEmployee4 publicvoidmethod 5 Employeee newEmployee 6 Managerm newManager 7 Contractorc newContractor 8 booleanb1 einstanceofManager false9 booleanb2 einstanceofEmployee true10 booleanb3 minstanceofEmployee true11 booleanb4 minstanceofContractor false12 13 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 与equals方法包装类和常用类 2020 1 3 Inspurgroup String和StringBuffer java lang String类用来表示字符串 例如Stringa abc String对象的特点是一旦创建其内容就不会被改变 例子中共创建了两个String对象 一个是 Ilove 另外一个是 IloveJava 2020 1 3 Inspurgroup String和StringBuffer java lang StringBufferr类提供了可变字符串的方法 StingBuffer对象的内容是可变的 在例子中只创建了一个对象 内容为 Ilove 在后面附加了 java 后 并没有生成新的对象 而只是改变了sb对象的内容 2020 1 3 Inspurgroup String和StringBuffer 因为String的不变性 所以频繁的改变String的内容会生成大量的对象 造成一定的性能问题 method1和method2进行的操作是完全一样的 但性能差别很大 method2的方法比method1好很多 2020 1 3 Inspurgroup String和StringBuffer String的常用方法concat方法连接字符串lastIndexOf方法返回参数在字符串中最后出现的位置length方法返回字符串的长度replace方法替换字符trim方法返回去掉开头和结尾的空格后的字符串toLowerCase转化为小写toUpperCase转换为大写toCharArray转换成字符的数组 2020 1 3 Inspurgroup String和StringBuffer StringBuffer的常用方法append方法附加字符串lastIndexOf方法返回参数在字符串中最后出现的位置replace方法替换字符capacity方法返回当前的StringBuffer的长度insert方法插入字符串toString方法转换成字符串 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 与equals方法包装类和常用类 2020 1 3 Inspurgroup toString方法 toString方法被用来将一个对象转换成String表达式 返回一个字符串用来表示对象的信息 有一个对象nowDatenow newDate 当我们执行System out println now 时 等同于执行System out println now toString 如果一个类没有提供toString方法 则默认调用Object的toString方法 2020 1 3 Inspurgroup toString方法 JDK许多类覆写toString 以提供更有用的信息 例如 所有的包装类覆写toString 以提供它们所代表的值的字符串格式 我们可以为自己的类覆写toString方法 提供类相关的信息 2020 1 3 Inspurgroup toString方法 这段代码会抛出异常 这是覆写toString方法经常忽视的一个错误 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 运算符与equals方法包装类和常用类 2020 1 3 Inspurgroup 运算符与equals方法 运算符用来比较是否相等 equals方法也用来比较是否相等 对于基本类型变量只要其值相等则a b为true 方法用于比较两个对象是否相等 即判断两个引用的内存地址是否相等 对象间进行 运算的两者必须为同一个类产生的对象 或对象的类之间存在着父子类关系 否则编译错误 2020 1 3 Inspurgroup 运算符与equals方法 两个不同类产生的对象进行 运算时会报编译错误 2020 1 3 Inspurgroup 运算符与equals方法 java lang包中的Object类有publicbooleanequals Objectobj 方法 它比较两个对象是否相等 仅当被比较的两个引用指向同一对象时 对象的equals 方法返回true 在Object类中的equals方法和 的作用相等 equals可以被覆写 用于比较两个对象的内容是否相等 例如 String和Date都覆写了equals方法 只要两个类的内容相等 则返回true 2020 1 3 Inspurgroup 运算符与equals方法 另外 当两个对象 返回true时 equals返回一定为true 2020 1 3 Inspurgroup 目录 static关键字final关键字instanceof运算符String与StringBuffer类如何编写toString方法 运算符与equals方法包装类和常用类 2020 1 3 Inspurgroup 包装类 Java的基本数据类型为布尔型boolean 字符型char 整型byte short int long 浮点型float double Java是一种完全的面向对象的技术 在一些场景下需要对基本数据类型进行面向对象的操作 所以java对于基本数据类型提供了相应的包装类 分别为Boolean Character Byte Short Integer和Long 分别对应相应的基本类型 Java提供的各种包装类都在java lang包中 注意 包装类和String一样 具有不可变性 2020 1 3 Inspurgroup 包装类 包装类的构造函数 包装类都有两个构造函数 一个是由基本类型转换为包装类 例如Boolean booleanvalue Character charvalue Integer intvalue 等 另一个构造函数是由String对象转换为包装类 例如Boolean Stringvalue Character Stringvalue Integer Stringvalue 等等 对于Boolean Stringvalue 构造方法 当传入的为 true 不分大小写 时生成的包装类为true 其他的都为false 2020 1 3 Inspurgroup 包装类 在各个包装类中 总有形为 Value 的方法 这个方法可以由包装类转换为基本类型 利用这种方法 也可以实现不同数值型变量间的转换 例如 对于一个双精度型包装类 intValue 可以得到其对应的整型变量 而doubleValue 可以得到其对应的双精度型变量 例如 Integeri newInteger 100 intn i intValue 2020 1 3 Inspurgroup 包装类 所有的包装类都存在一个名为toString 的方法可以将其转换成对应的String类 而对于整型类和长整型类 还可以使用toBinaryString inti toHexString inti toOctalString inti 分别以二进制 十六进制和八进制的形式进行到String类的转换 每个包装类都有valueOf Strings 的方法 这个方法可以把String类型转化为包装类类型 例如 Integeri Integer valueOf 100 2020 1 3 Inspurgroup Math类 Math类提供了各种常用的数学操作 例如指数 对数 平方 三角函数等等 Math在java lang包中 常用方法 abs返回绝对值 ceil返回一个浮点数 这个浮点数等于比参数大的最小的整数 例如ceil 2 5 返回3 0floor返回一个浮点数 这个浮点数等于比参数小的最大的整
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粮油会计考试题库及答案
- 森林防火知识培训报告课件
- 八大员的质量员(设备安装专业)考试题及答案(完整版)
- 2025年中级厨师长专业烹饪技能考试试题集
- 2025年数据分析面试题融媒体集
- 2025年中级摄影测量员考试要点及备考指南
- 2025年信息技术职位面试高频问题解答与模拟题
- 2025年高级数字殡葬规划师专业能力评估题库及参考答案详解
- 2025年老年病管理试题及答案
- 2025年人工智能技术应用工程师职称考试模拟题
- 2025四川能投合江电力有限公司员工招聘11人笔试参考题库附答案解析
- 湖北省圆创高中名校联盟2026届高三第一次联合测评 英语试卷(含答案详解)
- 2025行测的考试题及答案
- 2025年《中华人民共和国工会法》工会法律知识竞赛题库(含答案解析)
- 中国汽车零配件出口分析及各国进口政策影响白皮书 2025
- 工伤劳动能力鉴定课件
- 2025甘肃招聘公路收费人员18人笔试备考题库附答案详解(培优b卷)
- 肿瘤科五年发展规划
- 文化传播公司创业计划书范本
- 无偿分享深圳租房合同范本
- 2025装修半包工合同样本
评论
0/150
提交评论