日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java基础知识——基础语法

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.靜態代碼塊
當類被加載時,靜態代碼塊會執行,由于類只加載一次,因此靜態代碼塊也只執行一次。通常會使用靜態代碼來對類的成員變量進行初始化。

static{//靜態代碼塊的語法}
  • 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運算符使用格式如下:
( Object reference variable ) instanceof (class/interface type)

如果運算符左側變量所指的對象,是操作符右側類或接口(class/interface)的一個對象,那么結果為真。

下面是一個例子:

String name = "James"; boolean result = name instanceof String; // 由于 name 是 String 類型,所以返回真

如果被比較的對象兼容于右側類型,該運算符仍然返回true。

Java 增強 for 循環

Java5 引入了一種主要用于數組的增強型 for 循環。

Java 增強 for 循環語法格式如下:

for(聲明語句 : 表達式) {//代碼句子 }

1.聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型匹配。其作用域限定在循環語句塊,其值與此時數組元素的值相等。
2.表達式:表達式是要訪問的數組名,或者是返回值為數組的方法。

public class Test {//舉例public static void main(String args[]){int [] numbers = {10, 20, 30, 40, 50};for(int x : numbers ){System.out.print( x );System.out.print(",");}System.out.print("\n");String [] names ={"James", "Larry", "Tom", "Lacy"};for( String name : names ) {System.out.print( name );System.out.print(",");}} }

以上實例編譯運行結果如下:

10,20,30,40,50, James,Larry,Tom,Lacy,

Arrays 類

java.util.Arrays 類能方便地操作數組,它提供的所有方法都是靜態的。

具有以下功能:

  • 給數組賦值:通過 fill 方法。

  • 對數組排序:通過 sort 方法,按升序。

  • 比較數組:通過 equals 方法比較數組中元素值是否相等。

  • 查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。

具體說明請查看下表:

序號方法和說明
1public static int binarySearch(Object[] a, Object key) 用二分查找算法在給定數組中搜索給定值的對象(Byte,Int,double等)。數組在調用前必須排序好的。如果查找值包含在數組中,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。
2public static boolean equals(long[] a, long[] a2) 如果兩個指定的 long 型數組彼此相等,則返回 true。如果兩個數組包含相同數量的元素,并且兩個數組中的所有相應元素對都是相等的,則認為這兩個數組是相等的。換句話說,如果兩個數組以相同順序包含相同的元素,則兩個數組是相等的。同樣的方法適用于所有的其他基本數據類型(Byte,short,Int等)。
3public static void fill(int[] a, int val) 將指定的 int 值分配給指定 int 型數組指定范圍中的每個元素。同樣的方法適用于所有的其他基本數據類型(Byte,short,Int等)。
4public static void sort(Object[] a) 對指定對象數組根據其元素的自然順序進行升序排列。同樣的方法適用于所有的其他基本數據類型(Byte,short,Int等)。

可變參數

JDK 1.5 開始,Java支持傳遞同類型的可變參數給一個方法。

  • 方法的可變參數的聲明如下所示:
typeName... parameterName

在方法聲明中,在指定參數類型后加一個省略號(…) 。
一個方法中只能指定一個可變參數,它必須是方法的最后一個參數。任何普通的參數必須在它之前聲明。

  • 實例
public class VarargsDemo {public static void main(String args[]) {// 調用可變參數的方法printMax(34, 3, 3, 2, 56.5);printMax(new double[]{1, 2, 3});}public static void printMax( double... numbers) {if (numbers.length == 0) {System.out.println("No argument passed");return;}double result = numbers[0];for (int i = 1; i < numbers.length; i++){if (numbers[i] > result) {result = numbers[i];}}System.out.println("The max value is " + result);} }
  • 以上實例編譯運行結果如下:
The max value is 56.5 The max value is 3.0

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 disposed

Java 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基础知识——基础语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。