原创 String的拼接字符串的底層實現原理

下面代碼: public class Test1 { public static void main(String[] args) { String str1="hello"; String

原创 集合框架

Collection接口: Collection接口中有兩個方法是List接口和Set接口共有的:add()和iterator()方法; 但是List接口又自己添加了新方法:get()、set()方法,這兩個方法是List獨有的

原创 String、StringBuilder函數傳參的執行過程

遇到下面一段代碼,結果是什麼: public class StringbuilderAppend { public static void test(StringBuilder x,StringBuilder y){

原创 Integer和int類型值比較

今天覆習時,遇到了Integer類型與int類型的值比較,就寫了一段代碼來測試一下結果: public class Test9 { public static void main(String[] args) {

原创 Java中方法參數傳遞是值傳遞還是引用傳遞?

通過一段代碼來引入今天的主題:猜一下下面這段代碼的執行結果是什麼? public class Test { public static void swap1(int a,int b){ int temp=a

原创 wait、notify、notifyAll方法

線程的sleep、yield、join、停止方法 wait()方法只能在同步方法中或同步塊中調用。如果調用wait()時,沒有持有適當的鎖,會拋出異常; 方法notify()、notifyAll()也要在同步方法或同步塊中調用;

原创 反射

1、Class對象的獲取有三種方式: (1)任何類的對象可以通過調用Object類提供的**getClass()取得該類Class對象; (2)類名稱.class可以直接根據某個具體類來取得其Class對象 (3)調用Class類

原创 synchronized上鎖

synchronized的作用是:給對象加上鎖,就像是把一個籠子鎖上,這個籠子的鑰匙只有一把,一次只有一個人能拿到這把鑰匙開鎖;你只有拿到鎖的鑰匙,你才能打開籠子,否則你就只能等待,直到拿到鑰匙; 來一段代碼來看看加與不加sync

原创 try...catch...finally語句塊返回值

大家都知道在try…catch…finally語句塊中,finally是肯定必然執行的;catch語句塊是在出現異常時纔會執行的; 猜測一下,下面的代碼返回值是多少?是10? 11? 12? 13? public stat

原创 線程池

·爲什麼要使用線程池? 使用線程池是爲了節省資源,如果每次有任務要來執行,每次都重新創建一個線程,使用完之後再銷燬,創建和銷燬線程池的代價是很大的,這很划算不來;所以才引進了線程池; 且使用了線程池後,如果當有任務進來時,如果此時

原创 String類型的兩種實例化區別

String類型有兩種實例化的方法: 一種是直接賦值,如String str=“abc”; 另一種是通過new來實例化,如:String str=new String(“abc”); 通過一段測試代碼,我們發現: public

原创 歸併排序

歸併排序的思想:將數組分爲左右兩部分,分別將左半部分數組排爲有序數組,將右半部分數組排爲有序數組,然後再將兩部分數組排序合併;在對左半部分數組和右半部分排序時,又引用了上面的思想,所以就引入了遞歸思想; import java.u

原创 快速排序

快速排序: 以數組中最後一個數爲基準值,然後從數組的兩頭(即 數組下標爲0,和下標爲arrray.length-1處)分別開始遍歷數組,將小於基準值的數放在數組的左邊,將大於基準值的數放在數組的右邊,最後將基準值放在這兩部分中間,

原创 堆的向上調整、向下調整(堆化)

數據結構上的堆在物理上是一個數組,在邏輯上是一個二叉樹。 大堆:根結點比孩子結點大; 小堆:根結點比孩子結點小; 堆化(向下調整)、向上調整的前提都是:在二叉樹中,只有一個位置不滿足堆的性質,其它位置都滿足

原创 泛型方法

泛型方法: 泛型方法可以接收各種類型的參數 泛型方法的形式:在返回值前面添加< T > 如圖:就是泛型方法的定義方式 public class Function1 { //泛型方法 public static <T>