Time of Update: 2018-12-03
多線程和並發性並不是什麼新內容,但是 Java 語言設計中的創新之一就是,它是第一個直接把跨平台執行緒模式和正規的記憶體模型整合到語言中的主流語言。核心類庫包含一個Thread 類,可以用它來構建、啟動和操縱線程,Java 語言套件括了跨線程傳達並發性約束的構造 —— synchronized 和volatile 。在簡化與平台無關的並發類的開發的同時,它決沒有使並發類的編寫工作變得更繁瑣,只是使它變得更容易了。synchronized 快速回顧把代碼塊聲明為
Time of Update: 2018-12-03
static class 靜態類(Java) 一般情況下是不可以用static修飾類的。如果一定要用static修飾類的話,通常static修飾的是匿名內部類。在一個類中建立另外一個類,叫做成員內部類。這個成員內部類可以靜態(利用static關鍵字修飾),也可以是非靜態。由於靜態內部類在定義、使用的時候會有種種的限制。所以在實際工作中用到的並不多。在開發過程中,內部類中使用的最多的還是非靜態地成員內部類。不過在特定的情況下,靜態內部類也能夠發揮其獨特的作用。 一、靜態內部類的使用目的。 在定
Time of Update: 2018-12-03
//非安全執行緒這種處理方式在單線程的模式下可以很好的運行;但是在多線程模式下,可能產生問題。如果第一個線程發現成員變數為null,準備建立對象;這是第二個線程同時也發現成員變數為null,也會建立新對象。這就會造成在一個JVM中有多個單例類型的執行個體。如果這個單例類型的成員變數在運行過程中變化,會造成多個單例類型執行個體的不一致,產生一些很奇怪的現象。例如,某服務進程通過檢查單例對象的某個屬性來停止多個線程服務,如果存在多個單例對象的執行個體,就會造成部分線程服務停止,部分線程服務不能停止的
Time of Update: 2018-12-03
用maven打包產生jar包,指定Main Class,當運行此jar拋出了: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes原因:在META-INF下會有多餘的以SF結尾的檔案,刪除後不會出現次問題找到原因是因為引入的log4j版本有問題,當引入如下版本:<dependency>
Time of Update: 2018-12-03
在程式開發過程中,需要從鍵盤擷取輸入值是常有的事,但Java它偏偏就沒有像c語言給我們提供的scanf(),C++給我們提供的cin()擷取鍵盤輸入值的現成函數!Java沒有提供這樣的函數也不代表遇到這種情況我們就束手無策,請你看以下三種解決方案吧:以下將列出幾種方法:方法一:從控制台接收一個字元,然後將其列印出來public static void main(String [] args) throws IOException{System.out.print("Enter a Char:")
Time of Update: 2018-12-03
這是網上的一篇文章,我將其中不合適的地方(比如說位計算之類的捨去了,沒那個必要,可讀性很差) 1. 盡量在合適的場合使用單例 使用單例可以減輕載入的負擔,縮短載入的時間,提高載入的效率,但並不是所有地方都適用於單例,簡單來說,單例主要適用於以下三個方面:第一,控制資源的使用,通過線程同步來控制資源的並發訪問;第二,控制執行個體的產生,以達到節約資源的目的;第三,控制資料共用,在不建立直接關聯的條件下,讓多個不相關的進程或線程之間實現通訊。2. 盡量避免隨意使用靜態變數
Time of Update: 2018-12-03
String和StringBuffer的區別,網上資料可以說是數不勝數,但是看到這篇文章,感覺裡面做的小例子很有代表性,所以轉一下,並自己做了一點總結。在java中有3個類來負責字元的操作。 1.Character 是進行單個字元操作的,2.String 對一串字元進行操作。不可變類。3.StringBuffer
Time of Update: 2018-12-03
異常出現的原因1.使用者輸入錯誤:使用者在需要填入資料的時候,將不符合要求的資料進行添加。例如需要輸入一個整型的資料,而使用者卻輸入了一個字串類型的資料。此時就應當提示使用者輸入的格式錯誤,並返回介面重新輸入。2.代碼本身錯誤:進行資料運算時,資料的長度引起的錯誤,或者是數組越界、演算法錯誤、Null
Time of Update: 2018-12-03
2.1整型int i=20;2.2浮點型float f=1.5f;double d=1.5d;2.3字元型char c='a';2.4布爾型boolean b1=false;2.5資料類型的轉換1.自動轉換(小變大,大變小會丟資料)2.強制轉換 (大變小會丟失精度)int i=10;long l=100;i=(int )l;3.隱含轉換(只能是常量)byte b=111;2.6標識符的命名注意“_” 和"$",是可以的int 2i; //2i是錯誤的2.7關鍵字 2.8注釋文檔注釋自訂類型/*
Time of Update: 2018-12-03
overr ide重寫 與 overload重載 當繼承的關係發生了,想用父的方法就用super關鍵字來引用,如果想用新的方法了,就重寫下,來完成新的功能需要。對重載總結如下: •使用重載時只能定義不同的參數列表。 •不能通過重載的方法的傳回型別、存取權限和拋出的異常來進行方法的重載。 •對重寫總結如下: •重寫的方法存在於父類中,也存在於子類中。 •重寫的方法在運行期採用多態的形式。 •重寫的方法不能比被重寫的方法有更高的訪問限制。 •重寫的方法不能比被重寫的方法有更多的異常。對重載總結如下:
Time of Update: 2018-12-03
package cn.com.ch09;public class LampTest {public LampTest(){System.out.println("構造Lamp...");}public void ligth(){System.out.println("發光...");}public static void main(String[] args) {System.out.println("建立白熾燈...");IncandecentLamp iLamp=new
Time of Update: 2018-12-03
成員函數方式package cn.com.ch09;class FatherTest{public void pet(String str){System.out.println(str);}}public class SonTest extends FatherTest {public void hitChild() {System.out.println("這是使用介面實現");}public static void main(String[] args) {SonTest son=new
Time of Update: 2018-12-03
package cn.com.ch12;public class ClassCastExceptionTest {public static void main(String[] args) {Book book=new NovelBook();Object o=book;String s=(String)o;System.out.println(s);}}class Book{private String title;private String content;private String
Time of Update: 2018-12-03
4.1列印三角形public class J_Hello {public static void main(String args[]){for(byte j=0;j<10;j++){for(byte i=10;i>0;i--) //橫向{if(j>=i){System.out.print(i);}elseSystem.out.print(" ");}System.out.println();}}} 1 21 3
Time of Update: 2018-12-03
class Use{String uname;//聲明姓名int uid;//聲明學號int uage;//聲明年齡int uresult;//聲明成績String uaddr;//聲明家庭住址void print(){//父類中的print()方法System.out.println("姓名:"+uname+"\n學號:"+uid+"\n成績:"+uresult+"\n家庭住址:"+uaddr);}}class Use1 extends Use//Use1繼承自Use{boolean
Time of Update: 2018-12-03
public class LampTest {public LampTest(){System.out.println("構造Lamp...");}public void ligth(){System.out.println("發光...");}public static void main(String[] args) {/*System.out.println("建立白熾燈...");IncandecentLamp iLamp=new
Time of Update: 2018-12-03
public class Test1 { final static ObjectStreamClass desc = ObjectStreamClass.lookupAny(MyBean.class); public static void main(String[] args) throws IOException, ClassNotFoundException { File f = new File("f://f"+System.currentTimeMillis()+".ser");
Time of Update: 2018-12-03
java.io.*其是最原始的的最簡的 IO 操作.通常使用簡單. 適合於並發數量不大的情況.其 IO 時是阻塞的狀態.對於多SOCKET 來說可能要每SOCKET建立一個Thread進行處理. 可想而有1000或更多的情況下,伺服器會成什麼樣子. 伺服器都在忙於線程交換了.java.nio.*這是 Java 的非同步IO 處理包. Socket 一般使用select 的機制. 就是cpu 不斷的查詢所有的SOCKET控制代碼,有事件它就報告. 比 java.io.*
Time of Update: 2018-12-03
import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.awt.font.TextHitInfo;import java.awt.im.InputMethodRequests;import java.text.AttributedCharacterIterator;import java.text.AttributedCharacterIterator.Attribute;import
Time of Update: 2018-12-03
適合於Cygwin的JVM(java虛擬機器)啟動器簡 介 你遇到JNI和Cygwin的問題嗎?你用Windoes下的JVM不能載入Cygwin下建立的庫檔案嗎?這篇文章將協助你通過建立JVM啟動器來解決這個問題。我假設你對JNI有一個基本的理解。關於Cygwin Cygwin是一個為Windows平台開發的類Linux環境。它包含兩部分: 1.一個DLL(cygwin1.dll)。它作為Linux API模擬層提供了實質的Linux