第一篇:java個人小結——修飾符
Java中public、protected、private、abstract、static和final 1.public 使用對象:類、接口、成員
介紹:無論它所處在的包定義在哪,該類(接口、成員)都是可訪問的2.private 使用對象:成員
介紹:成員只可以在定義它的類中被訪問
3.static 使用對象:類、方法、字段、初始化函數
介紹:成名為static的內部類是一個頂級類,它和包含類的成員是不相關的。靜態方法是類方法,是被指向到所屬的類而不是類的實例。靜態字段是類字段,無論該字段所在的類創建了多少實例,該字段只存在一個實例被指向到所屬的類而不是類的實例。初始化函數是在裝載類時執行的,而不是在創建實例時執行的。
4.final 使用對象:類、方法、字段、變量
介紹:被定義成final的類不允許出現子類,不能被覆蓋(不應用于動態查詢),字段值不允許被修改。
5.abstract 使用對象:類、接口、方法
介紹:類中包括沒有實現的方法,不能被實例化。如果是一個abstract方法,則方法體為空,該方法的實現在子類中被定義,并且包含一個abstract方法的類必須是一個abstract類 6.protected 使用對象:成員
介紹:成員只能在定義它的包中被訪問,如果在其他包中被訪問,則實現這個方法的類必須是該成員所屬類的子類。
7.native 使用對象:成員
介紹:與操作平臺相關,定義時并不定義其方法,方法的實現被一個外部的庫實現。Object里面的hashCode方法是采用native的,String int這些類是重寫了的
8.strictfp 使用對象:類、方法
介紹:strictfp修飾的類中所有的方法都隱藏了strictfp修飾詞,方法執行的所有浮點計算遵守IEEE 754標準,所有取值包括中間的結果都必須表示為float或double類型,而不能利用由本地平臺浮點格式或硬件提供的額外精度或表示范圍。
9.synchronized 使用對象:方法
介紹:對于一個靜態的方法,在執行之前jvm把它所在的類鎖定;對于一個非靜態類的方法,執行前把某個特定對象實例鎖定。
10.volatile 使用對象:字段
介紹:因為異步線程可以訪問字段,所以有些優化操作是一定不能作用在字段上的。
volatile有時可以代替synchronized。
11.transient 使用對象:字段
介紹:字段不是對象持久狀態的一部分,不應該把字段和對象一起串起.
第二篇:java個人小結(范文模版)
原文[2007年03月25日 星期日 上午 03:04]
Java發展到現在,按應用來分主要分為三大塊:J2SE,J2ME和J2EE。這三塊相互補充,應用范圍不同。
J2SE就是Java2的標準版,主要用于桌面應用軟件的編程;
J2ME主要應用于嵌入是系統開發,如手機和PDA的編程;
J2EE是Java2的企業版,主要用于分布式的網絡程序的開發,如電子商務網站和ERP系統。先學習j2se
要學習j2ee就要先學習j2se,剛開始學習j2se先建議不要使用IDE,然后漸漸的過渡到使用IDE開發,畢竟用它方便嘛。學習j2se推薦兩本書,《java2核心技術一二卷》,《java編程思想》,《java模式》。其中《java編程思想》要研讀,精讀。這一段時間是基本功學習,時間會很長,也可能很短,這要看學習者自身水平而定。
不要被IDE糾纏
在學習java和j2ee過程中,你會遇到五花八門的IDE,不要被他們迷惑,學JAVA的時候,要學語言本身的東西,不要太在意IDE的附加功能,JAVA編程在不同IDE之間的轉換是很容易的,過于的在意IDE的功能反而容易耽誤對語言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加強版WSAD。用好其中一個就可以了,推薦從eclipse入手j2ee。因為Jbuilder更適合于寫j2se程序。
選擇和學習服務器使用配置
當你有了j2se和IDE的經驗時,可以開始j2ee的學習了,web服務器:tomcat,勿庸置疑,tomcat為學習web服務首選。而應用服務器目前主要有三個:jboss、weblogic、websphere。有很多項目開始采用jboss,并且有大量的公司開始做websphere或weblogic向jboss應用服務器的移植(節省成本),這里要說的是,學習tomcat和jboss我認為是首選,也是最容易上手的。學習服務器使用配置最好去詢問有經驗的人(有條件的話),因為他們或許一句話就能解決問題,你自己上網摸索可能要一兩天(我就干過這種傻事),我們應該把主要時間放在學習原理和理論上,一項特定技術的使用永遠代替不了一個人的知識和學問。
學習web知識
如果你是在做電子商務網站等時,你可能要充當幾個角色,這是你還要學習:
html,可能要用到dreamwave等IDE。
Javascript,學會簡單的數據校驗,數據聯動顯示等等
J2eeAPI學習
學習j2eeAPI和學習服務器應該是一個迭代的過程。
先學習jsp和servlet編程,這方面的書很多,我建立看oreilly公司的兩本《jsp設計》和《java servlet編程》,oreilly出的書總是那本優秀,不得不佩服。
學習jdbc數據庫編程,j2ee項目大多都是MIS系統,訪問數據庫是核心。這本應屬于j2se學習中,這里拿出來強調一下。
學習jndi api,它和學習ejb可以結合起來。
學習ejb api,推薦書《精通ejb》
經過上面的這些的學習,大概可以對付一般的應用了。
有人說跟著sun公司的《j2ee tutorial》一路學下來,當然也可以。
學習ejb設計模式和看代碼(最重要)
設計模式是練內功,其重要性可以這么說吧,如果你不會用設計模式的話,你將寫出一堆使用了ejb的垃圾,有慢又是一堆bug,其結果不如不用ejb實現(ejb不等于j2ee)
無論學習什么語言,都應該看大量代碼,你看的代碼量不到一定數量,是學不好j2ee的目前有很多開源的工程可以作為教材:
jive論壇
petstore sun公司
dune sun公司
等等,研讀一個,并把它用到自己的工程中來。
J2ee其他學習
當你漸漸對j2ee了解到一定深度時,你要開始關注當前領域中的一些技術變化,J2ee是一塊百家爭鳴的領域,大家都在這里提出自己的解決方案,例如structs,hiberate,ofbiz等等,學習這些東西要你的項目和目標而定,預先補充一下未嘗不可,但不用涉及太深,畢竟學習原理和理論是最最重要的事。
目前常見j2eeAPI
JavaServer Pages(JSP)技術1.2
Java Servlet技術2.3
JDBC API 2.0
Java XML處理API(JAXP)1.1
Enterprise JavaBeans技術2.0
Java消息服務(JMS)1.0
Java命名目錄接口(JNDI)1.2
Java事務API(JTA)1.0
JavaMail API 1.2
JavaBeans激活架構(JAF)1.0
J2EE連接器體系結構(JCA)1.0
Java認證和授權服務(JAAS)1.0
學習上面的某些API要以你的項目而定,了解所有他們總之是有好處的上面印證了大家說的一句話,java語言本身不難學,但是技術太多,所以學java很費勁?;叵胍幌拢旧厦總€初學者,在剛學習java的時候可能都會問別人這么一句話,你怎么知道的哪個方法(api)在哪個包里的?呵呵,無他,唯手熟爾。
2008年10月29日 星期三 下午 9:29
第三篇:java小結
//1.累加 public class 累加 {
}
//2.階乘
public class 30的階乘 {
} public static void main(String[] args){
} int product=1;for(int i=1;i<=30;i++){ product=*i;} public static void main(String[] args){
} int i=1;for(int counter=1;counter<=100;counter++){ } System.out.println(i);i+=counter;
//3.倒序輸出
法1 用char數組思想 import java.util.Scanner;public class 逆序輸出 {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);// String input[]=new String[4];input=scan.nextLine();// huiche
// String result=“";char[] Array=input[4].toCharArray();for(int i=Array.length-1;i>=0;i--){
} result+=Array[i];} System.out.println(result);} //倒序輸出 法2 用reverse()方法 import javax.swing.JOptionPane;public static void main(String[] args){
}
String a = null;StringBuffer b;//輸入
a=JOptionPane.showInputDialog(a);StringBuffer c1=new StringBuffer(a);b=c1.reverse();System.out.println(b);
//4.輸出100 121 144...361 public class平方輸入數組 {
}
//5.求最大公約數
private static int gys(int m,int n)
{
if(n==0)
return m;else public static void main(String[] args){
} int[] array=new int[10];for(int i=0;i<10;i++){ } array[i]=Math.pow((i+10),2.0);
for(int k=0;k return gcd(n,m%n); } //6.求最小公倍數 public static int gbs(int n1,int n2){ int a =(n1>n2)? n1 : n2; for(int j=a;j<=n1*n2;j++) { if(j%n1==0 && j%n2==0) { return j; } } return 0;} //7.1)十進制整數轉化為二進制整數采用“除2取余,逆序排列” import java.util.Scanner;public class Main { public static void main(String[] args){ //第一行輸入要幾組測試數據 int N=0,a;//N為輸入幾組數據,a為輸入的十進制數字 } String b = null;Scanner scan=new Scanner(System.in);N=scan.nextInt();Main num=new Main();for(int i=1;i<=N;i++){ } a=scan.nextInt();b=num.deimalBinary(a);int d=num.Calcute(b);if(d%2==0)System.out.println(”Even“);else System.out.println(”Odd“); /*一個方法得到二進制數,用遞歸 *用2去除十進制整數,可以得到一個商和余數; *再用2去除商,又會得到一個商和余數,} *如此進行,直到商為零時為止,*然后把先得到的余數作為二進制數的低位有效位,*后得到的余數作為二進制數的高位有效位,依次排列起來 */ public String deimalBinary(int a){ } public int Calcute(String b){ } char[] Array=b.toCharArray();for(int i=0;i } if(Array[i]=='1'){ } counter+=1;return counter; //7.2)十進制小數轉換為二進制小數采用“乘2取整,順序排列” /*用2乘十進制小數,可以得到積,*將積的整數部分取出,再用2乘余下的小數部分,//8.矩陣運算(加減乘)//矩陣運算 *又得到一個積,再將積的整數部分取出,*如此進行,直到積中的小數部分為零,*或者達到所要求的精度為止。 *然后把取出的整數部分按順序排列起來,*先取的整數作為二進制小數的高位有效位,后取的整數作為低位有效位。*/ import java.util.Scanner;public class Main { public static void main(String[] args){ int N1,M1,N2,M2,K;Scanner scan=new Scanner(System.in);N1=scan.nextInt();M1=scan.nextInt();int[][] a=new int[N1][M1];for(int i=0;i for(int j=0;j N2=scan.nextInt();M2=scan.nextInt();int[][] b=new int[N2][M2];for(int i=0;i { } b[i][j]=scan.nextInt();} K=scan.nextInt();if(K==1)//加法 { int[][] c=new int[N1][M1];for(int i=0;i } { for(int j=0;j } System.out.println();} } if(K==2)//減法 { int[][] c=new int[N1][M1];for(int i=0;i } for(int j=0;j for(int j:i){ System.out.print(j+” “);} System.out.println();} } if(K==3)//乘法 { int[][] c=new int[N1][M2];for(int i=0;i } { for(int j=0;j } for(int p=0;p c[i][j]+=a[i][p]*b[p][j];for(int[] i:c)for(int j:i){ System.out.print(j+” “);} System.out.println();} } } } 9.//保留確定位數輸出 import java.text.DecimalFormat;//非四舍五入 DecimalFormat myformat=new DecimalFormat(”#0.00"); myformat.format(double num);//四舍五入,例為保留2位 double f=3.1415926; BigDecimal a=new BigDecimal(f); double af=a.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); Java中各種(類、方法、屬性)訪問修飾符與修飾符的說明 類: 訪問修飾符 修飾符 class 類名稱 extends 父類名稱 implement 接口名稱(訪問修飾符與修飾符的位置可以互換)訪問修飾符 名稱 說明 備注 可以被本項目的所有類訪問(使用),其他項目若想使用public類必須定public 本項目中的類,必義在和類名相同的須將本項目打包為同名文件中 jar包,然后加入到classpath中 默認的訪問權限,可以省略此關鍵 只能被同一個包中(default)字,可以定義在和的類訪問(使用) public類的同一個文件中 修飾符 名稱 說明 備注 使用此修飾符的類final 不能夠被繼承 類只要有一個 如果要使用abstract方法,類就abstract類,之前必須定義為abstract 必須首先建一個繼abstract,但 承abstract類的新abstract類不一定類,新類中實非要保護abstractabstract類中的抽方法不可 象方法。 (abstract也可以 修飾內部類) 綜上知:類的訪問修飾符只有兩個:public、package 但是特殊的情況下:成員內部類和靜態內部類前面還可以有protected、private訪問修飾符(而局部內部類和匿名內部類沒有這兩種修飾符),同時靜態內部類也可以有static修飾符 變量 1.Java中沒有全局變量,只有方法變量、實例變量(類中的非靜態變量)、類變量(類中的靜態變量)。 2.方法中的變量不能夠有訪問修飾符。所以下面訪問修飾符表僅針對于在類中定義的變量。 3.聲明實例變量時,如果沒有賦初值,將被初始化為null(引用類型)或者0、false(原始類型)。 4.可以通過實例變量初始化器(又叫實例塊)來初始化較復雜的實例變量,實例變量初始化器是一個用{}包含的語句塊,在類的構造器被調用時運行,運行于父類構造器之后,構造器之前。 5.類變量(靜態變量)也可以通過類變量初始化器來進行初始化,類變量初始化器(又叫靜態塊)是一個用static{}包含的語句塊,只可能被初始化一次。訪問修飾符 名稱 說明 備注 可以被任何類public 訪問 可以被所有子 子類沒有在同一包protected 類訪問,可以 中也可以訪問 被同一包中的所有類訪問 private 只能夠被當前 類的方法訪問 可以被同一包如果子類沒有在同缺省 中的所有類訪一個包中,也不能無訪問修飾符 問 訪問 ##上面所說的變量都是成員變量,局部變量前是沒有訪問修飾符的,因為局部變量的生命周期只在當前函數中,再聲明訪問修飾符沒有意義 修飾符 名稱 說明 靜態變量(又稱為類變量,其它的稱為實例變量)常量,值只能夠分配一次,不能更改 static final 備注 可以被類的所有實例共享。 并不需要創建類的實例就可以訪問靜態變量 注意不要使用 const,雖然它和C、C++中的const關鍵 字含義一樣 可以同static一起使用,避免對類的每個實例維護一個拷貝 告訴編譯器,在類對象序列化的時候,此變量不需要持久保存 指出可能有多個線程修改此變量,要求編譯器優化以保證對此變量的修改能夠被正確的處理 主要是因為改變量可以通過其它變量來得到,使用它是為了性能的問題 transient volatile 方法 訪問修飾符 修飾符 返回類型 方法名稱(參數列表)throws 違例列表 1.類的構造器方法(也叫構造方法)不能夠有修飾符、返回類型和throws子句 2.類的構造器方法被調用時,它首先調用父類的構造器方法,然后運行實例變量和靜態變量的初始化器,然后才運行構造器本身。3.如果構造器方法沒有顯示的調用一個父類的構造器,那么編譯器會自動為它加上一個默認的super(),而如果父類又沒有默認的無參數構造器,編譯器就會報錯。super必須是構造器方法的第一個子句。4.注意理解private構造器方法的使用技巧。 ###其實構造方法前也可以有public / protected /private 訪問修飾符(這三個默認可以不寫 或者寫 public)和void修飾符(默認可以不寫);但是絕對不能有final、static修飾符 訪問修飾符 名稱 說明 備注 可以從所有類public 訪問 可以被同一包中的所有類訪 子類沒有在同一包protected 問 中也可以訪問 可以被所有子類訪問 只能夠被當前private 類的方法訪問 缺省 可以被同一包如果子類沒有在同無訪問修飾符 中的所有類訪一個包中,也不能 問 修飾符 名稱 訪問 說明 static final abstract native synchronized 備注 提供不依賴于類實例 靜態方法(又的服務 稱為類方法,并不需要創建類的實 其它的稱為 例就可以訪問靜態方 實例方法) 法 注意不要使用const,雖然它和C、C++中的防止任何子 const關鍵字含義一樣 類重載該方 可以同static一起使 法 用,避免對類的每個實例維護一個拷貝 抽象方法,類不能將static方法、中已聲明而final方法或者類的構沒有實現的造器方法聲明為方法 abstract 用該修飾符定義的方法參見Sun的Java 在類中沒有Native接口(JNI),實現,而大多JNI提供了運行時加載數情況下該一個native方法的實方法的實現現,并將其于一個Java是用C、C++類關聯的功能 編寫的。 當一個此方法被調用時,沒有其它線程能夠 多線程的支調用該方法,其它的持 synchronized方法也 不能調用該方法,直到該方法返回 接口 訪問修飾符 interface 接口名稱 extends 接口列表 1.接口不能夠定義其聲明的方法的任何實現 2.接口中的變量總是需要定義為“public static final 接口名稱”,但可以不包含這些修飾符,編譯器默認就是這樣,顯示的包含修飾符主要是為了程序清晰 訪問修飾符 名稱 說明 備注 public 所有 無訪問修飾符(默認)同一個包內 java重要知識點總結如下: 1,抽象,封裝,繼承,多態是面向對象程序設計中得四個特點.2,面向對象得軟件開發大體分為:面向對象的分析,面向對象的設計,面向對象的實現.可概括為如下過程:分析用戶需求,從問題中抽取對象模型;細化模型,設計類,包括類的屬性和類間的 相互關系,同時觀察是否有可以直接引用的已有類或部件;選定一種面向對象的編程語言,具體編碼實現 上一階段類的設計,并在開發過程中引入測試,完善整個解決方案.3,面向對象程序設計方法的優點是:可重用性,可擴展性,可管理性.4,類的定義:class前的修飾符分為訪問控制符和非訪問控制符兩大類.訪問控制符包括public和private.非訪問控制符包括abstract(抽象),final(最終).5,final類是最終類,是不能有子類的類.abstract和final不能同時修飾一個類,因為抽象類本身沒有具體對象,需要派生出子類后在創建子類的對象.而最終類不可能有子類.6,創建對象的格式為: 類名 對象名=new 構造方法(參數);注意前面是類名后面是構造方法.注意構造方法沒有返回類型,也不能寫void,主要用于完成類對象的初始化工作,一般不能直接由編程 直接調用,而是用new運算符來調用.7,如果class前面由public修飾符,則默認構造方法的前面也應該有public修飾符.8,類中有static修飾的域或方法,可用類名或對象名訪問,否則只能用對象名訪問.9,修飾域的訪問控制符可以是:public,private,protected,private protected.非訪問控制符可以是: static,final,volatile(易失域) 10,類變量的最本質的特點是:他們是類的域,不屬于任何一個類的具體對象實例.不是保存在某個對象實例的內存空間中,而是保存在類的內存區域的公共存儲單元中.11,局部變量是在方法體內聲明的,只有當方法被調用時他們才存在,因而只能在本方法內使用,不存在訪問控制符,也不能聲明為靜態變量(static),但可以聲明為final變量.局部變量必須初始化.12,修飾方法的訪問控制符可以是:public,private,protected,private protected,修飾方法的非訪問控制符可以是:static,final,abstract,native(本地方法),synchronized(同步方法)。 13,用static修飾的變量或方法都為類成員,類成員可以用類名或實例名訪問,實例成員只能用實例名來訪問。 14,如果一個類中含有抽象方法,則此類必須為抽象類,如果抽象類的子類不為抽象類,則子類必須實現父類的所有抽象方法。抽象方法不能用靜態方法和最終方法。抽想方法只有函數頭的聲明,而用分號來替代方法體,沒有大括號。如abstract void abstractmethod(); 15,this變量用在一個方法的內部,指向當前對象,當前對象指的是調用當前正在執行的方法的那個對象。super變量是直接指向父類的構造方法,用來引用父類種的變量和方法。(由于他們指的是對象,所以不能通過它來引用類變量和類方法) 16,如果要引用一個包中的多個類,可以用星號來代替。使用星號只能表示本層次的所有類,而不包括子層次下的類。所以經常需要用兩條語句來引入兩個層次的類:import java.awt.*;import java.awt.event.*; 17,訪問修飾符: --類中限定為public的成員可以被所有的類訪問。 --類中先定位private的成員只能被這個類本身訪問。同一個類的不同對象可以訪問對方的private域變量或調用對方的域方法,這是因為訪問保護控制在類的級別上,而不是對象的級別上。 --類中限定為protected的成員可以被這個類本身,它的子類(包括同一個包中和不同包中的子類),以及同一個包中的其他類訪問。 --用private protected修飾的成員可以被該類本身訪問,也可以被該類的所有子類訪問。 --默認訪問控制符規定只能被同一個包中的類訪問和引用,而不能被其他包的類訪問。即他的訪問權限是friendly。 18,注意: ----abstract和private,static,final,native不能并列修飾同一個方法。 ----abstract類中不能有private修飾的域和方法 ----static方法不能處理非static的域。 19,重載方法的參數必須不同,或者是參數個數不同,或者是參數類型不同。重載的多個方法必須返回相同的數據類型。 20,在java中,一個類獲取某一接口定義的功能并不是通過直接繼承這個接口的屬性和方法來實現的。因為接口中的屬性都是常量,接口的方法都是沒有方法體的抽象方法,沒有具體定義操作。第四篇:類、方法、屬性訪問修飾符與修飾符小結
第五篇:java知識點小結