2018-05-11 JAVA

1? java同步幾種方法?threadlocal怎么實現(xiàn)。

java的同步機制

1.synchronized;

2.Object方法中的wait,notify;

3.ThreadLocal機制? 來實現(xiàn)的。

其中synchronized有兩種用法:1.對類的方法進行修飾 2.synchronized(對象)的方法進行修飾

在同步機制中,通過對象的鎖機制保證同一時間只有一個線程訪問變量

ThreadLocal不是用來解決對象共享訪問問題的,而主要是提供了保持對象的方法和避免參數(shù)傳遞的方便的對象訪問方式。

歸納為兩點:

1? 每個線程中都有一個自己的ThreadLocalMap類對象,可以將線程自己的對象保持到其中,各? ? 管各的,線程可以正確的訪問到自己的對象。

2 將一個共用的ThreadLocal靜態(tài)實例作為key,將不同對象的引用保存到不同線程的? ? ? ? ? ThreadLocalMap中,然后在線程執(zhí)行的各處通過這個靜態(tài)ThreadLocal實例的get()方法取得自己 線程保存的那個對象,避免了將這個對象作為參數(shù)傳遞的麻煩。

當然ThreadLocal并不能替代同步機制,兩者面向的問題領域不同。同步機制是為了同步多個線程對相同資源的并發(fā)訪問,是為了多個線程之間進行通信的有效方式;而ThreadLocal是隔離多個線程的數(shù)據(jù)共享,從根本上就不在多個線程之間共享資源(變量),這樣當然不需要對多個線程進行同步了。所以,如果你需要進行多個線程之間進行通信,則使用同步機制;如果需要隔離多個線程之間的共享沖突,可以使用ThreadLocal,這將極大地簡化你的程 序,使程序更加易讀、簡潔。

2 Java常用的幾種設計模式

1 單例模式

? 該模式主要目的是使內存中保持1個對象



2 工廠模式

該模式主要功能是統(tǒng)一提供實例對象的引用

3 建造模式

該模式其實就是說,一個對象的組成可能有很多其他的對象一起組成的,比如說,一個對象的實現(xiàn)非常復雜,有很多的屬性,而這些屬性又是其他對象的引用,可能這些對象的引用又包括很多的對象引用。封裝這些復雜性,就可以使用建造模式

4 門面模式

這個模式個人感覺像是Service層的一個翻版。比如Dao我們定義了很多持久化方法,我們通過Service層將Dao的原子方法組成業(yè)務邏輯,再通過方法向上層提供服務。門面模式道理其實是一樣的。

5 策略模式

這個模式是將行為的抽象,即當有幾個類有相似的方法,將其中通用的部分都提取出來,從而使擴展更容易。

3 關于Java中static和final關鍵字的用法總結

static通常翻譯為“靜態(tài)”,可用來修飾類、成員變量和方法,也可以聲明一個靜態(tài)塊。下面分別介紹這幾類用法。

1 修飾類

首先需要注意的是,普通類是不能用static來修飾的,static只能用來修飾內部類。使用static修飾內部類之后可以使用“類.內部類”實例化這個內部類的對象, 而對于其他非靜態(tài)內部類,則只能先實例化外部類,然后才能調用內部類。

2 static變量

按照是否靜態(tài)的對類成員變量進行分類可分兩種:一種是被static修飾的變量,叫靜態(tài)變量或類變量;另一種是沒有被static修飾的變量,叫實例變量。靜態(tài)變量與實例變量的區(qū)別主要是:靜態(tài)變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而實例變量是對象所擁有的,在創(chuàng)建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響

3 static方法

static方法也叫靜態(tài)方法,也可以直接使用“類.方法()”來直接調用。但是需要注意一下幾點:一是靜態(tài)方法中不能使用this和super關鍵字;二是靜態(tài)方法中不能使用非靜態(tài)成員變量,也不能調用非靜態(tài)方法;三是靜態(tài)方法與靜態(tài)變量一樣都是獨立于任何實例,所以靜態(tài)方法不能使用abstract修飾,即static方法不能為抽象方法。

4 static塊

