java基础知识——基础语法
java的基本語法格式
[修飾符] class 類名{程序代碼 }方法的定義
一般情況下,定義一個方法包含以下語法:
修飾符 返回值類型 方法名(參數類型 參數名){...方法體...return 返回值; }JAVA標識符規范:
1.標識符可以由任意順序的大小寫字母、數字、下劃線(_)和美元符號組成,不能以數字開頭。
2.包名所有字母一律小寫。
3.類名和接口名每個單詞首字母都要大寫。
4.常量名所有字母都要大寫,單詞之間用下劃線連接。
5.變量名和方法名的第一個單詞首字母小寫,從第二個單詞開始每個單詞首字母大寫,變量名不能使用java中的關鍵字。
6.我們的變量名最好是用英文單詞來描述。(見名知意)
Java駝峰式命名法:
1、變量名必須為有意義的單詞
2、變量名如果只有一個單詞,則小寫
3、如果有2個以及多個單詞,則從第二個單詞開始首字母大寫
給類和方法起名的時候,盡量不要用中文拼音,太長而且不好看。可以借鑒API里面的類似起名。
類名:表示一類對象的抽象,通常是名詞,形容詞+名詞,名詞+名詞,通常一個英文單詞能表示,組合中每個單詞首字母大寫(AbstractStringBuilder.class)。類名稱力求表意,能明確的表達所對應的意思。最好能夠體現和其他名稱的區分度,比如InputStream和OutputStream,而且容易擴展和分門別類:FileInputStream、InputStreamReader。
方法名:表示對象的行為,通常是動詞,或者動詞+賓語,動詞的首字母小寫,其他單詞首字母大寫(doSomething())。方法起名根據用法,比如判斷(isOK())、能否(canRead())、獲得(getThings())、從…(cutFrom(…))、變成(toString())、無對象行為(run())和有對象行為(goto(Object where)等等,好記很多。
最后記一記常用的單詞:
outer外部、inner內部、append附加、sub(子的)和sup(父的)、before之前、width寬、height高、default默認、switch匹配、index位置、count計數、encapsulation封裝、init初始、show展示、para參數、sort排序、trim整理、buffer緩沖、ignore忽視、concatenate連接、submit提交、parse解析、confirm確認、set設置、none空無、scroll滾動、on當…、to變成、of什么的、at在…、max最大的、min最小的、add加、only只、constructor構造器、overload重載、override重寫、position位置、inheritance繼承、print打印、log日志、undo撤銷、contain包含、result結果、connect連接、create創建、charset字符、translate翻譯、direct方向、POST推送、channel頻道、attribute屬性、content內容、redo重做、edit編輯、format格式化、validate驗證、invalidate失效、view視圖、control控制、active活躍的、bean實體、order次序、simple簡單、access訪問、factory工廠、client客戶端、prefix前綴、proxy代理、action動作、frame框、mapping映射、forward向前、backward向后、scope范圍、dispatch分發、operate操作、iterate迭代、Iterator迭代器、condition條件、fresh刷新、member成員、fetch取得、identity標識、query查詢、exact精確的、inverse反轉、context上下文、aspect方面、orient朝向、advice通知、interceptor攔截器、target目標、focus焦點、remove移除、remote遠程、synchronize同步、asynchronize異步、schedule時間表、point分數、total全部的、reference關系、insert插入、compare對比、rectangle矩形、triangle三角形、circle圈、invert倒轉、since從…之后、date日期等。
API源碼,返回值->方法名->參數名->注釋->說明,都是最常用的單詞,看多了英語也會有很大提升。
Java修飾符
像其他語言一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符:
- 訪問控制修飾符 : default, public , protected, private
- 非訪問控制修飾符 : final, abstract, static, synchronized
Java 變量
Java 中主要有如下幾種類型的變量
- 局部變量
- 類變量(靜態變量)
- 成員變量(非靜態變量)
Java 關鍵字
下面列出了 Java 關鍵字。這些關鍵字不能用于常量、變量、和任何標識符的名稱。
| 訪問控制 | private | 私有的 |
| protected | 受保護的 | |
| public | 公共的 | |
| 類、方法和變量修飾符 | abstract | 聲明抽象 |
| class | 類 | |
| extends | 擴充,繼承 | |
| final | 最終值,不可改變的 | |
| implements | 實現(接口) | |
| interface | 接口 | |
| native | 本地,原生方法(非 Java 實現) | |
| new | 新,創建 | |
| static | 靜態 | |
| strictfp | 嚴格,精準 | |
| synchronized | 線程,同步 | |
| transient | 短暫 | |
| volatile | 易失 | |
| 程序控制語句 | break | 跳出循環 |
| case | 定義一個值以供 switch 選擇 | |
| continue | 繼續 | |
| default | 默認 | |
| do | 運行 | |
| else | 否則 | |
| for | 循環 | |
| if | 如果 | |
| instanceof | 實例 | |
| return | 返回 | |
| switch | 根據值選擇執行 | |
| while | 循環 | |
| 錯誤處理 | assert | 斷言表達式是否為真 |
| catch | 捕捉異常 | |
| finally | 有沒有異常都執行 | |
| throw | 拋出一個異常對象 | |
| throws | 聲明一個異常可能被拋出 | |
| try | 捕獲異常 | |
| 包相關 | import | 引入 |
| package | 包 | |
| 基本類型 | boolean | 布爾型 |
| byte | 字節型 | |
| char | 字符型 | |
| double | 雙精度浮點 | |
| float | 單精度浮點 | |
| int | 整型 | |
| long | 長整型 | |
| short | 短整型 | |
| 變量引用 | super | 父類,超類 |
| this | 本類 | |
| void | 無返回值 | |
| 保留關鍵字 | goto | 是關鍵字,但不能使用 |
| const | 是關鍵字,但不能使用 | |
| null | 空 |
接口
在 Java 中,接口可理解為對象間相互通信的協議。接口在繼承中扮演著很重要的角色。
接口只定義派生要用到的方法,但是方法的具體實現完全取決于派生類。
Java語言支持的變量類型
- 類變量:獨立于方法之外的變量,用 static 修飾。
1.類變量也稱為靜態變量,在類中以 static 關鍵字聲明,但必須在方法之外。
2.靜態變量除了被聲明為常量外很少使用。常量是指聲明為public/private,final和static類型的變量。常量初始化后不可改變。
3.靜態變量儲存在靜態存儲區。經常被聲明為常量,很少單獨使用static聲明變量。
4.與實例變量具有相似的可見性。但為了對類的使用者可見,大多數靜態變量聲明為public類型。
5.默認值和實例變量相似。數值型變量默認值是0,布爾型默認值是false,引用類型默認值是null。變量的值可以在聲明的時候指定,也可以在構造方法中指定。此外,靜態變量還可以在靜態語句塊中初始化。
6.靜態變量可以通過:ClassName.VariableName的方式訪問。
7.類變量被聲明為public static final類型時,類變量名稱一般建議使用大寫字母。如果靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。
- 實例變量:獨立于方法之外的變量,不過沒有 static 修飾。
1.實例變量聲明在一個類中,但在方法、構造方法和語句塊之外;
2.當一個對象被實例化之后,每個實例變量的值就跟著確定
3.訪問修飾符可以修飾實例變量;
4.實例變量對于類中的方法、構造方法或者語句塊是可見的。一般情況下應該把實例變量設為私有。通過使用訪問修飾符可以使實例變量對子類可見;
5.實例變量具有默認值。數值型變量的默認值是0,布爾型變量的默認值是false,引用類型變量的默認值是null。變量的值可以在聲明時指定,也可以在構造方法中指定;
6.實例變量可以直接通過變量名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName。
- 局部變量:類的方法中的變量。
1.局部變量聲明在方法、構造方法或者語句塊中;
2.訪問修飾符不能用于局部變量;
3.局部變量是在棧上分配的。
4.局部變量沒有默認值,所以局部變量被聲明后,必須經過初始化,才可以使用。
非訪問修飾符
- static 修飾符,用來修飾類方法和類變量。
1.靜態變量:
static 關鍵字用來聲明獨立于對象的靜態變量,無論一個類實例化多少對象,它的靜態變量只有一份拷貝。 靜態變量也被稱為類變量。局部變量不能被聲明為 static 變量。
2.靜態方法:
static 關鍵字用來聲明獨立于對象的靜態方法。靜態方法不能使用類的非靜態變量。靜態方法從參數列表得到數據,然后計算這些數據。
3.靜態代碼塊
當類被加載時,靜態代碼塊會執行,由于類只加載一次,因此靜態代碼塊也只執行一次。通常會使用靜態代碼來對類的成員變量進行初始化。
- final 修飾符,用來修飾類、方法和變量,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。
1.final 變量:
(1).final 表示"最后的、最終的"含義,變量一旦賦值后,不能被重新賦值。被 final 修飾的實例變量必須顯式指定初始值。
(2).final 修飾符通常和 static 修飾符一起使用來創建類常量。
2.final 方法
(1).父類中的 final 方法可以被子類繼承,但是不能被之類重寫。
(2).聲明 final 方法的主要目的是防止該方法的內容被修改。
3.final 類
final 類不能被繼承,沒有類能夠繼承 final 類的任何特性。
- abstract 修飾符,用來創建抽象類和抽象方法。
1.抽象類:
(1).抽象類不能用來實例化對象,聲明抽象類的唯一目的是為了將來對該類進行擴充。
(2).一個類不能同時被 abstract 和 final 修飾。如果一個類包含抽象方法,那么該類一定要聲明為抽象類,否則將出現編譯錯誤。
(3).抽象類可以包含抽象方法和非抽象方法。
2.抽象方法
(1).抽象方法是一種沒有任何實現的方法,該方法的的具體實現由子類提供。
抽象方法不能被聲明成 final 和 static。
(2).任何繼承抽象類的子類必須實現父類的所有抽象方法,除非該子類也是抽象類。
(3).抽象方法的聲明以分號結尾,例如:public abstract sample();。
- synchronized 和 volatile 修飾符,主要用于線程的編程。
1.synchronized 關鍵字聲明的方法同一時間只能被一個線程訪問。synchronized 修飾符可以應用于四個訪問修飾符。
2.transient 修飾符
序列化的對象包含被 transient 修飾的實例變量時,java 虛擬機(JVM)跳過該特定的變量。
該修飾符包含在定義變量的語句中,用來預處理類和變量的數據類型。
3.volatile 修飾符
volatile 修飾的成員變量在每次被線程訪問時,都強制從共享內存中重新讀取該成員變量的值。而且,當成員變量發生變化時,會強制線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。一個 volatile 對象引用可能是 null。
instanceof 運算符
該運算符用于操作對象實例,檢查該對象是否是一個特定類型(類類型或接口類型)。
- instanceof運算符使用格式如下:
如果運算符左側變量所指的對象,是操作符右側類或接口(class/interface)的一個對象,那么結果為真。
下面是一個例子:
String name = "James"; boolean result = name instanceof String; // 由于 name 是 String 類型,所以返回真如果被比較的對象兼容于右側類型,該運算符仍然返回true。
Java 增強 for 循環
Java5 引入了一種主要用于數組的增強型 for 循環。
Java 增強 for 循環語法格式如下:
for(聲明語句 : 表達式) {//代碼句子 }1.聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型匹配。其作用域限定在循環語句塊,其值與此時數組元素的值相等。
2.表達式:表達式是要訪問的數組名,或者是返回值為數組的方法。
以上實例編譯運行結果如下:
10,20,30,40,50, James,Larry,Tom,Lacy,Arrays 類
java.util.Arrays 類能方便地操作數組,它提供的所有方法都是靜態的。
具有以下功能:
-
給數組賦值:通過 fill 方法。
-
對數組排序:通過 sort 方法,按升序。
-
比較數組:通過 equals 方法比較數組中元素值是否相等。
-
查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。
具體說明請查看下表:
| 1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在給定數組中搜索給定值的對象(Byte,Int,double等)。數組在調用前必須排序好的。如果查找值包含在數組中,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。 |
| 2 | public static boolean equals(long[] a, long[] a2) 如果兩個指定的 long 型數組彼此相等,則返回 true。如果兩個數組包含相同數量的元素,并且兩個數組中的所有相應元素對都是相等的,則認為這兩個數組是相等的。換句話說,如果兩個數組以相同順序包含相同的元素,則兩個數組是相等的。同樣的方法適用于所有的其他基本數據類型(Byte,short,Int等)。 |
| 3 | public static void fill(int[] a, int val) 將指定的 int 值分配給指定 int 型數組指定范圍中的每個元素。同樣的方法適用于所有的其他基本數據類型(Byte,short,Int等)。 |
| 4 | public static void sort(Object[] a) 對指定對象數組根據其元素的自然順序進行升序排列。同樣的方法適用于所有的其他基本數據類型(Byte,short,Int等)。 |
可變參數
JDK 1.5 開始,Java支持傳遞同類型的可變參數給一個方法。
- 方法的可變參數的聲明如下所示:
在方法聲明中,在指定參數類型后加一個省略號(…) 。
一個方法中只能指定一個可變參數,它必須是方法的最后一個參數。任何普通的參數必須在它之前聲明。
- 實例
- 以上實例編譯運行結果如下:
finalize() 方法
Java 允許定義這樣的方法,它在對象被垃圾收集器析構(回收)之前調用,這個方法叫做 finalize( ),它用來清除回收對象。
例如,你可以使用 finalize() 來確保一個對象打開的文件被關閉了。
在 finalize() 方法里,你必須指定在對象銷毀時候要執行的操作。
finalize() 一般格式是:
protected void finalize() {// 在這里終結代碼 }關鍵字 protected 是一個限定符,它確保 finalize() 方法不會被該類以外的代碼調用。
當然,Java 的內存回收可以由 JVM 來自動完成。如果你手動使用,則可以使用上面的方法。
實例
public class FinalizationDemo { public static void main(String[] args) { Cake c1 = new Cake(1); Cake c2 = new Cake(2); Cake c3 = new Cake(3); c2 = c3 = null; System.gc(); //調用Java垃圾收集器} } class Cake extends Object { private int id; public Cake(int id) { this.id = id; System.out.println("Cake Object " + id + "is created"); } protected void finalize() throws java.lang.Throwable { super.finalize(); System.out.println("Cake Object " + id + "is disposed"); } }運行以上代碼,輸出結果如下:
$ javac FinalizationDemo.java $ java FinalizationDemo Cake Object 1is created Cake Object 2is created Cake Object 3is created Cake Object 3is disposed Cake Object 2is disposedJava Scanner 類
java.util.Scanner 是 Java5 的新特征,我們可以通過 Scanner 類來獲取用戶的輸入。
下面是創建 Scanner 對象的基本語法:
Scanner s = new Scanner(System.in);next() 與 nextLine() 區別
- next():
1、一定要讀取到有效字符后才可以結束輸入。
2、對輸入有效字符之前遇到的空白,next() 方法會自動將其去掉。
3、只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結束符。
next() 不能得到帶有空格的字符串。
- nextLine():
1、以Enter為結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字符。
2、可以獲得空白。
如果要輸入 int 或 float 類型的數據,在 Scanner 類中也有支持,但是在輸入之前最好先使用 hasNextXxx() 方法進行驗證,再使用 nextXxx() 來讀取:
總結
以上是生活随笔為你收集整理的java基础知识——基础语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称拼多多 Temu 将明年成交额目标
- 下一篇: 尼尔机械纪元安卓(纪元安卓)