首页 > 编程 > Java > 正文

Java易忘,易错,重难点整合

2019-11-06 08:03:55
字体:
来源:转载
供稿:网友

前言:

很多人会有这样一个体会,java学了好几遍了,可有时敲代码时对某些知识点还是不能记忆犹新,模棱两可。还是得翻书,百度查资料。为了摆脱这个毛病,写下这篇博文,把易忘的,易错的知识点,以及重点难点,写下来,便于参考与记忆。次数多了,就会记在脑海里了。

一、equals()方法与“==”

这个方法真的是困扰了我好几次了。一直没明白它到底比较的是什么。今天把它揪出来问问吧。 首先来说下“==”,它是用来比较两个对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。当然了,这是对两个引用类型来说的。如果是8大基础类型,自然就是两个值想不想等了。那equals呢?equals()是object类的一个方法。如果子类不重写equals()方法,那么它和“==”的比较是一样的。也是比较两个引用变量是否指向同一个对象。下面举几个例子看看。

String s1 = new String( "123"); String s2 = new String( "123"); String s3 ="456"; String s4 ="456"; StringBuffer s5 = new StringBuffer("a"); StringBuffer s6 = new StringBuffer("a"); System.out.PRintln(s1==s2); //false System.out.println(s3==s4); //true System.out.println(s5==s6); //false System.out.println(s1.equals(s2)); //true System.out.println(s3.equals(s4)); //true System.out.println(s5.equals(s6)); //false

看了上面的例子是不是有想法:s1.equals(s2)是true, s5.equals(s6)却又是false,这是为何?因为String类重写了equals()方法。比较的是两个字符串的值是不是相等。而StringBuffer没有重写。所以结果如此。

//String 类重写的equals(); public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String) anObject; int n = count; if (n == anotherString.count) { int i = 0; while (n-- != 0) { if (charAt(i) != anotherString.charAt(i)) return false; i++; } return true; } } return false; }

这一比较,心理总算踏实了,再也不会犯错了。

二、异常Exception

可能,我又记不起哪些是运行时异常了。整理下吧! 异常Exception(广义、体系) Throwable 可抛的,是所有异常和错误的父类 Error 严重的问题,不需要程序去处理 Exception(狭义) 可能需要程序去处理 RuntimeException 运行时异常,它和它的子类都是非受检异常 1.非受检异常: 可以不对其进行异常处理,通过严谨的编码逻辑就可以避免的异常如:ArrayIndexOutofBoundsException、NullPointerException、ClassCastException、ArithmeticException… 2.受检异常:是Exception的子类但不是RuntimeException的子类,都是受检异常,受检异常必须要进行异常处理。如:FileNotFoundException、IOException、MalformedURLException、ClassNotFoundException… 3.如何处理异常:try、catch、finally try 尝试运行可能出现异常的代码 catch 捕捉某一类型的异常对其进行处理 try{ 代码1 }catch(异常类型 引用名){ 代码2 }finally{ 代码3 } 代码1是要尝试运行的可能出现异常的代码 代码2是捕捉到某种类型(小括号里的类型)异常要执行的处理逻辑 代码3是无论任何情况都会被最终执行的代码,用于收尾工作

今天暂时写这两点。以后遇到了,再添加!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表