靜態(tài)塊顧名思義就是使用static{}的一段代碼塊。靜態(tài)塊是在JVM加載類的時候執(zhí)行的,并且只會執(zhí)行一次。由于這個特性,所以在一些場景非常好用。我在項目中遇到的過的使用場景主要有在實例化一個日志對象時,使用static塊;然后就是實例化一些在類中常用但不需要多次實例化的變量等

final

final有不可改變之意,可用來修飾非抽象類、非抽象成員變量和方法。下面分別總結一下其用法

1? final類

final類不能被繼承,所以其中的成員變量和方法默認也是為final的。一般來說,只有在確信該類不需要再有子類,并且不會被擴展。所以一般只有在定義一個保存一些常量信息的時候才會將類聲明為final類。

2 final變量

final修飾的變量將無法再被改變,即為常量。final變量在定義時可以不賦值,此時意味著該變量為null;在使用這個變量之前則必須為其賦值,否則會出錯,賦值之后這個值將不會再被改變

3 final 方法

final修飾的方法不能被覆蓋,所以聲明為final的方法之后,該類的子類不能覆寫此方法,但是可以被繼承

static和final結合使用

可以同時使用static和final修飾成員變量和方法,此時的成員變量和方法可以直接用“類.名稱”調用,成員變量的值不能改變,方法不能被覆寫

4 java中靜態(tài)變量和成員變量的區(qū)別

所屬不同:

靜態(tài)變量屬于類,所以也稱為為類變量;成員變量屬于對象,所以也稱為實例變量(對象變量)

在內存中位置不同:

靜態(tài)變量存儲于方法區(qū)里的靜態(tài)區(qū);成員變量存儲于堆內存區(qū)

在內存中出現(xiàn)的時間不同:

靜態(tài)變量隨著類的加載而加載、隨著類的消失而消失;

成員變量隨著對象(也叫實例)的創(chuàng)建而存在,隨著對象的消失而消失。

調用方式不同:

靜態(tài)變量可以通過類名調用,也可以通過對象調用; 成員變量只能通過對象名調用。

在靜態(tài)方法中是沒有this關鍵字的,如何理解呢?

靜態(tài)變量是隨著類的加載而加載,this是隨著對象的創(chuàng)建而存在。靜態(tài)先于對象存在。

靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法。

非靜態(tài)方法,既可以調用靜態(tài)的成員變量也可以調用非靜態(tài)的成員變量;

非靜態(tài)方法既可以調用靜態(tài)的成員方法,也可以調用非靜態(tài)的成員方法。


5 基本數(shù)據(jù)類型


6? java中基本類型和字符串之間的轉換

使用包裝類的 toString() 方法。

使用String類的 valueOf() 方法。

一個空字符串加上基本類型,得到的就是基本類型數(shù)據(jù)對應的字符串

int——》String

int c=10;

String str2=Integer.toString(c);//方法一

String str3=String.valueOf(c);//方法2

String str4=c+"";//方法3


將字符串轉換成基本類型有兩種方法:

調用包裝類的 parseXxx 靜態(tài)方法。

調用包裝類的 valueOf() 方法轉換為基本類型的包裝類,會自動拆箱

String test1="happy";

int c1=Integer.parseInt(test1);//方法一

int c2=Integer.valueOf(test1);//方法二

Doubledob=1.1;

String? dob1=Double.toString(dob);

Double? dob2=Double.valueOf(test1);

7? 時間格式

使用format()方法將日期轉化為指定格式的文本

Date d = newDate();

SimpleDateFormat sdf = new? SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String today = sdf.format(d);

System.out.println(today)

代碼中的 “yyyy-MM-dd HH:mm:ss” 為預定義字符串, yyyy 表示四位年, MM 表示兩位月份, dd 表示兩位日期, HH 表示小時(使用24小時制), mm 表示分鐘, ss 表示秒,這樣就指定了轉換的目標格式,最后調用 format() 方法將時間轉換為指定的格式的字符串。

使用parse()方法將文本轉換為日期

String day = "2018年05月11日 19:43:00";

SimpleDateFormat df = new? SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = df.parse(day);

System.out.println("當前日期:"+ date);

調用 SimpleDateFormat 對象的 parse() 方法時可能會出現(xiàn)轉換異常,即 ParseException ,因此需要進行異常處理。 使用 Date 類時需要導入 java.util 包,使用 SimpleDateFormat 時需要導入 java.text包。

8? Calendar類的應用

