首頁>技術>

之前有粉絲後臺跟我說,作為一個初學者,真的是不清楚該如何去進行學習,直接上ssm框架也看不明白,那我作為這麼一個寵粉的人,怎麼可能讓粉絲有這樣的顧慮啊,今天真的是基礎到極點了,分享我這邊的相應的一些程式碼例項,因為在程式碼的備註中已經寫的很清楚了,所以基本不會再透過文字進行講解

註釋+原始碼+結果,這邊應該展示的很清楚,也比較好理解,不過,一定要自己去實踐一下,不實踐再簡單的技術理解起來也不容易

而向多執行緒什麼的學習例項,我這邊之前的文章也整理過,大家可以去檢視,每一個都帶著相應的原始碼展示

好了,話不多說,看正題

Java基礎之:OOP——抽象類
package com.biws.testabstract;/** * @author :biws * @date :Created in 2020/12/22 21:14 * @description:抽象類測試 */public class Abstract_Test {        public static void main(String[] args) {            Cat cat = new Cat("小花貓");            cat.eat();        }    }    abstract class Animal { //抽象類        private String name;        public Animal(String name) {            super();            this.name = name;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        //eat , 抽象方法        public abstract void eat();    }    //解讀//1. 當一個類繼承了抽象類,就要把抽象類的所有抽象方法實現//2. 所謂方法實現,指的是 把方法體寫出, 方法體是空,也可以.    class Cat extends Animal {        public Cat(String name) {            super(name);            // TODO Auto-generated constructor stub        }        public void eat() {            System.out.println(getName() +  " 愛吃 <・)))><<");        }    }

然後呢,我們看一下多型的實現

package com.biws.testabstract;/** * @author :biws * @date :Created in 2020/12/22 21:17 * @description:多型在抽象類中的實現 */public class AbstractPolArray {    public static void main(String[] args) {        //抽象類不可以例項化,但可以使用多型陣列        Animal1[] animal1 = new Animal1[2];        animal1[0] = new Dog1("小黑狗");        animal1[1] = new Cat1("小花貓");        //多型陣列的使用        for (int i = 0; i < animal1.length; i++) {            show(animal1[i]);        }    }    //這裡不用擔心會傳入一個Animal型別的例項,因為Animal不能例項化    //編譯器不會透過,所以只會傳入Animal的子類例項    public static void show(Animal1 a) {        a.eat();    //多型的使用        if(a instanceof Dog1) {            ((Dog1)a).watch();        }else if(a instanceof Cat1) {            ((Cat1)a).catchMouse();        }    }}abstract class Animal1{    private String name;    public Animal1(String name) {        super();        this.name = name;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    //動物都有eat的動作,但我們並不知道每一個動物具體怎麼樣eat    //所以這裡透過抽象提供了eat方法,需要子類來實現    public abstract void eat();}class Dog1 extends Animal1{    public Dog1(String name) {        super(name);    }    @Override    public void eat() {        System.out.println(getName() + "啃骨頭......");    }    public void watch() {        System.out.println(getName() + "守家.....");    }}class Cat1 extends Animal1{    public Cat1(String name) {        super(name);    }    @Override    public void eat() {        System.out.println(getName() + "吃魚......");    }    public void catchMouse(){        System.out.println(getName() + "抓老鼠.....");    }}

最後舉個小例子總結一下

package com.biws.testabstract;/** * @author :biws * @date :Created in 2020/12/22 21:24 * @description:模板設計模式 */public class Abstract_Template {    public static void main(String[] args) {        Template sub = new Sub();        sub.caleTimes(); //實際是呼叫了Template中的caleTimes方法        Template subStringB = new SubStringB();        subStringB.caleTimes();        //這裡可以看到 StringBuffer在拼接字串時,遠遠優於String拼接的效率    }}abstract class Template{ //抽象類    public abstract void code(); //抽象方法    public void caleTimes(){ //  統計耗時多久是確定        //統計當前時間距離 1970-1-1 0:0:0 的時間差,單位ms        long start = System.currentTimeMillis();        code(); //這裡的code在呼叫時,就是指向子類中已經重寫實現了的code        long end = System.currentTimeMillis();        System.out.println("耗時:"+(end-start));    }}class Sub extends Template{    @Override    public void code() {        String x = "";        for(int i = 0;i < 10000 ; i++) {    //拼接1W個hello 看處理時間            x += "hello" + i;        }    }}class SubStringB extends Template{    @Override    public void code() {        StringBuffer stringBuffer = new StringBuffer();        for(int i = 0;i < 10000 ; i++) {    //拼接1W個hello 看處理時間            stringBuffer.append("hello" + i);        }    }}
Java基礎之:StringBuffer與StringBuilder

簡單直白點,直接一套程式碼走起

package com.biws.string;/** * @author :biws * @date :Created in 2020/12/22 21:27 * @description:String_StringBuffer_StringBuilder對比 */public class String_StringBuffer_StringBuilder {    public static void main(String[] args) {        // TODO Auto-generated method stub        String text = ""; //字串        long startTime = 0L;        long endTime = 0L;        StringBuffer buffer = new StringBuffer("");//StringBuffer        StringBuilder builder = new StringBuilder("");//StringBuilder        startTime = System.currentTimeMillis();        for (int i = 0; i < 80000; i++) {            buffer.append(String.valueOf(i));        }        endTime = System.currentTimeMillis();        System.out.println("StringBuffer的執行時間:" + (endTime - startTime));        startTime = System.currentTimeMillis();        for (int i = 0; i < 80000; i++) {            builder.append(String.valueOf(i));        }        endTime = System.currentTimeMillis();        System.out.println("StringBuilder的執行時間:" + (endTime - startTime));        startTime = System.currentTimeMillis();        for (int i = 0; i < 80000; i++) {            text = text + i;        }        endTime = System.currentTimeMillis();        System.out.println("String的執行時間:" + (endTime - startTime));    }}

檢視一下執行結果

Java基礎之:Math & Arrays Math

簡單粗暴,直接進行程式碼展示

package com.biws.testmath;/** * @author :biws * @date :Created in 2020/12/22 21:42 * @description:測試math類 */public class ClassTest {    public static void main(String[] args) {        //1.abs 絕對值        int abs = Math.abs(9);        System.out.println(abs);        //2.pow 求冪        double pow = Math.pow(-3.5, 4);        System.out.println(pow);        //3.ceil 向上取整,返回>=該引數的最小整數;        double ceil = Math.ceil(-3.0001);        System.out.println(ceil);        //4.floor 向下取整,返回<=該引數的最大整數        double floor = Math.floor(-4.999);        System.out.println(floor);        //5.round 四捨五入  Math.floor(該引數+0.5)        long round = Math.round(-5.001);        System.out.println(round);        //6.sqrt 求開方        double sqrt = Math.sqrt(-9.0);        System.out.println(sqrt);        //7.random 返回隨機數【0——1)        //[a-b]:int num = (int)(Math.random()*(b-a+1)+a)        double random = Math.random();        System.out.println(random);        //小技巧:獲取一個 a-b 之間的一個隨機整數        int a = (int)(Math.random()*(15-7+1)+7);        System.out.println(a);        /*         * 理解:         *  1.Math.random() 是 [0,1)的隨機數         *  2.(Math.random()*(15-7+1) 就是[0,9)         *  3.Math.random()*(15-7+1)+7 就是[7,16)         *  4.(int)取整就是 [7,15] ,即[a,b]之間的隨機整數         */    }}

執行結果

Arrays

正常的執行

package com.biws.testarray;import java.util.Arrays;import java.util.Comparator;/** * @author :biws * @date :Created in 2020/12/22 21:44 * @description:Array中常用排序方法 */public class TestArray1 {    public static void main(String[] args) {        Integer[] arr = { 25, 35, 11, 32, 98, 22 };//      Arrays.sort(arr);   //預設小到大排序        System.out.println(Arrays.toString(arr));        // 使用匿名內部類重寫compare方法,實現從大到小排序        Arrays.sort(arr, new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                if (o1 > o2) {                    return -1;                } else if (o1 < o2) {                    return 1;                } else {                    return 0;                }            }        });        System.out.println(Arrays.toString(arr));    }}

結果檢視

重寫之後的執行結果

package com.biws.testarray;import java.util.Arrays;import java.util.Comparator;/** * @author :biws * @date :Created in 2020/12/22 21:46 * @description:重寫array中的排序方法 */public class overwriteArraySort {    @SuppressWarnings("unchecked")    public static void sort(Integer[] arr, Comparator c) {        Integer temp = 0;// 自動裝箱        for (int i = 0; i < arr.length; i++) {            for (int j = 0; j < arr.length - 1 - i; j++) {                if (c.compare(arr[j] , arr[j + 1]) > 0) {                    temp = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = temp;                }            }        }    }    public static void main(String[] args) {        Integer[] arr = { 35, 25, 11, 32, 98, 22 };//      MyArrays.sort(arr);//不新增 Comparator介面物件為引數,就是簡單的氣泡排序方法        System.out.println(Arrays.toString(arr));        //新增匿名內部類物件為引數,就可以改變排序方式。用此方法可以很靈活的使用排序。       overwriteArraySort.sort(arr, new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                //透過返回值的正負來控制,升序還是降序                //只有當返回值為1時,才會發生交換。例如這裡,o1 < o2時返回1 ,進行交換                //也就是需要前面的數,比後面的數大,即降序                if (o1 < o2) {                    return -1;                } else if (o1 > o2) {                    return 1;                } else {                    return 0;                }            }        });        System.out.println(Arrays.toString(arr));    }}

結果

Java基礎之:大數
package com.biws.bignum;import java.math.BigDecimal;import java.math.BigInteger;/** * @author :biws * @date :Created in 2020/12/22 22:03 * @description: */public class test {    public static void main(String[] args) {        BigInteger i1 = new BigInteger("1234567890");        BigInteger i2 = new BigInteger("200");        // 2.呼叫常見的運算方法        // System.out.println(b1+b2); 不能使用 這樣的 + 方法執行        // 並且,add 這些方法只能是大數於大數相加,BigInteger.add(BigInteger);        System.out.println(i1.add(i2));// 加        System.out.println(i1.subtract(i2));// 減        System.out.println(i1.multiply(i2));// 乘        System.out.println(i1.divide(i2));// 除        BigDecimal b1 = new BigDecimal("1234567890.567");        BigDecimal b2 = new BigDecimal("123");        // 2.呼叫常見的運算方法        // System.out.println(b1+b2); 不能使用 + 號運算..        // 並且,add 這些方法只能是大數於大數相加,BigDecimal.add(BigDecimal);        System.out.println(b1.add(b2));// 加        System.out.println(b1.subtract(b2));// 減        System.out.println(b1.multiply(b2));// 乘        //後面這個 BigDecimal.ROUND_CEILING 需要指定,是精度        //沒有這個引數,則會提示:錯誤        System.out.println(b1.divide(b2, BigDecimal.ROUND_CEILING));// 除    }}

檢視一下結果

Java基礎之:日期類

日期類中所包含的方法有點多,所以在這裡我用junit方法進行測試,那是真的香 啊,節省了大量的程式碼編寫時間

package com.biws.TestDate;import org.junit.jupiter.api.Test;import java.time.*;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;import java.util.Date;/** * @author :biws * @date :Created in 2020/12/22 22:06 * @description:測試全部date類方法 */public class allDateFunction {    public static void main(String[] args) {        // TODO Auto-generated method stub        new allDateFunction().hi();        new allDateFunction().hello();    }    // JUnit 測試單元    // 1. 配置快捷鍵 alt + J    // 2. 如果要執行某個 測試單元,就選中方法名或游標定位在方法名,在執行 Junit    // 3. 如果不選,就執行,就把所有的測試單元都執行    // 4.@Test,代表此方法是測試單元,可以單獨執行測試    @Test    public void hi() {        System.out.println("hi ");    }    @Test    public void hello() {        System.out.println("hello");    }    @Test    public void testLocalDate() {        // 獲取當前日期(只包含日期,不包含時間)        LocalDate date = LocalDate.now();        System.out.println(date);        // 獲取日期的指定部分        System.out.println("year:" + date.getYear());        System.out.println("month:" + date.getMonth());        System.out.println("day:" + date.getDayOfMonth());        System.out.println("week:" + date.getDayOfWeek());        // 根據指定的日期引數,建立LocalDate物件        LocalDate of = LocalDate.of(2010, 3, 2);        System.out.println(of);    }    // 測試LocalTime類    @Test    public void testLocalTime() {        // 獲取當前時間(只包含時間,不包含日期)        LocalTime time = LocalTime.now();        System.out.println(time);        // 獲取時間的指定部分        System.out.println("hour:" + time.getHour());        System.out.println("minute:" + time.getMinute());        System.out.println("second:" + time.getSecond());        System.out.println("nano:" + time.getNano());        // 根據指定的時間引數,建立LocalTime物件        LocalTime of = LocalTime.of(10, 20, 55);        System.out.println(of);    }    // 測試LocalDateTime類    @Test    public void testLocalDateTime() { // 獲取當前時間(包含時間+日期)        LocalDateTime time = LocalDateTime.now();        // 獲取時間的指定部分 System.out.println("year:" + time.getYear());        System.out.println("month:" + time.getMonthValue());        System.out.println("day:" + time.getMonth());        System.out.println("day:" + time.getDayOfMonth());        System.out.println("hour:" + time.getHour());        System.out.println("minute:" + time.getMinute());        System.out.println("second:" + time.getSecond());        System.out.println("nano:" + time.getNano());        // 根據指定的時間引數,建立LocalTime物件        LocalDateTime of = LocalDateTime.of(2020, 2, 2, 10, 20, 55);        System.out.println(of);    }    @Test    public void testMonthDay() {        LocalDate birth = LocalDate.of(1994, 7, 14); // 生日        MonthDay birthMonthDay = MonthDay.of(birth.getMonthValue(), birth.getDayOfMonth());        LocalDate now = LocalDate.now(); // 當前日期        MonthDay current = MonthDay.from(now);        if (birthMonthDay.equals(current)) {            System.out.println("今天生日");        } else {            System.out.println("今天不生日");        }    }    // 判斷是否為閏年    @Test    public void testIsLeapYear() {        LocalDate now = LocalDate.now();        System.out.println(now.isLeapYear());    }    // 測試增加日期的某個部分    @Test    public void testPlusDate() {        LocalDate now = LocalDate.now(); // 日期        // 3年前 的日期        LocalDate plusYears = now.plusDays(-1);        System.out.println(plusYears);    }    // 使用plus方法測試增加時間的某個部分    // 時間範圍判斷    @Test    public void testPlusTime() {        LocalTime now = LocalTime.now();// 時間        LocalTime plusHours = now.plusSeconds(-500);        System.out.println(plusHours);    }    // 使用minus方法測試檢視一年前和一年後的日期    @Test    public void testMinusTime() {        LocalDate now = LocalDate.now();        LocalDate minus = now.minus(1, ChronoUnit.YEARS);        // LocalDate minus2 = now.minusYears(1);        System.out.println(minus);    }    // 測試時間戳類:Instant ,相當於以前的Date類    @Test    public void testInstant() {        Instant now = Instant.now();        System.out.println(now);        // 與Date類的轉換        Date date = Date.from(now);        System.out.println(date);        Instant instant = date.toInstant();        System.out.println(instant);    }    // 格式轉換    @Test    public void testDateTimeFormatter() {        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("MM-dd yyyy HH:mm:ss");        // 將字串轉換成日期        LocalDateTime parse = LocalDateTime.parse("03-03 2017 08:40:50", pattern);        System.out.println(parse);        // 將日期轉換成字串        //LocalDateTime parse = LocalDateTime.now();        String format = pattern.format(parse);        System.out.println(format);    }}

22
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 阿里資深架構師熬夜純手寫的238頁微服務容器化開發實戰筆記