(一)Java基础巩固
抽象類:
抽象類遵循的原則:
(1)abstract關鍵字只能修飾類和方法,不能修飾字段。 (2)抽象類不能被實例化(無法使用new關鍵字創建對象實例),只能被繼承。 (3)抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,枚舉類,和普通類一樣,普通方法一定要實現,變量可以初始化或不初始化但不能初始化后在抽象類中重新賦值或操作該變量(只能在子類中改變該變量)。 (4)抽象類中的抽象方法(加了abstract關鍵字的方法)不能實現。 (5)含有抽象方法的類必須定義成抽象類。 ?擴展:抽象類和接口的區別,做個總結吧:
(1)接口是公開的,里面不能有私有的方法或變量,是用于讓別人使用的,而抽象類是可以有私有方法或私有變量的。 (2)abstract class 在 Java 語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是,一個類卻可以實現多個interface,實現多重繼承。接口還有標識(里面沒有任何方法,如Remote接口)和數據共享(里面的變量全是常量)的作用。 (3)在abstract class 中可以有自己的數據成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的數據成員(也就是必須是 static final的,不過在 interface中一般不定義數據成員),所有的成員方法默認都是 public abstract 類型的。 (4)abstract class和interface所反映出的設計理念不同。其實abstract class表示的是"is-a"關系,interface表示的是"has-a"關系。 (5)實現接口的一定要實現接口里定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法,一般的應用里,最頂級的是接口,然后是抽象類實現接口,最后才到具體類實現。抽象類中可以有非抽象方法。接口中則不能有實現方法。 (6)接口中定義的變量默認是public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。抽象類中的變量默認是 friendly 型,其值可以在子類中重新定義,也可以在子類中重新賦值一:java概述:
Java的三種技術架構:?
JAVAEE:Java?Platform?Enterprise?Edition,開發企業環境下的應用程序,主要針對web程序開發;
JAVASE:Java?Platform?Standard?Edition,完成桌面應用程序的開發,是其它兩者的基礎;
JAVAME:Java?Platform?Micro?Edition,開發電子消費產品和嵌入式設備,如手機中的程序;
Java命令的作用:
Java分為兩部分:一個是編譯,一個是運行。
Javac:負責的是編譯部分,當執行javac時,會啟動java編譯器程序,對.java文件進行編譯。形成jvm可以識別的的字節碼文件
Java:負責執行部分,會啟動jvm對于javac變異的.class文件進行執行。
?
二.Java語法基礎:
1.關鍵字:Java語言賦予特殊含義的單詞:
Java 關鍵字列表 (依字母排序 共51組):
2.保留字:Java預留的關鍵字
Java 保留字列表 (依字母排序 共14組) :
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var ,goto ,const,null?
3.標識符:自定義名稱,類名,變量名,函數名包含0-9,a-z,&,_;
1):數字不能開頭
2):不可以使用關鍵字
4.常量與變量:
1):常量程序中不可變化的數據。作用:代表常數,便于程序的修改,增加可讀性
Java語法中:常量首先聲明,然后在賦值,但是只能賦值一次。需要在變量前面添加Final關鍵字
常量名必須大寫。
2):變量代表程序的狀態。變量在使用必須首先聲明,格式:數據類型 變量名稱 = 值;變量必須初始化才可用。
※final詳情:
設計需求:有些情況必須使用Final關鍵字,比如方法中匿名內部類的參數傳遞
final成員變量表示常量,只能被賦值一次。賦值后不可以在變。
列:Final StringBuffer str = new StringBuffer("hello world");
當:str = new StringBuffer("");則報錯,當str.append("aa");則可以編譯
Final方法不能被子類修改,但是可以繼承。
Final類不能被技能,沒有子類,Final類所有方法都是Final.如String類。
在接口(interface)里變量都是public static final。
變量的作用域和生存期:
變量的作用域:作用域從變量定義的位置開始,到該變量所在大括號結束。
生命周期:在他定義的位置在內存中,到作用域結束在內存中消失。
5:數據類型
1):基本數據類型:byte、char、short為平級、int、float、long、double、Boolean
2):引用數據類型:數組,類,接口。
Boolean類型數據只能為true或false。默認值為false,但是必須初始化才能使用。
Char類型用單引號''包括起來單個字符。Java字符蠶蛹Unicode編碼。默認值:'\u0000'
整數型(Byte、Short、int、long)
浮點數(float、double)Java浮點型常量默認為Double型,如果聲明Float需在數字后家F
6:運算符號
算數運算符、關系運算符、邏輯運算符、位運算符。
算數運算符:+ ?- ?* ?/ ?% ?++ ?--
?
public class Test003 {public static void main(String[] args) {int i = 5;System.out.println(i++); //5System.out.println(++i); //7System.out.println(i); //7System.out.println(--i); //6System.out.println(i--); //6System.out.println(i); //5 } }
?
關系運算符:== ?!= ?> ?>= ?< ?<=?
對應java的基本數據類類型:Integer、Float、Boolean、Character、Double、Short、Byte、Long
1):數值計算中語法現象——“晉升”,即:byte、short和char(低于int的數據類型)進行算術運算后,結果會自動提升成int類型;
2):兩個char型運算時,自動轉換為int型;當char與別的類型運算時,也會先自動轉換為int型的,再做其它類型的自動轉換;
3):算數運算可以加入小括號"()"提高優先級,優先小括號內運算,再其他運算符運算;
4):算數運算前操作數變量必須賦值,反之,報語法錯誤。
邏輯運算符:&& ?|| ?! ?^ ?& ?|
public class Test003 {public static void main(String[] args) {boolean t = true;boolean f = false;System.out.println(t && f); //false,短路與運算符,若運算符左側為false則不計算右側的表達式System.out.println(t || f); //true,短路或運算符,若運算符左側為true則不計算右側的表達式System.out.println(t & f); //false,與運算符,不管左側是否為false都要計算右側的表達式System.out.println(t | f); //true,或運算符,不管左側是否為true都要計算右側的表達式System.out.println(t ^ f); //true,異或運算符,只要左右兩側不相同則為true,反之為falseSystem.out.println(!f); //true,取反運算符 } }
位運算符:& ?| ?~ ?^ ?>> ?<< ?>>>
?
public class Test003 {public static void main(String[] args) {//在位運算符中1相當于true,0相當于falseint b1 = 6; //二進制為00000000 00000000 00000000 00000110int b2 = 11; //二進制為00000000 00000000 00000000 00001011System.out.println(b1 & b2); //按位與運算符,二進制為00000000 00000000 00000000 00000010,結果為2System.out.println(b1 | b2); //按位或運算符,二進制為00000000 00000000 00000000 00001111,結果為15System.out.println(b1 ^ b2); //按位異或運算符,二進制為00000000 00000000 00000000 00001101,結果為13System.out.println(~b1); //按位取反運算符,二進制為11111111 11111111 11111111 11111001,結果為-7System.out.println(b1 << 2); //左移位運算符,二進制為00000000 00000000 00000000 00011000,結果為24int b3 = -14; //二進制為11111111 11111111 11111111 11110010System.out.println(b3 >> 2); //帶符號右移位運算符,二進制為11111111 11111111 11111111 11111100,結果為-4System.out.println(b3 >>> 2); //無符號右移位運算符,二進制為00111111 11111111 11111111 11111100,結果為1073741820 } }
?
條件運算符(三目運算符):<表達式1> ?<表達式2> : <表達式3>
int a = 55,b = 132,res; res = a > b ? a : b; System.out.println(res);
字符串(+)運算符:當操作數是字符串時,加(+)運算符用來合并兩個字符串;當加(+)運算符的一邊是字符串,另一邊是數值時,機器將自動將數值轉換為字符串,并連接為一個字符串。
String a ="aa"; int c = 555; String b = a+"bbb"+c; System.out.println(b);
結果:aabbb555
對象運算符instanceof:對象運算符instanceof用來測試一個指定對象是否是指定類(或它的子類)的實例,若是則返回true,否則返回false。
String s = new String("sa"); if(s instanceof Object){ System.out.println("String is object class"); }
?
?
8. 一維數組
public class Test003 {public static void main(String[] args) {int[] i; //聲明一個整型的一維數組變量int ii[]; //聲明一個整型的一維數組變量i = new int[5]; //創建一個長度為5的一維數組對象,并將變量i指向該對象float[] f = new float[5]; //直接創建一個長度為5的單精度浮點型一維數組對象,并將變量f指向該對象double[] d = {1, 2, 3.4, 4.5}; //直接初始化一個一維數組元素 System.out.println(d[3]); //通過數組下標來獲取數組內的元素,數組下標從0開始,結果為4.5System.out.println(f[0]); //當創建出一個數組對象時,該對象內的數組元素為該數據類型的默認值,所以此處結果為0.0System.out.println(i[5]);//當通過數組下標來獲取數組內元素時,[]內的值>=數組長度則報異常java.lang.ArrayIndexOutOfBoundsException(數組下標越界)System.out.println(ii[0]); //若一個數組變量只聲明而未指向某一個具體的數組對象時,編譯出錯System.out.println(d.length); //得到該數組的長度,結果為4 } }
10. 二維數組
public class Test003 {public static void main(String[] args) {int[][] i; //聲明一個整型的二維數組變量int ii[][]; //聲明一個整型的二維數組變量int[] iii[]; //聲明一個整型的二維數組變量i = new int[5][2]; //創建一個長度為5的二維數組對象,并將變量i指向該對象float[][] f = new float[5][2]; //直接創建一個長度為5的單精度浮點型二維數組對象,并將變量f指向該對象double[][] d = {{1}, {2,3}, {4,5,6}, {7,8,9,10}}; //直接初始化一個二維數組元素 System.out.println(d[3][1]); //通過數組下標來獲取數組內的元素,數組下標從0開始,結果為8System.out.println(f[0][0]); //當創建出二個數組對象時,該對象內的數組元素為該數據類型的默認值,所以此處結果為0.0System.out.println(i[5][0]);//當通過數組下標來獲取數組內元素時,[]內的值>=數組長度則報異常java.lang.ArrayIndexOutOfBoundsException(數組下標越界)System.out.println(ii[0][0]); //若一個數組變量只聲明而未指向某一個具體的數組對象時,編譯出錯System.out.println(d.length); //得到該數組的長度,結果為4System.out.println(d[2].length); //得到二位數組內的下標為2的那個一維數組的長度 } }
流程控制語句(if,switch,for,while,do...while)
11.條件分支語句
public class Test003 {public static void main(String[] args) {int[] score = new int[5];score[0] = -7;score[1] = 65;score[2] = 80;score[3] = 90;score[4] = 59;for(int i=0; i<score.length; i++) {if(score[i]>=0 && score[i]<60) {System.out.println("不及格");}else if(score[i]>=60 && score[i]<80) {System.out.println("及格");}else if(score[i]>=80 && score[i]<90) {System.out.println("良");}else if(score[i]>=90 && score[i]<100) {System.out.println("優");}else {System.out.println("成績異常");}}char ch = 'a';switch(ch) { //switch括號內只支持 byte,short,int,char,enum五種數據類型,但是JDK1.7版本增加了String類型,所以相對于JDK1.7而言就是六種了case 'A': //case為switch語句的入口,break為出口,從入口開始執行,直到遇到出口或代碼執行完畢才結束case 'a':System.out.println("優");break;case 'B':case 'b':System.out.println("良");break;case 'C':case 'c':System.out.println("及格");break;default: //若上述條件均不匹配,則進default開始執行語句System.out.println("不及格");}} }
12. 循環語句
public class Test003 {public static void main(String[] args) {int res = 0;out: //out是一個標號,告訴java從哪里開始執行程序for(int i=1; i<=10; i++) {if(i==3) continue out; //continue終止本次循環,執行下次循環if(i==5) break out; //break跳出循環res = res + i;}System.out.println(res); //結果為1+2+4=7int res2 = 0;int i = 1;in:do{if(i==3) continue in; //continue終止本次循環,執行下次循環if(i==5) break in; //break跳出循環res2 = res2 + i;i++;}while(i<=10);System.out.println(res2);} }
轉載于:https://www.cnblogs.com/Jonecmnn/p/6367767.html
總結
以上是生活随笔為你收集整理的(一)Java基础巩固的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前保险杠喷漆多少钱啊?
- 下一篇: 关于.NET玩爬虫这些事 【初码干货】