Time of Update: 2017-01-19
一、泛型的基本概念java與c#一樣,都存在泛型的概念,及類型的參數化。java中的泛型是在jdk5.0後出現的,但是java中的泛型與C#中的泛型是有本質區別的,首先從集合類型上來說,java
Time of Update: 2017-01-19
前言 我想學過資料結構的小夥伴一定都認識哈夫曼,這位大神發明了大名鼎鼎的“最優二叉樹”,為了紀念他呢,我們稱之為“哈夫曼樹”。哈夫曼樹可以用於哈夫曼編碼,編碼的話學問可就大了,比如用於壓縮,用於密碼學等。今天一起來看看哈夫曼樹到底是什麼東東。 概念當然,套路之一,首先我們要瞭解一些基本概念。
Time of Update: 2017-01-19
經常在網上各大版塊都能看到對於java字串運行時記憶體配置的探討,形如:String a = "123",String b = new String("123"),這兩種形式的字串是存放在什麼地方的呢,其實這兩種形式的字串字面值"123"本身在運行時既不是存放在棧上,也不是存放在堆上,他們是存放在方法區中的某個常量區,並且對於相同的字串字面值在記憶體中只保留一份。下面我們將以執行個體來分析。1.==運算子作用在兩個字串引用比較的兩個案例:public class StringTest {
Time of Update: 2017-01-19
前言之前寫過一篇關於JVM記憶體地區劃分的文章,但是昨天接到螞蟻金服的面試,問到JVM相關的內容,解釋一下JVM的記憶體地區劃分,這部分答得還不錯,但是後來又問了Java裡面String存放的位置,之前只記得String是一個不變的量,應該是要存放在常量池裡面的,但是後來問到new一個String出來應該是放到哪裡的,這個應該是放到堆裡面的,後來又問到String的引用是放在什麼地方的,當時傻逼的說也是放在堆裡面的,現在總結一下:基本類型的變數資料和對象的引用都是放在棧裡面的,對象本身放在堆裡面
Time of Update: 2017-01-19
java的Map集合中按value值進行排序輸出的執行個體代碼import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.Map;import java.util.Set;public class Test {public static void main(String[] args) {Map<String ,Integer> map = new
Time of Update: 2017-01-19
Map是索引值對的集合,又叫作字典或關聯陣列等,是最常見的資料結構之一。在java如何讓一個map按value排序呢? 看似簡單,但卻不容易!比如,Map中key是String類型,表示一個單詞,而value是int型,表示該單詞出現的次數,現在我們想要按照單詞出現的次數來排序:Map map = new TreeMap();map.put("me", 1000);map.put("and", 4000);map.put("you", 3000);map.put("food",
Time of Update: 2017-01-19
一、理論準備Map是索引值對的集合介面,它的實作類別主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基於紅/黑樹狀結構(Red-Black tree)的 NavigableMap 實現,該映射根據其鍵的自然順序進行排序,或者根據建立映射時提供的 Comparator
Time of Update: 2017-01-19
class的裝載在講class的初始化之前,我們來講解下class的裝載順序。以下摘自《Thinking in Java 4》由於Java 中的一切東西都是對象,所以許多活動變得更加簡單,這個問題便是其中的一例。正如下一章會講到的那樣,每個對象的代碼都存在於獨立的檔案中。除非真的需要代碼,否則那個檔案是不會載入的。通常,我們可認為除非那個類的一個物件建構完畢,否則代碼不會真的載入。由於static
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * CountDownLatch是個計數器,它有一個初始數, * 等待這個計數器的線程必須等到計數器倒數到零時才可繼續。 */public class
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.Random;import java.util.concurrent.CyclicBarrier;/** * CyclicBarrier類似於CountDownLatch也是個計數器, * 不同的是CyclicBarrier數的是調用了CyclicBarrier.await()進入等待的線程數, *
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * Java 5.0裡新加了4個協調線程間進程的同步裝置,它們分別是: * Semaphore, CountDownLatch, CyclicBarrier和Exchanger.&
Time of Update: 2017-01-19
複製代碼 代碼如下:import java.util.LinkedList;public class OJ { public OJ() { super(); } /* * 功能:輸入一行數字,如果我們把這行數字中的'5'都看成空格,那麼就得到一行用空格分隔的非負整數(可能有些整數以'0'開頭,這些頭部的'0'應該被忽略掉 * ,除非這個整數就是由若干個'0'組成的,這時這個整數就是0)。
Time of Update: 2017-01-19
JDK(Java Development Kit,Java開發包,Java開發工具)是一個寫Java的applet和應用程式的程式開發環境。它由一個處於作業系統層之上的運行環境還有開發人員編譯,調試和運行用Java語言寫的applet和應用程式所需的工具組成。 JDK(Java Development Kit)是Sun Microsystems針對Java開發員的產品。自從Java推出以來,JDK已經成為使用最廣泛的Java SDK(Software development kit)。
Time of Update: 2017-01-19
特點:長度是可變化的(底層實際是不斷的new數組)可以直接操作多個資料類型最終會通過toString方法變成字串可以對字串進行修改線程是同步的與數組之間的區別:StringBuffer:長度是可變的,可以儲存不同類型的資料 數組:長度不可變,只能儲存一種資料類型StringBuffer功能:儲存(create)StringBuffer append():將指定的資料作為參數添加到已有資料結尾處(除了byte和short類型的資料沒有以外其他資料類型都有都可以)StringBuffer
Time of Update: 2017-01-19
常用的方法: 複製代碼 代碼如下: long currentTimeMillis(); 擷取目前時間的毫秒值 void exit();終止當前正在啟動並執行 JAVA 虛擬機器。 複製代碼 代碼如下: public static void Method(){ long l = System.currentTimeMillis();
Time of Update: 2017-01-19
|--List:元素是有序的(怎麼存的就怎麼取出來,順序不會亂),元素可以重複(角標1上有個3,角標2上也可以有個3)因為該集合體系有索引, |-- ArrayList:底層的資料結構使用的是數組結構(數組長度是可變的百分之五十延長)(特點是查詢很快,但增刪較慢)線程不同步 |-- LinkedList:底層的資料結構是鏈表結構(特點是查詢較慢,增刪較快) |-- Vector:底層是數組資料結構
Time of Update: 2017-01-19
複製代碼 代碼如下:class ArrayListTest1 { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add("java03"); &
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.ScheduledFuture;import java.util.concurrent.TimeUnit;/** * 以下是一個帶方法的類,它設定了 ScheduledExecutorService
Time of Update: 2017-01-19
本章涉及到的內容包括:1. join()介紹2. join()源碼分析(基於JDK1.7.0_40)3. join()樣本1. join()介紹join() 定義在Thread.java中。join() 的作用:讓“主線程”等待“子線程”結束之後才能繼續運行。這句話可能有點晦澀,我們還是通過例子去理解:複製代碼 代碼如下:// 主線程public class Father extends Thread { public void run()