Date 類最主要的作用就是獲得當前時間,同時這個類里面也具有設置時間以及一些其他的功能,但是由于本身設計的問題,這些方法卻遭到眾多批評,不建議使用,更推薦使用 Calendar 類進行時間和日期的處理。 java.util.Calendar 類是一個抽象類,可以通過調用 getInstance() 靜態(tài)方法獲取一個 Calendar 對象,此對象已由當前日期時間初始化,即默認代表當前時間,如 Calendar c = Calendar.getInstance(); Calendar 類提供了 getTime() 方法,用來獲取 Date 對象,完成 Calendar 和 Date 的轉換,還可通過 getTimeInMillis() 方法,獲取此 Calendar 的時間值,以毫秒為單位

Calendar calendar=Calendar.getInstance();

Date date=calendar.getTime();//獲取時間

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println(sdf.format(date));

System.out.println(calendar.getTimeInMillis());//毫秒為單位

9? 使用Math類操作數(shù)據(jù)

Math 類位于 java.lang 包中,包含用于執(zhí)行基本數(shù)學運算的方法, Math 類的所有方法都是靜態(tài)方法,所以使用該類中的方法時,可以直接使用類名.方法名,如: Math.round(); 常用方法:

Math.round(11.5)? //? ? 12? 11.5+0.5

Math.round(-11.5) //11? -11.5+0.5

10? HashMap和Hashtable的區(qū)別

