亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java重要知識點(繼承、多態、接口,異常,工具,測試)

2019-11-11 06:50:29
字體:
來源:轉載
供稿:網友

重載、多態、接口

多態調用的順序

當父類,和子類有Static時,先初始化Static,再初始化子類的Static,再初始化父類的其他成員變量->父類構造方法->子類其他成員變量->子類的構造方法。

重寫 hashcode equals compareto

Employee.java

import java.util.Date;import java.util.GregorianCalendar;import java.util.Objects;public class Employee implements Comparable<Employee> { PRivate String name; private double salary; private Date hireDay; public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireDay = calendar.getTime(); } public String getName() { return name; } public double getSalary() { return salary; } public Date getHireDate() { return hireDay; } public boolean equals(Object Otherobject) { if (this == Otherobject) return true; if (Otherobject == null) return false; // if(! Otherobject instanceof Employee) return false; if (getClass() != Otherobject.getClass()) return false; Employee other = (Employee) Otherobject; return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay); } public int hashCode() { return Objects.hash(name, salary); } public String toString() { return getClass().getName() + "name=" + name + ",salary=" + salary + ",hireDay=" + hireDay; } @Override public int compareTo(Employee other) { // if(getClass() != other.getClass()) throw new ClassCastException(); return Double.compare(salary, other.salary); }}

Manager.java

public class Manager extends Employee { private double bonus; public Manager(String n, double s, int year, int month, int day) { super(n, s, year, month, day); bonus = 0; } public void setBonus(double b) { bonus = b; } @Override public double getSalary() { double baseSalary = super.getSalary(); return bonus + baseSalary; } @Override public boolean equals(Object Otherobject) { if (!super.equals(Otherobject)) return false; Manager other = (Manager) Otherobject; return bonus == other.bonus; } @Override public int hashCode() { return super.hashCode() + 17 * new Double(bonus).hashCode(); } @Override public String toString() { return super.toString() + ",bonus=" + bonus; }}

異常

涉及return finally 以及異常拋出的問題

這里寫圖片描述 這里寫圖片描述

各個異常出現的情況

package exp;import java.awt.Font;import java.awt.FontFormatException;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.beans.Statement;import java.io.EOFException;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.nio.ByteBuffer;import java.sql.Connection;import java.sql.DriverManager;import java.util.Stack;public class AllExcept { public static void main(String[] args) throws Exception { // 01 空指針異常 java.lang.NullPointerException try { int[] s = null; int i = s.length; } catch (Exception e) { System.out.println("1、" + e.getClass().getName() + "異常"); } // 02數組越界 java.lang.ArrayIndexOutOfBoundsException異常 try { int[] s1 = new int[2]; s1[2] = 5; } catch (Exception e) { System.out.println("2、" + e.getClass().getName() + "異常"); } // 03 錯誤類型的對象存儲到一個對象數組時拋出的異常 java.lang.ArrayStoreException異常 try { Object x[] = new String[3]; x[0] = new Integer(0); } catch (Exception e) { System.out.println("3、" + e.getClass().getName() + "異常"); } // 04 除數為0異常 java.lang.ArithmeticException異常 try { int a = 0; int b = 10; b /= a; } catch (Exception e) { System.out.println("4、" + e.getClass().getName() + "異常"); } // 05 數據類型轉換異常 java.lang.NumberFormatException異常 try { String s2 = "19k"; int n = Integer.parseInt(s2); } catch (Exception e) { System.out.println("5、" + e.getClass().getName() + "異常"); } // 06 超過字符串添加長度異常 java.lang.StringIndexOutOfBoundsException異常 try { StringBuffer buffer = new StringBuffer(); buffer.charAt(5); } catch (Exception e) { System.out.println("6、" + e.getClass().getName() + "異常"); } // 07 數組大小為負值異常。 java.lang.NegativeArraySizeException異常 try { int i = -1; int[] s = new int[i]; } catch (Exception e) { System.out.println("7、" + e.getClass().getName() + "異常"); } // 08 正則表達式異常 java.util.regex.PatternSyntaxException異常 try { String a = "//";// 錯誤的正則表達式 String a1 = "//.";// 正確的正則表達式 String[] x5 = "abc.cde".split(a1); x5 = "abc.cde".split(a); } catch (Exception e) { System.out.println("8、" + e.getClass().getName() + "異常"); } // 09 空棧異常 java.util.EmptyStackException異常 try { Stack s = new Stack(); s.pop(); } catch (Exception e) { System.out.println("9、" + e.getClass().getName() + "異常"); } // 10 找不到類異常 java.lang.ClassNotFoundException異常 try { Object s = Class.forName("ClassName"); } catch (Exception e) { System.out.println("10、" + e.getClass().getName() + "異常"); } // 11非法參數異常 // 12 字體格式錯誤異常 try { Font f = new Font("楷體", Font.BOLD, 7); f.createFont(2, new File("1.txt")); } catch (FontFormatException e) { System.out.println("11、" + e.getClass().getName()); } catch (IllegalArgumentException e) { System.out.println("12、" + e.getClass().getName() + "異常"); } // 13不支持畫圖異常 try { Image img = Toolkit.getDefaultToolkit().getImage("Images/1.jpg"); Graphics g = img.getGraphics(); g.drawRect(-1, -1, -1, -1); } catch (Exception e) { System.out.println("13、" + e.getClass().getName() + "異常"); } // 14 BufferOverflowException try { int cap = 2; ByteBuffer bf = ByteBuffer.allocate(cap); for (int i = 0; i < cap; i++) { bf.put((byte) i); } bf.put((byte) 10); bf.getInt(9); } catch (Exception e) { System.out.println("14、" + e.getClass().getName() + "異常"); } // 15文件找不到異常 // 16.當發生某種 I/O 異常時,拋出IOException // 17.文件已結束異常EOFException try { File f = new File("E://1.txt"); byte[] buff = new byte[2]; FileInputStream file = new FileInputStream(f); int bytes = file.read(buff, 0, 2); System.out.println(new String(buff, 0, 0, bytes)); file.close(); } catch (FileNotFoundException e) { System.out.println("15、" + e.getClass().getName() + "異常"); } catch (EOFException e) { System.out.println("16、" + e.getClass().getName() + "異常"); } catch (IOException e) { System.out.println("17、" + e.getClass().getName() + "異常"); } // 18 ClassCastException異常 try { Object s = new Integer(0); System.out.println((String) s); } catch (Exception e) { System.out.println("18、" + e.getClass().getName() + "異常"); } // 19 BufferUnderflowException異常 try { ByteBuffer buf = ByteBuffer.allocate(50); buf.flip(); byte[] byt = new byte[100]; buf.get(byt); new RuntimeException(); } catch (Exception e) { System.out.println("19、" + e.getClass().getName() + "異常"); } // 20 java.sql.SQLException異常 try { String sql = "select * from Table";// sql語句錯誤 Connection conn = DriverManager.getConnection("com.MySQL.jdbc.Driver"); Statement smt = (Statement) conn.createStatement(); smt.execute(); } catch (Exception e) { System.out.println("20、" + e.getClass().getName() + "異常"); } }}

工具

git svn 的 區別 和 常用命令

Maven依賴中的scope

測試

JUnit

Die.java

public class Die{ private int faceValue; private int numofsides; public Die(){ faceValue = 0; numofsides = 6; } public Die(int v){ numofsides = v; } public int numOfSides(){ return numofsides; } public int topFace(){ return faceValue; } public void roll() { faceValue = (int) (1 + Math.random() * numofsides ); }}

TestDie.java

import org.junit.After;import org.junit.Assert;import org.junit.Test;import org.junit.Before;/** * Unit test for simple App. */public class TestDie { private Die die1,die2; @Before public void setUp() { die1 = new Die(); die2 = new Die(10); die1.roll(); die2.roll(); } @Test public void testdie1numofsides() { Assert.assertEquals(6, die1.numOfSides()); } @Test public void testdie1Face() { Assert.assertTrue(die1.topFace() >= 1 && die1.topFace() <= 6); } @Test public void testdie2numofsides() { Assert.assertEquals(10, die2.numOfSides()); } @Test public void testdie2Face() { Assert.assertTrue(die2.topFace() >= 1 && die2.topFace() <= 10); } @After public void tearDown() { }}

實現 assertEquals aseertSame

assertEquals.java

當expected和actual都是String類型時,ComparisonFailure還會找出是前后相同的串,并用[Different String]標明那些不相同的字符串,也就是expectedToString和actualToString的格式將會變成:…${sameString}[${differentString}]${sameString}…。其中“…”只會在相同的字符串太長的情況下才會出現,這個長度標準目前(JUnit4.10)是20個字符。具體實現參考ComparisonFailure類,它繼承自AssertionError,這里不再展開。

/** * Asserts that two objects are equal. If they are not, an * {@link AssertionError} is thrown with the given message. If * <code>expected</code> and <code>actual</code> are <code>null</code>, * they are considered equal. * * @param message * the identifying message for the {@link AssertionError} (<code>null</code> * okay) * @param expected * expected value * @param actual * actual value */ static public void assertEquals(String message, Object expected, Object actual) { if (expected == null && actual == null) return; if (expected != null && isEquals(expected, actual)) return; else if (expected instanceof String && actual instanceof String) { String cleanMessage= message == null ? "" : message; throw new ComparisonFailure(cleanMessage, (String) expected, (String) actual); } else failNotEquals(message, expected, actual); } private static boolean isEquals(Object expected, Object actual) { return expected.equals(actual); } /** * Asserts that two objects are equal. If they are not, an * {@link AssertionError} without a message is thrown. If * <code>expected</code> and <code>actual</code> are <code>null</code>, * they are considered equal. * * @param expected * expected value * @param actual * the value to check against <code>expected</code> */ static public void assertEquals(Object expected, Object actual) { assertEquals(null, expected, actual); }

aseertSame.java

/** * Asserts that two objects refer to the same object. If they are not, an * {@link AssertionError} is thrown with the given message. * * @param message * the identifying message for the {@link AssertionError} (<code>null</code> * okay) * @param expected * the expected object * @param actual * the object to compare to <code>expected</code> */ static public void assertSame(String message, Object expected, Object actual) { if (expected == actual) return; failNotSame(message, expected, actual); } /** * Asserts that two objects refer to the same object. If they are not the * same, an {@link AssertionError} without a message is thrown. * * @param expected * the expected object * @param actual * the object to compare to <code>expected</code> */ static public void assertSame(Object expected, Object actual) { assertSame(null, expected, actual); }

其他

hamcrest 可以用來增強 JUnit 中的 assert 功能Cobertura is a free Java tool that calculates the percentage of code accessed by tests.stub & mock. EasyMock has been the first dynamic Mock Object generator, relieving users of hand-writing Mock Objects, or generating code for themDbUnit is a JUnit extension (also usable with Ant) targeted at database-driven projects that,among other things, puts your database into a known state between test runs

本文轉自:http://blog.csdn.net/u011239443/article/details/53150159


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品永久免费观看| 7777kkkk成人观看| 亚洲一区二区三区成人在线视频精品| 精品呦交小u女在线| 亚洲片国产一区一级在线观看| 欧美激情2020午夜免费观看| 亚洲一区二区久久久久久| 97色在线播放视频| 成人激情春色网| 91久久在线播放| 国产亚洲精品美女久久久| 69av视频在线播放| 国语自产精品视频在线看| 久久精品视频在线| 亚洲男人的天堂网站| 在线精品视频视频中文字幕| 亚洲丝袜av一区| 日韩国产中文字幕| 性色av一区二区三区免费| 欧美一区二区三区免费视| 久热精品视频在线免费观看| 日韩精品在线观看视频| 精品福利免费观看| 久久久中精品2020中文| 久久激情五月丁香伊人| 亚洲欧美资源在线| 亚洲成人a**站| 亚洲第一综合天堂另类专| 欧美激情乱人伦| 亚洲第一二三四五区| 97超碰蝌蚪网人人做人人爽| 亚洲丝袜在线视频| 亚洲欧美在线看| 精品久久久久久中文字幕| 亚洲a级在线播放观看| 国产丝袜一区二区| 亚洲欧美国内爽妇网| 国产精品盗摄久久久| 国产精品免费久久久久久| 亚洲自拍偷拍第一页| 久久久免费电影| 中国日韩欧美久久久久久久久| 亚洲www视频| 热re91久久精品国99热蜜臀| 亚洲视频视频在线| 国产在线播放不卡| 色婷婷综合久久久久| 精品精品国产国产自在线| 成人精品视频99在线观看免费| 日韩成人在线播放| 欧美日韩国产第一页| 黄色一区二区在线观看| 亚洲视频777| 精品中文字幕久久久久久| 色综合久久精品亚洲国产| 国产欧美日韩精品专区| 国产亚洲精品久久久优势| 97人人模人人爽人人喊中文字| 欧美性xxxxx极品娇小| 亚洲国产91色在线| 日韩在线免费视频观看| 91精品国产综合久久香蕉的用户体验| 亚洲高清免费观看高清完整版| 91免费视频网站| 欧美激情按摩在线| 亚洲一区二区精品| 久久久国产精品x99av| 欧美又大又粗又长| 久久精品国产69国产精品亚洲| 亚洲欧美日本精品| 国产精品视频久久久久| 久久91亚洲精品中文字幕| 久久精品久久精品亚洲人| 38少妇精品导航| 亚洲精品aⅴ中文字幕乱码| 日韩中文字幕精品| 538国产精品视频一区二区| 深夜福利日韩在线看| 国产一区二区在线免费视频| 欧美性感美女h网站在线观看免费| 日韩精品中文字幕视频在线| 国产精品久久二区| 成人欧美在线观看| 亚洲国产精品嫩草影院久久| 久久五月天色综合| 国产欧美日韩视频| 日韩欧美亚洲国产一区| 亚洲国产中文字幕久久网| 国产欧美日韩综合精品| 欧美日韩美女在线| 在线电影欧美日韩一区二区私密| 国产91九色视频| 一本大道亚洲视频| 萌白酱国产一区二区| 日韩av免费看| 最近2019中文字幕mv免费看| 欧美日韩中文在线观看| 国产精品视频地址| 亚洲女人初尝黑人巨大| 亚洲精品视频免费| 热99在线视频| 亚洲人成网站999久久久综合| 91亚洲精品视频| 亚洲国产精品一区二区三区| 亚洲另类欧美自拍| 日韩av在线一区| 久久久久久久久久国产精品| 精品激情国产视频| 黑人极品videos精品欧美裸| 91成人国产在线观看| 国产欧美最新羞羞视频在线观看| 久久亚洲一区二区三区四区五区高| 国产精品人成电影| 69久久夜色精品国产69乱青草| www亚洲精品| 97精品在线视频| 欧美国产激情18| 亚洲欧美色图片| 伊人青青综合网站| 日韩在线播放一区| 久久亚洲精品国产亚洲老地址| 欧美亚洲在线播放| 中文在线资源观看视频网站免费不卡| 91网站在线免费观看| 国产精品久久久久久久久免费看| 国产成人91久久精品| 精品美女久久久久久免费| 欧美电影免费观看| 亚洲欧美国产一区二区三区| 亚洲人精品午夜在线观看| 欧美在线观看日本一区| 国产美女91呻吟求| 亚洲欧美自拍一区| 国产精品va在线播放我和闺蜜| 久久久中文字幕| 久久九九亚洲综合| 国内精品视频一区| 中文字幕亚洲色图| 国产一区二区三区视频在线观看| 国产99在线|中文| 大荫蒂欧美视频另类xxxx| 亚洲综合社区网| 国产成人拍精品视频午夜网站| xxx成人少妇69| 日韩在线观看网站| 欧美日韩国产成人在线观看| 欧美巨猛xxxx猛交黑人97人| 91精品国产高清久久久久久91| 98精品在线视频| 国产精品一区二区久久久久| 久久精品视频一| 欧美巨乳美女视频| 成人在线视频网站| 亚洲精选中文字幕| 国产视频欧美视频| 亚洲成人精品久久| 欧美韩国理论所午夜片917电影| 国产精品吴梦梦| 日韩经典一区二区三区| 亚洲精品国产欧美| 国产精品免费小视频| 欧美限制级电影在线观看| 欧美日韩国产成人高清视频| 色偷偷噜噜噜亚洲男人的天堂|