java知识点总结2.docx
精品名师归纳总结1. java.lang.Object类,是全部类的根父类!2. Object 类仅有一个空参的构造器public Object3. 关于方法: equalsObject objpublic boolean equalsObject obj return this = obj;/ =/ 1. 基本数据类型:依据基本数据类型的值判定是否相等。相等返回/注:两端数据类型可以不同,在不同的情形下,也可以返回true ,反之返回true 。false/ 2. 引用数据类型:比较引用类型变量的的址值是否相等。/equals:>只能处理引用类型变量在Object 类,发觉 equals仍旧比较的两个引用变量的的址值是否相等>像 String 包装类File 类 Date 类这些重写 Object 类的 equals方法,比较是两个对象的/" 实体内容 " 是否完全相同。>如我们自定义一个类,期望比较两个对象的属性值都相同的情形下返回true 的话,就需要重写 Object 类的equalsObject obj 方法 toString 方法可编辑资料 - - - 欢迎下载精品名师归纳总结当我们输出一个对象的引用时,会调用toString 方法。1.public String toString return getClass.getName + "" + Integer.toHexStringhashCode;当我们没有重写Object 类的 toString 方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置2.一般我们需要重写Object 类的 toString 方法,将此对象的各个属性值返回。3.像 String 类、 Date、File 类、包装类都重写了toString 方法。1. String 类:不行变的字符序列(如:String str = "atguigu" str += "javaEE" )1. 关注于 String 常用的方法!2. String 类与基本数据类型、包装类。与字符数组、字节数组。* 1. 字符串 与基本数据类型、包装类之间转换* 字符串 ->基本数据类型、包装类:调用相应的包装类的parseXxxString str;* 基本数据类型、包装类->字符串 :调用字符串的重载的valueOf 方法*可编辑资料 - - - 欢迎下载精品名师归纳总结* 2. 字符串与字节数组间的转换* 字符串 ->字节数组 :调用字符串的 getBytes* 字节数组>字符串:调用字符串的构造器* 3. 字符串与字符数组间的转换* 字符串 ->字符数组:调用字符串的toCharArray;* 字符数组 ->字符串 :调用字符串的构造器4.String 与 StringBuffer 的转换 String ->StringBuffer :使用 StringBuffer 的构造器: new StringBufferString str; StringBuffer->String: 使用 StringBuffer 的 toString 方法StringBuffer 类:可变的字符序列StringBuilder 类:可变的字符序列,jdk5.0 新加入的,效率更高,线程担心全。常用的方法:添加:append.删除 deleteintstartIndex,intendIndex修改:setCharAtint n ,char ch查询: charAtint index插入 :insertint index, String str反转 reverse长度: length注: String 类的不行变性:可编辑资料 - - - 欢迎下载精品名师归纳总结2. 时间、日期类:2.1 System 类currentTimeMillis :返回当前时间的long 型值。此 long 值是从 1970 年 1月 1 日 0 点 0 分 00 秒开头到当前的毫秒数。此方法常用来运算时间差。2.2 Date 类: java.util.Date1. Dated = new Date;/ 返回当前时间的 Date: Mon May 12 15:17:01 CST 2022 Date d1 = new Date15231512541241L;/ 返回形参处此 long 型值对应的日期/getTime :返回当前日期对应的long 型值。 toString2.3SimpleDateFormat:java.text.SimpleDateFormat格式化 :日期 ->文本 使用 SimpleDateFormat 的 format 方法解析:文本 ->日期 使用 SimpleDateFormat 的 parse方法/1. 格式化 1SimpleDateFormat sdf = new SimpleDateFormat;可编辑资料 - - - 欢迎下载精品名师归纳总结String date = sdf.formatnew Date; System.out.printlndate;/14-5-12下午 3:24/2. 格式化 2SimpleDateFormat sdf1 = new SimpleDateFormat"EEE, d MMM yyyy HH:mm:ss Z" date = sdf1.formatnew Date;System.out.printlndate;/星期一 , 12 五月 2022 15:29:16 +0800/3. 解析:Date date1 = sdf.parse"14-5-12下午 3:24" System.out.printlndate1;date1 = sdf1.parse" 星期一 , 12 五月 2022 15:29:16 +0800"/date1 = sdf1.parse"14-5-12下午 3:24" System.out.printlndate1;2.4 Calendar:日历类2.4.1 猎取实例: Calendar c = Calendar.getInstance;2.4.2 get/set/add/date getTime/setTime可编辑资料 - - - 欢迎下载精品名师归纳总结1. 对象的储备:数组(基本数据类型& 引用数据类型)集合(引用数据类型)>数组储备数据的弊端:长度一旦初始化以后,就不行变。真正给数组元素赋值的个数没有现成的方法可用。2. 集合框架Collection 接口 :方法: addObject obj,addAllCollection coll,size,clear,isEmpty; removeObjectobj,removeAllCollectioncoll,retainAllCollection coll,equalsObject obj,containsObject objcontainsAllCollection coll,hashCode iterator,toArray;* |-List 接口:储备有序的,可以重复的元素.-相当于“动态”数组>新增的方法: 删除 removeint index修改 setint index,Object obj猎取 getint index插入 addint index,Object obj>添加进 List 集合中的元素(或对象)所在的类肯定要重写equals方法* |-ArrayList (主要的实现类)|-LinkedList (更适用于频繁的插入、删除操作)|-Vector (古老的实现类、线程安全的,但效率要低于ArrayList )* |-Set 接口:储备无序的,不行重复的元素。-相当于高中的“集合”概念>Set 使用的方法基本上都是Collection 接口下定义的。>添加进 Set 集合中的元素所在的类肯定要重写equals 和 hashCode。要求重写 equals 和 hashCode方法保持一样。可编辑资料 - - - 欢迎下载精品名师归纳总结>1.无序性:无序性! = 随机性。真正的无序性,指的是元素在底层储备的位置是无序的。>2.不行重复性: 当向 Set 中添加进相同的元素的时候,后面的这个不能添加进去。* |HashSet (主要的实现类)|-LinkedHashSet 是 HashSet 的子类,当我们遍历集合元素时,是依据添加进去的次序实现的。频繁的遍历,较少的添加、插入操作建议挑选此|TreeSet (可以依据添加进集合中的元素的指定属性进行排序)>要求 TreeSet 添加进的元素必需是同一个类的!>两种排序方式: 自然排序: 要求添加进TreeSet 中的元素所在的类 implements Comparable接口重写 compareToObject obj ,在此方法内指明依据元素的哪个属性进行排序向 TreeSet 中添加元素即可。如不实现此接口,会报运行时反常定制排序: 创建一个实现 Comparator 接口的实现类的对象。在实现类中重写Comparator 的 compareObject o1,Object o2 方法在此 compare 方法中指明依据元素所在类的哪个属性进行排序将此实现Comparator 接口的实现类的对象作为形参传递给TreeSet 的构造器中向 TreeSet 中添加元素即可。如不实现此接口,会报运行时反常> 要 求 重 写 的 compareTo 或 者 compare 方 法 与 equals 和hashCode方法保持一样。Map 接口:储备“键 -值”对的数据-相当于高中的“函数y = fx” x1,y1x2,y2>key 是不行重复的, 使用 Set存放。value 可以重复的, 使用 Collection 来存放的。一个 key-value对构成一个 entryMap.Entry , entry 使用 Set 来存放。>添加、修改 putObject key,Object value删除 removeObject key猎取 getObject key size/ keySet valuesentrySet可编辑资料 - - - 欢迎下载精品名师归纳总结* |-HashMap :主要的实现类,可以添加null 键, null 值|-LinkedHashMap :是 HashMap 的子类,可以依据添加进Map 的次序实现遍历|-TreeMap :需要依据key 所在类的指定属性进行排序。要求key 是同一个类的对象。对key 考虑使用自然排序或 定制排序|-Hashtable :是一个古老的实现类,线程安全的,不行以添加null 键, null值不建议使用。|- 子类: Properties :常用来处理属性文件Iterator 接口:用来遍历集合Collection 元素Collections 工具类:操作Collection 及 Map 的工具类,大部分为static 的方法。附: Properties 的使用Properties pros = new Properties;pros.loadnew FileInputStreamnew File"jdbc.properties" String user = pros.getProperty"user" System.out.printlnuser;String password = pros.getProperty"password" System.out.printlnpassword;可编辑资料 - - - 欢迎下载精品名师归纳总结1. 泛型在集合中的使用(把握)2. 自定义泛型类、泛型接口、泛型方法(懂得->使用)3. 泛型与继承的关系4. 通配符1. 在集合中不使用泛型public void test1List list = new ArrayList; list.add89;list.add87;list.add67;/1. 没有使用泛型,任何Object 及其子类的对象都可以添加进来可编辑资料 - - - 欢迎下载精品名师归纳总结list.addnew String"AA"forint i = 0;i < list.size;i+/2. 强转为 int 型时,可能报ClassCastException的反常int score = Integerlist.geti;System.out.printlnscore;2. 在集合中使用了泛型public void test2List<Integer> list = new ArrayList<Integer> list.add78;list.add87;/list.add"AA"/forint i = 0;i < list.size;i+/int score = list.geti;/System.out.printlnscore;/Iterator<Integer> it = list.iterator; whileit.hasNextSystem.out.printlnit.next;可编辑资料 - - - 欢迎下载精品名师归纳总结public void test3Map<String,Integer> map = new HashMap<> map.put"AA", 78;map.put"BB", 87;map.put"DD", 98;Set<Map.Entry<String,Integer>> set = map.entrySet; forMap.Entry<String,Integer> o : setSystem.out.printlno.getKey + "->" + o.getValue;3. 自定义泛型类:应用public class DAO<T> public void addT t/.public T getint index return null;public List<T> getForListint index return null;public void deleteint index可编辑资料 - - - 欢迎下载精品名师归纳总结public class CustomerDAO extends DAO<Customer>public class TestCustomerDAO public static void mainString args CustomerDAO c = new CustomerDAO; c.addnew Customer;c.get0;【留意点】1. 对象实例化时不指定泛型,默认为:Object。2. 泛型不同的引用不能相互赋值。3. 加入集合中的对象类型必需与指定的泛型类型一样。4. 静态方法中不能使用类的泛型。5. 假如泛型类是一个接口或抽象类,就不行创建泛型类的对象。6. 不能在 catch 中使用泛型7. 从泛型类派生子类,泛型类型需详细化可编辑资料 - - - 欢迎下载精品名师归纳总结4. 泛型与继承的关系A 类是 B 类的子类, G 是带泛型声明的类或接口。那么G<A>不是 G<B>的子类!5. 通配符 :.A 类是 B 类的子类, G 是带泛型声明的类或接口。就G<.> 是 G<A>、G<B>的父类!以 List<.>为例, 能读取其中的数据。 由于不管储备的是什么类型的元素,其肯定是 Object类的或其子类的。以 List<.>为例,不行以向其中写入数据。由于没有指明可以存放到其中的元素的类型! 唯独例外的是: null6*.List<? extends A> :可以将 List<A>的对象或 List<B>的对象赋给 List<. extends A>。其中 B是 A 的子类. super A: 可以将 List<A>的对象或 List<B>的对象赋给 List<. extends A> 。其中 B 是 A的父类可编辑资料 - - - 欢迎下载精品名师归纳总结1. 体系结构java.lang.Object|java.lang.Throwable|-java.lang.Error :错误, java 程序对此无能为力,不显式的处理|-java.lang.Exception: 反常。需要进行处理|-RuntimeException: 运行时反常可编辑资料 - - - 欢迎下载精品名师归纳总结|ArrayIndexOutOfBoundsException/NullPointerException/ArithmeticException/ClassCastException|- 非 RuntimeException: 编译时反常2. 由于 java 程序分为 javac.exe 和 java.exe 两个过程,在每个过程中,都有可能显现反常。故分为编译时反常、运行时反常2.1 对于运行时反常比较常见,可以不显式的来处理。2.2 对于编译时反常,必需要显式的处理编译时反常,不是说有反常才处理,而是存在反常的隐患,必需在编译前,提示程序,万一显现反常,如何处理!2. 如何处理反常?java 中的“抓抛模型”* 1." 抛":当我们执行代码时,一旦显现反常,就会在反常的代码处生成一个对应的反常类型的对象,并* 将此对象抛出。 自动抛出/手动抛出 * >一旦抛出此反常类的对象,那么程序就终止执行* >此反常类的对象抛给方法的调用者。* 2." 抓":抓住上一步抛出来的反常类的对象。如何抓?即为反常处理的方式* java 供应了两种方式用来处理一个反常类的对象。* 处理的方式一:* try* / 可能显现反常的代码* catchException1 e1* / 处理的方式 1* catchException2 e2可编辑资料 - - - 欢迎下载精品名师归纳总结* / 处理的方式 2* finally* / 肯定要执行的代码* 注: 1.try 内声明的变量,类似于局部变量,出了try 语句,就不能被调用* 2.finally 是可选的。* 3.catch 语句内部是对反常对象的处理:* >getMessage;printStackTrace;* 4.可以有多个 catch 语句, try 中抛出的反常类对象从上往下去匹配catch 中的反常类的类型,一旦满意* 就执行 catch 中的代码。执行完,就跳出其后的多条catch 语句* 5.假如反常处理了,那么其后的代码连续执行。* 6.如 catch 中多个反常类型是 "并列 " 关系,孰上孰下都可以。* 如 catch 中多个反常类型是" 包含 " 关系,须将子类放在父类的上面,进行处理。否就报错!* 7.finally 中存放的是肯定会被执行的代码,不管try 中、 catch 中是否仍有反常未被处理,以及是否有 return 语句。* 8.try-catch 是可以嵌套的。处理方式二:在方法的声明处,显式的使用throws +反常类型public void method1throws Exception1 e1,Exception2 e2/ 可能显现反常(特别是编译时反常,肯定要处理)public void method2 throws Exception1 e1,Exception2 e2 method1;可编辑资料 - - - 欢迎下载精品名师归纳总结public void method3 trymethod2;catchException1 e1 System.out.printlne1.getMessage;catchException2 e2 System.out.printlne2.getMessage;public static void mainString args对象 1.method3;/不会再显现上述的Exception1 和 Exception2 的反常!3. 如何手动的抛出一个反常?在方法的内部,可以使用throw +反常类对象,来手动的抛出一个反常!/ 比较两个圆的半径的大小。public int compareToObject obj throws Exception ifthis = objreturn 0;else ifobj instanceof Circle可编辑资料 - - - 欢迎下载精品名师归纳总结Circle c = Circleobj; ifthis.radius > c.radiusreturn 1;else ifthis.radius = c.radius return 0;elsereturn -1;else/return -2;/ 手动的抛出一个反常/throw new Exception"传入的类型有误! "/throw new String"传入的类型有误! " throw new MyException" 传入的类型有误! "4. 如何自定义一个反常类?>手动的抛出一个反常,除了抛出的是现成的反常类的对象之外,仍可以抛出一个自定义的反常类的对象!>如何自定义一个反常类了?/1. 自定义的反常类继承现有的反常类/2. 供应一个序列号,供应几个重载的构造器public class MyException extends Exceptionstatic final long serialVersionUID = -70348975766939L;可编辑资料 - - - 欢迎下载精品名师归纳总结public MyExceptionpublic MyExceptionString msg supermsg;5. “ 5 个关键字搞定反常处理! ”其中,要区分: t可编辑资料 - - - 欢迎下载