1? 兩者最主要的區(qū)別在于Hashtable是線程安全,而HashMap則非線程安全。Hashtable的實現(xiàn)方法里面都添加了synchronized關鍵字來確保線程同步,因此相對而言HashMap性能會高一些,我們平時使用時若無特殊需求建議使用HashMap,在多線程環(huán)境下若使用HashMap需要使用Collections.synchronizedMap()方法來獲取一個線程安全的集合(Collections.synchronizedMap()實現(xiàn)原理是Collections定義了一個SynchronizedMap的內部類,這個類實現(xiàn)了Map接口,在調用方法時使用synchronized來保證線程同步,當然了實際上操作的還是我們傳入的HashMap實例,簡單的說就是Collections.synchronizedMap()方法幫我們在操作HashMap時自動添加了synchronized來實現(xiàn)線程同步,類似的其它Collections.synchronizedXX方法也是類似原理。

2? HashMap可以使用null作為key,不過建議還是盡量避免這樣使用。HashMap以null作為key時,總是存儲在table數(shù)組的第一個節(jié)點上。而Hashtable則不允許null作為key。

3? HashMap繼承了AbstractMap,HashTable繼承Dictionary抽象類,兩者均實現(xiàn)Map接口。

4? HashMap的初始容量為16,Hashtable初始容量為11,兩者的填充因子默認都是0.75。

6? HashMap擴容時是當前容量翻倍即:capacity*2,Hashtable擴容時是容量翻倍+1即:capacity*2+1。

7? HashMap和Hashtable的底層實現(xiàn)都是數(shù)組+鏈表結構實現(xiàn)。

8? 兩者計算hash的方法不同:

Hashtable計算hash是直接使用key的hashcode對table數(shù)組的長度直接進行取模:

int hash = key.hashCode();

int index = (hash & 0x7FFFFFFF) % tab.length;

HashMap計算hash對key的hashcode進行了二次hash,以獲得更好的散列值,然后對table數(shù)組長度取摸:

static int hash(int h) {

? ? h ^= (h >>> 20) ^ (h >>> 12);

? ? return h ^ (h >>> 7) ^ (h >>> 4);

}static int indexFor(int h, int length) {

? ? return h & (length-1);

}

7.判斷是否含有某個鍵

在HashMap 中,null 可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對

應的值為null。當get()方法返回null 值時,既可以表示HashMap 中沒有該鍵,也可

以表示該鍵所對應的值為null。因此,在HashMap 中不能用get()方法來判斷HashM

ap 中是否存在某個鍵,而應該用containsKey()方法來判斷。Hashtable 的鍵值都不能

為null,所以可以用get()方法來判斷是否含有某個鍵。


HashMap和Hashtable都是實現(xiàn)Map接口的,但是:

  1.HashMap允許鍵和值都是null的,而Hashtable不允許鍵和值為null

  2.Hashtable是同步的,而HashMap不是。所以HashMap適用于單線程,而Hashtable適用于多線程

  3.HashMap提供了可供應用迭代的鍵的集合,因此HashMap是快速失敗的,而Hashtable是提供了對鍵的列舉

11 .JVM的永久代中會發(fā)生垃圾回收么?

垃圾回收不會發(fā)生在永久代,如果永久代滿了或者是超過了臨界值,會觸發(fā)完全垃圾回收(Full GC)。如果你仔細查看垃圾收集器的輸出信息,就會發(fā)現(xiàn)永久代也是被回收的。這就是為什么正確的永久代大小對避免Full GC是非常重要的原因。請參考下Java8:從永久代到元數(shù)據(jù)區(qū)

(譯者注:Java8中已經(jīng)移除了永久代,新加了一個叫做元數(shù)據(jù)區(qū)的native內存區(qū))

12 RMI體系結構分以下幾層:

存根和骨架層(StubandSkeletonlayer):這一層對程序員是透明的,它主要負責攔截客戶端發(fā)出的方法調用請求,然后把請求重定向給遠程的RMI服務。

遠程引用層(RemoteReferenceLayer):RMI體系結構的第二層用來解析客戶端對服務端遠程對象的引用。這一層解析并管理客戶端對服務端遠程對象的引用。連接是點到點的。

傳輸層(Transportlayer):這一層負責連接參與服務的兩個JVM。這一層是建立在網(wǎng)絡上機器間的TCP/IP連接之上的。它提供了基本的連接服務,還有一些防火墻穿透策略。

Naming類的bind()和rebind()方法有什么區(qū)別?

bind()方法負責把指定名稱綁定給遠程對象,rebind()方法負責把指定名稱重新綁定到一個新的遠程對象。如果那個名稱已經(jīng)綁定過了,先前的綁定會被替換掉。

JAVA? IO和NIO的區(qū)別


java 常用集合list與Set、Map區(qū)別及適用場景總結

http://blog.csdn.net/qq_22118507/article/details/51576319






后續(xù)學習。。。。。

1 JDK中常用包及其類和功能

JDK中常用包及其類和功能詳細剖析 - CSDN博客

2 HashTable和HashMap的區(qū)別詳解

HashTable和HashMap的區(qū)別詳解 - CSDN博客

3 Object類

1,構造函數(shù)

2,hashCode和equale函數(shù)用來判斷對象是否相同,

3,wait(),wait(long),wait(long,int),notify(),notifyAll()

4,toString()和getClass,

5,clone()

6,finalize()用于在垃圾回收

4 JVM運行內存

https://blog.csdn.net/jing18033612052/article/details/79187709

5 JAVA的原子性&可見性&有序性

https://blog.csdn.net/qq_33689414/article/details/73527438

6 JAVA繼承詳解

Java 繼承(extends)詳解 - CSDN博客

Java之中只允許多層繼承,不允許多重繼承,Java存在單繼承局限

限制一:一個子類只能夠繼承一個父類,存在單繼承局限

限制二:在一個子類繼承的時候,實際上會繼承父類之中的所有操作(屬性、方法),但是需要注意的是,對于所有的非私有(no private)操作屬于顯式繼承(可以直接利用對象操作),而所有的私有操作屬于隱式繼承(間接完成)

限制三:在繼承關系之中,如果要實例化子類對象,會默認先調用父類構造,為父類之中的屬性初始化,之后再調用子類構造,為子類之中的屬性初始化,即:默認情況下,子類會找到父類之中的無參構造方法。

現(xiàn)在默認調用的是無參構造,而如果這個時候父類沒有無參構造,則子類必須通過super()調用指定參數(shù)的構造方法

在任何的情況下,子類都逃不出父類構造的調用,很明顯,super調用父類構造,這個語法和this()很相似:super調用父類構造時,一定要放在構造方法的首行上。


7 修飾符


2018 5 25


8 異常處理機制(throws和throw的區(qū)別)


Java 異常的捕獲與處理詳解(二) - CSDN博客

java異常總結 - CSDN博客

try 塊:用于捕獲異常。其后可接零個或多個catch塊,如果沒有catch塊,則必須跟一個finally塊。

catch 塊:用于處理try捕獲到的異常。

finally 塊:無論是否捕獲或處理異常,finally塊里的語句都會被執(zhí)行。

當在try塊或catch塊中遇到return語句時,finally語句塊將在方法返回之前被執(zhí)行。在以下4種特殊情況下,finally塊不會被執(zhí)行:

1)在finally語句塊中發(fā)生了異常。

