讲义马震第05章常用类_第1页
讲义马震第05章常用类_第2页
讲义马震第05章常用类_第3页
讲义马震第05章常用类_第4页
讲义马震第05章常用类_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、常用类1 Object 类1.1 Object 类概述类层次结构的根类所有类都直接或者间接的继承自该类1.2 构造方法public Object()回想面向对象中为什么说:子类的构造方法默认的是父类的无参构造方法讲解每个方法的时候,查看源码。1.3 public int hashCode()A:返回该对象的码值。默认情况下,该方根据对象的地址来计算。B:不同对象的,hashCode()一般来说相同。但是,同一个对象的 hashCode()值肯定相同。C:不是对象的实际地址值,可以理解为逻辑地址值。举例:物体和编号。1.4 public final Class getClass()A:返回此 O

2、bject 的运行时类。B:可以通过 Class 类中的一个方法,获取对象的真实类的全名称。public String getName()1.5 public String toString()A:返回该对象的字符串表示。底层源码。public static String valueOf(Object obj) return (obj = null) ? null : obj.toString();B:它的值等于:getClass().getName() + + Integer.toHexString(hashCode()C:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。a:手动

3、重写b:自动生成1.6 public boolean equals(Object obj)A:指示其他某个对象是否与此对象“相等”。B:默认情况下比较的是对象的是否相同。C:由于比较对象的a:手动重写b:自动生成没有意义,一般建议重写该方法。D:=和 equals()的区别。(面试题)重写 equals 和 hashCode 方法equals():this = obj直接 return true obj = null直接 return false1.2.3.4.) 直接 return false!(obj instanceof开始比较 name 和 age1.7 protected Objec

4、t clone()注意:由于是 protected 修饰,与 Object 在不同包下只有子类在需重写 clone 方法内部才能,所以必创建并返回此对象的一个副本,这种克隆机制十分高效,而且二者之间完全自定义类实现克隆步骤:。A:自定义类实现 Cloneable 接口,这是一个标记性接口,实现这个接口的类的对象可以实现自我克隆。只有实现了 Cloneable 接口的类才能被克隆B:自定义类中重写 Object 类的 clone()方法。C:重写 clone()方法时通过 super.clone()调用 Object 类的clone()方法来得到该对象的副本,并返回该副本。注意:克隆和两个指向同

5、一个对象的区别?案例演示2 Scanner2.1 Scanner 类概述JDK5 以后用于获取用户的键盘输入2.2 构造方法public Scanner(InputStream source)2.3 基本格式是否还有下一个输入项,其中可以是 Int,Double 等。如hasNext果需要()是否包含下一个字符串,则可以省略获取下一个输入项。的含义和上个方法中的相同next()默认情况下,Scanner 使用空格,回车等作为分隔符案例:2.4 常用方法public int nextInt()public String nextLine()2.5 讲一个/r/n 问题2.5.1 问题:先获取一个

6、 int,再获取一个 String 才会出问题2.5.2 解决方案:1. 使用新的 Scanner 对象接收字符串2. 全部用 nextLine 接收,接收到之后再转换成 int3 String(最常见)3.1 String 类概述字符串是由多个字符组成的一串数据(字符序列)字符串可以看成是字符数组3.2 构造方法public String()public String(byte bytes)public String(byte bytes,int offset,int length) public String(char value)public String(char value,int

7、offset,int count)public String(String original)API:所有字符串字面值(如 abc )都作为此类的实例实现。注意:String s = “helloworld”;s 也是一个对象。3.2.1 字符串内存图解(重要)String s = “hello”;1.字符串直接赋值的方式是先到字符串常量建并返回。去找,如果有就直接返回,没有就创2.字符串一旦被赋值就被改变。3.3 面试题 1(字符串创建问题)请指出:String s1 = new String(“hello”);和 String s2 = “hello”;的区别new 出来的就在堆内存,字符

8、串就在方法区的字符串常量池前者创建了 2 个对象,后者 1 个。3.4 面试题 2:字符串拼接问题字符串比较之看程序写结果:备注 CC:String s1 = new String(hello); String s2 = new String(hello); System.out.println(s1=s2);System.out.println(s1.equals(s2); String s3 = new String(hello); String s4 = hello;System.out.println(s3=s4);System.out.println(s3.equals(s4);St

9、ring s5 = hello;String s6 = hello;System.out.println(s5=s6);System.out.println(s5.equals(s6);字符串拼接之看程序写结果:备注 DD:String s1 = hello; String s2 = world; String s3 = helloworld;System.out.println(s3=s1+s2);/字符串类型相加实际是新开辟空间:/s1+s2 编译后:new StringBuilder(String.valueOf(s1).append(s2).toString() System.out.

10、println(s3.equals(s1+s2);还可以通过 Xjad 查看 class 文件。通过反编译,可以看出s3 = “hello”+”world” 已经被编译成: s3 = “helloworld”3.5 String 类的功能boolean equals(Object obj)boolean equalsIgnoreCase(String str) boolean contains(String str)boolean startsWith(String str) boolean endsWith(String str)boolean isEmpty()3.5.1 课堂练习:模拟登

11、录,给三次机会,并提示还有几次。GuessGame:3.6 String 类的获取功能(自学+讲授)int length()char charAt(int index) int indexOf(int ch)/返回指定字符在此字符串中第一次出现处的索引。参数类型是int 而不是char 的是:int 可以接受int 和char,而char 只能接受char或 65535 以内的 int 值,int 的范围更大(不需要掌握) int indexOf(String str)int indexOf(int ch,int fromIndex)int indexOf(String str,int fro

12、mIndex) String substring(int start)String substring(int start,int end)3.6.1 课堂练:遍历获取字符串中的每一个字符3.6.2 课堂练习 2:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)但是,实际上不需要转成 ASCII 码,因为 char 类型在进行关系运算的时候,自动会转为 int类型,其实就是比较的 ASCII 码。3.7 String 类的转换功能byte getBytes()char toCharArray()static String valueOf(char chs) s

13、tatic String valueOf(int i) String toLowerCase()String toUpperCase()String concat(String str)3.7.1 课堂练习:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)另外:3.8 String 类的其他功能替换功能String replace(char old,char new)String replace(String old,String new)去除字符串两空格String trim()按字典顺序比较两个字符串int compareTo(String str)int compa

14、reToIgnoreCase(String str)3.9 String 类练习3.9.1 把数组中的数据按照指定个格式拼接成一个字符串举例:int arr = 1,2,3;输出结果:1, 2, 33.9.2 字符串反转举例:键盘录入”abcdefg”输出结果:” gfedcba”方法一:交换字符数组法方法二:字符数组直接倒序遍历 赋给 新的字符串或字符数组3.9.3 举例:统计大串中小串出现的次数在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中 java 出现了 5 次3.10 Str

15、ing 规则Object 类规定如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。所以:4 StringBuffer 类概述及其构造方法StringBuffer 类概述我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象, 既耗时,又浪费空间。而 StringBuffer 就可以解决这个问题线程安全的可变字符序列StringBuffer 和 String 的区别?构造方法public StringBuffer()public StringBuffer(int capacity)

16、 public StringBuffer(String str)4.1 StringBuffer 类的成员方法4.1.1 添加功能public StringBuffer append(String str)public StringBuffer insert(int offset,String str)4.1.2 删除功能 public StringBuffer deleteCharAt(int index) public StringBuffer delete(int start,int end)删除所有数据sb.delete(0, sb.length();注:在 java 中(int st

17、art, int end)普遍是不4.1.3 替换功能public StringBuffer replace(int start,int end,String str)4.1.4 反转功能public StringBuffer reverse()4.1.5 截取功能public String substring(int start)public String substring(int start,int end)唯一的不同是:返回值类型4.2 String 和 StringBuffer 的相互转换4.2.1 练:把数组拼接成一个字符串之前的做法:改进后,使用 StringBuffer:不要演

18、示了,String 比 StringBuild 更快.4.2.2 练习 2:把字符串反转(简洁)注:任何类型调用 toString()方法都可以转换成字符串4.2.3 练习 3:一个字符串是否是对称字符串例如abc不是对称字符串,aba、abba、aaa、mnanm是对称字符串方法一:方法二:使用 StringBuffer 的 reverse 方法注意:StringBuffer 没有重写 equals()方法,所以不要直接使用 StringBuffer 的 equals()x不加 toString()方法不行5 数组高级(排序和查找)5.1 排序5.1.1 冒泡排序相邻元素两两比较,大的往后放

19、,第一次完毕,最大值出现在了最大索引处因为共循环比较 arr.length-1 次,由此推导出:5.1.2 练习:对字符串排序String str = “vavdfsdnfnava”;进行冒泡排序的思路就是:第一层循环比较 length-1 次,第二层就考虑每次循环范围就行。5.1.3 选择排序从 0 索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处因为共循环比较 arr.length-1 次,由此推导出:选择排序的思想就是:第一层循环是排的次数 arr.length-1 次,第二层循环是:从第 n 个开始,和后面所有的进行比较,最小的放在第 n 个位置。6 Ar

20、rays 类概述及其常用方法6.1 Arrays 类概述数组进行操作的工具类。提供了排序,查找等功能。6.2 成员方法public static String toString(int a)public static void sort(int a)public static int binarySearch(int a,int key)6.3 Arrays 类常用方法源码详细解释(binarySearch 不讲)l public static String toString(int a)源码l public static int binarySearch(int a,int key)源码7

21、基本类型包装类概述7.1由将 100 转成二进制、八进制、十六进制引入包装类将基本数据类型封装成对象的好处在于可以在对象中定义的功能方法操作该数据。常用的操作之一:用于基本数据类型与字符串之间的转换。基本类型和包装类的对应Byte,Short,Integer,Long,Float,Double,Character,Boolean7.2 Integer 类概述Integer 类在对象中包装了一个基本类型该类提供了多个方法,能在 int 类型和int 的值String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法7.3 构造方法public Integer(int v

22、alue)public Integer(String s)7.4 Integer 类成员方法7.4.1 int 类型和 String 类型的相互转换int StringString intpublic int intValue()public static int parseInt(String s) public static String toString(int i) public static Integer valueOf(int i)public static Integer valueOf(String s)7.4.2 常用的基本进制转换public static String

23、toBinaryString(int i)public static String toOctalString(int i) public static String toHexString(int i)十进制到其他进制public static String toString(int i,int radix)其他进制到十进制public static int parseInt(String s,int radix)7.5自动装箱、自动拆箱JDK1.5 以后,简化了定义方式。Integer x = new Integer(4);可以直接写成Integer x = 4;/自动装箱。x= x +

24、5;/自动拆箱,自动装箱。通过 intValue 方法。需要注意:在使用时,Integerx = null;上面的代码就会出现 NullPointerException。7.6 Integer 的面试题Integer i = 1; i += 1;做了哪些事情缓冲池(看程序写结果)通过查看源码知道为什么缓冲池范围在-128127,超过范围就会 new 对象8 正则表达式概述及基本使用由号规则引入主题举例:校验号码.1:要求必须是 5-15 位2:0 不能开头3:全数字正则表达式:是指一个字符串。其实就是一种规则。有或者匹配一系列符合某个句特殊的应用。则的字符串的单个改进:8.1 正则表达式的组成

25、规则规则字符在 java.util.regex Pattern 类中8.1.1 常见组成规则字符 字符类预定义字符类 边界匹配器b数量词功能8.1.2public boolean matches(String regex)8.1.3练习:匹配匹配匹配匹配匹配匹配匹配匹配avz avez ae23z afe2fz 的正则表达式flower flowers 的正则表达式1a2b33d4w5 的正则表达式12.321233.64323445.98 的正则表达式abc bca aab bbc cba 的正则表达式abe aabcaaabc aaaaef aaaaef 的正则表达式1.jpg2.jpga

26、.jpgasc.jpg 的正则表达式号码的正则表达式System.out.println(abassdfdfdfc.matches(aw+c$);System.out.println(1a2b3.matches(0-9a-z0-9a-z0-9);System.out.println(1a2b3.matches(dwdwd);System.out.println(aaaef.matches(a+w2);System.out.println(asd.matches(w+w+(.w+)1,2); System.out.println(a11d.jpg.matches(w+.jpg);System.o

27、ut.println(flower.matches(flowers?);System.out.println(10314234324.matches(1-90-910);System.out.println(12232.22.matches(1-9d*.d2);System.out.println(bbc.matches(abc3);String string = The is cattered its food cats all over the room;Pattern pattern = Ppile(bcatb); Matcher matcher = pattern.matcher(string); while(matcher.find()String group = matcher.group(); System.out.println(group);8.1.4 分割功能public String split(String regex)分割路径,特殊:8.1.5 替换功能public

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论