2)在前面的代碼中用了System.exit()退出程序。

3)程序所在的線程死亡。

4)關閉CPU。

圖示try、catch、finally語句塊的執(zhí)行:


Throws拋出異常的規(guī)則:

1) 如果是不可查異常(unchecked exception),即Error、RuntimeException或它們的子類,那么可以不使用throws關鍵字來聲明要拋出的異常,編譯仍能順利通過,但在運行時會被系統(tǒng)拋出。

2)必須聲明方法可拋出的任何可查異常(checked exception)。即如果一個方法可能出現(xiàn)受可查異常,要么用try-catch語句捕獲,要么用throws子句聲明將它拋出,否則會導致編譯錯誤

? 3)僅當拋出了異常,該方法的調用者才必須處理或者重新拋出該異常。當方法的調用者無力處理該異常的時候,應該繼續(xù)拋出,而不是囫圇吞棗。

4)調用方法必須遵循任何可查異常的處理和聲明規(guī)則。若覆蓋一個方法,則不能聲明與覆蓋方法不同的異常。聲明的任何異常必須是被覆蓋方法所聲明異常的同類或子類。

throw異常

throw總是出現(xiàn)在函數(shù)體中,用來拋出一個Throwable類型的異常。程序會在throw語句后立即終止,它后面的語句執(zhí)行不到,然后在包含它的所有try塊中(可能在上層調用函數(shù)中)從里向外尋找含有與其匹配的catch子句的try塊。

  我們知道,異常是異常類的實例對象,我們可以創(chuàng)建異常類的實例對象通過throw語句拋出。該語句的語法格式為:

throw new exceptionname;

? ? 例如拋出一個IOException類的異常對象:

? ? throw new IOException;

? ? 要注意的是,throw 拋出的只能夠是可拋出類Throwable 或者其子類的實例對象。下面的操作是錯誤的:

? ? throw new String("exception");

? ? 這是因為String 不是Throwable 類的子類。

如果拋出了檢查異常,則還應該在方法頭部聲明方法可能拋出的異常類型。該方法的調用者也必須檢查處理拋出的異常。

? ? ? 如果所有方法都層層上拋獲取的異常,最終JVM會進行處理,處理也很簡單,就是打印異常消息和堆棧信息。如果拋出的是Error或RuntimeException,則該方法的調用者可選擇處理該異常。


java中常見的異常

1. runtimeException子類:

1、 java.lang.ArrayIndexOutOfBoundsException

數(shù)組索引越界異常。當對數(shù)組的索引值為負數(shù)或大于等于數(shù)組大小時拋出。

2、java.lang.ArithmeticException

算術條件異常。譬如:整數(shù)除零等。

3、java.lang.NullPointerException

空指針異常。當應用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調用null對象的實例方法、訪問null對象的屬性、計算null對象的長度、使用throw語句拋出null等等

4、java.lang.ClassNotFoundException

? ? 找不到類異常。當應用試圖根據(jù)字符串形式的類名構造類,而在遍歷CLASSPAH之后找不到對應名稱的class文件時,拋出該異常。

5、java.lang.NegativeArraySizeException? 數(shù)組長度為負異常

6、java.lang.ArrayStoreException數(shù)組中包含不兼容的值拋出的異常

? 7、java.lang.SecurityException安全性異常

? 8、java.lang.IllegalArgumentException非法參數(shù)異常

2.IOException

IOException:操作輸入流和輸出流時可能出現(xiàn)的異常。

EOFException? 文件已結束異常

FileNotFoundException? 文件未找到異常

3. 其他

ClassCastException? ? 類型轉換異常類

ArrayStoreException? 數(shù)組中包含不兼容的值拋出的異常

SQLException? 操作數(shù)據(jù)庫異常類

NoSuchFieldException? 字段未找到異常

NoSuchMethodException? 方法未找到拋出的異常

NumberFormatException? ? 字符串轉換為數(shù)字拋出的異常

StringIndexOutOfBoundsException 字符串索引超出范圍拋出的異常

IllegalAccessException? 不允許訪問某類異常

InstantiationException? 當應用程序試圖使用Class類中的newInstance()方法創(chuàng)建一個類的實例,而指定的類對象無法被實例化時,拋出該異常


9 JAVA中return的作用

return的常用作用有以下兩種

一種是返回參數(shù)所用的關鍵字,假如一個有返回值的方法執(zhí)行完了之后需要返回一個參數(shù),示例:public string functionTest(){

String a = "abc";

return a;

}

那么這個方法被調用之后就會返回一個值為abc的字符串,string result = functionTest();

第二種用法是,代碼執(zhí)行到此處終止。

比如當代碼執(zhí)行到某個地方會出現(xiàn)幾種結果,然后其中一種結果就不能執(zhí)行后續(xù)代碼,這時候在那里加上一個return就可以終止后面的代碼執(zhí)行。

10 Swing 繼承框架圖

Swing 是在AWT的基礎上構建的一套新的圖形界面系統(tǒng),它提供了AWT 所能夠提供的所有功能,并且用純粹的Java代碼對AWT 的功能進行了大幅度的擴充。swing是單線程的

AWT 是基于本地方法的C/C++程序,其運行速度比較快;Swing是基于AWT 的Java程序,其運行速度比較慢。

11? 解決hashmap的沖突方法

圖片發(fā)自簡書App

1. 開放定址法:線性探測再散列、二次探測再散列、再隨機探測再散列;

2. 再哈希法:換一種哈希函數(shù);

3. 鏈地址法 :在數(shù)組中沖突元素后面拉一條鏈路,存儲重復的元素;

4. 建立一個公共溢出區(qū):其實就是建立一個表,存放那些沖突的元素。

什么時候會產(chǎn)生沖突

HashMap中調用 hashCode() 方法來計算hashCode。

由于在Java中兩個不同的對象可能有一樣的hashCode,所以不同的鍵可能有一樣hashCode,從而導致沖突的產(chǎn)升。

HashMap底層是 數(shù)組和鏈表 的結合體。底層是一個線性數(shù)組結構,數(shù)組中的每一項又是一個鏈表。當新建一個HashMap的時候,就會初始化一個數(shù)組。數(shù)組是 Entry[] 數(shù)組,靜態(tài)內部類。 E ntry就是數(shù)組中的元素,每個 Map.Entry 其實就是一個key-value對,它持有一個指向下一個元素的引用 next ,這就構成了鏈表。所以 很明顯是鏈地址法。

具體過程:

當我們往HashMap中put元素的時候:當程序試圖將一個key-value對放入HashMap中時,

1 . 程序首先根據(jù)該 key 的 hashCode() 返回值決定該 Entry 的存儲位置;

2 . 若 Entry 的存儲位置上為 null ,直接存儲該對象;若不為空,兩個 Entry 的 key 的 hashCode() 返回值相同,那它們的存儲位置相同,

3 . 循環(huán)遍歷鏈表,如果這兩個 Entry 的 key 通過 equals 比較返回 true,新添加 Entry 的 value 將覆蓋集合中原有 Entry 的 value,但key不會覆蓋;如果這兩個 Entry 的 key 通過 equals 比較返回 false,新添加的 Entry 將與集合中原有 Entry 形成 Entry 鏈,而且新添加的 Entry 位于 Entry 鏈的頭部

3 未解決?

JAVA中的ThreadLock? ? https://www.cnblogs.com/chengxiao/p/6152824.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,623評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,241評論 0 62
  • 在一個方法內部定義的變量都存儲在棧中,當這個函數(shù)運行結束后,其對應的棧就會被回收,此時,在其方法體中定義的變量將不...
    Y了個J閱讀 4,547評論 1 14
  • 戰(zhàn)國的時候,有一個很偉大的學問家孟子??伤〉臅r候非常調皮。有一次,他們住在墓地旁邊。孟子就和鄰居的小孩一起學著大...
    何成東閱讀 456評論 0 0
  • 今天在學校老師獎勵的我兩個小紅花,因為我在學校聽老師的話,媽媽知道了也很高興,我以后會更加努力,好好學習,今天還和...
    王靖童閱讀 145評論 0 0

友情鏈接更多精彩內容