1、注釋:
java代碼注釋分3種:
單行注釋://注釋信息
多行注釋: /*注釋信息*/
文檔注釋:/**注釋信息*/
public class TestComments {// 這是單行注釋,用于注釋單行代碼或解釋代碼功能/* 這是多行注釋,用于注釋多行代碼或詳細說明代碼功能這里可以包含多行文字*//*** 這是文檔注釋,用于生成文檔,包括類、方法、參數和返回值的描述*/public static void main(String[] args) {// 單行注釋示例int x = 5; // 定義并初始化變量x為5/* 多行注釋示例定義并初始化變量y為10*/int y = 10;// 輸出變量x和y的值System.out.println("x = " + x);System.out.println("y = " + y);}
}
2、關鍵字:
Java關鍵字是預先定義的有特別意義的單詞,它們對Java的編譯器有特殊的意義,用于表示數據類型、程序結構等。Java一共有53個關鍵字,包括48個關鍵字和2個保留字(未來可能用作關鍵字),以及3個特殊直接量。
以下是Java中的關鍵字及其簡要說明:
關鍵字? ? ? ?說明
abstract?? ?表明類或者成員方法具有抽象屬性
assert?? ?斷言,用來進行程序調試
boolean?? ?基本數據類型之一,聲明布爾類型的關鍵字
break?? ?提前跳出一個塊
byte?? ?基本數據類型之一,字節類型
case?? ?用在switch語句之中,表示其中的一個分支
catch?? ?用在異常處理中,用來捕捉異常
char?? ?基本數據類型之一,字符類型
class?? ?聲明一個類
continue?? ?回到一個塊的開始處
default?? ?默認,例如用在switch語句中,表明一個默認的分支
do?? ?用在do-while循環結構中
double?? ?基本數據類型之一,雙精度浮點數類型
else?? ?用在條件語句中,表明當條件不成立時的分支
enum?? ?枚舉
extends?? ?表明一個類型是另一個類型的子類型
final?? ?表示不可變,最終的
finally?? ?用于處理異常情況,用來聲明一個基本肯定會被執行到的語句塊
float?? ?基本數據類型之一,單精度浮點數類型
for?? ?一種循環結構的引導詞
if?? ?條件語句的引導詞
implements?? ?表明一個類實現了給定的接口
import?? ?表明要訪問指定的類或包
int?? ?基本數據類型之一,整數類型
interface?? ?接口
instanceof?? ?用來測試一個對象是否是指定類型的實例對象
long?? ?基本數據類型之一,長整數類型
native?? ?用來聲明一個方法是由與計算機相關的語言(如C/C++語言)實現的
new?? ?用來創建新實例對象
package?? ?包
private?? ?私用模式,訪問控制修飾符
protected?? ?保護模式,訪問控制修飾符
public?? ?公用模式,訪問控制修飾符
return?? ?從成員方法中返回數據
short?? ?基本數據類型之一,短整數類型
static?? ?表明具有靜態屬性
strictfp?? ?用來聲明FP_strict(單精度或雙精度浮點數)表達式遵循IEEE 754算術規范
super?? ?表明當前對象的父類型的引用或者父類型的構造方法
switch?? ?分支語句結構的引導詞
synchronized?? ?表明一段代碼需要同步執行
this?? ?指向當前實例對象的引用
throw?? ?拋出一個異常對象
throws?? ?聲明在當前定義的成員方法中所有需要拋出的異常
transient?? ?聲明不用序列化的成員域
try?? ?嘗試一個可能拋出異常的程序塊
void?? ?聲明當前成員方法沒有返回值
volatile?? ?表明兩個或者多個變量必須同步地發生變化
while?? ?用在循環結構中2個保留字
Java中有兩個保留字,它們目前不是關鍵字,但未來可能用作關鍵字:const:保留關鍵字,沒有具體含義,是一個類型修飾符,使用const聲明的對象不能更新。
goto:保留關鍵字,沒有具體含義,指定跳轉到標簽。
3個特殊直接量
雖然它們不是關鍵字,但在Java中有特殊含義:true:布爾類型的真值
false:布爾類型的假值
null:空值
3、數據類型:
Java數據類型主要分為兩大類:基本數據類型和引用數據類型。
一、基本數據類型
基本數據類型是Java中不可變的值類型,它們直接包含數據值,并且存儲在棧內存中。Java共有八種基本數據類型,具體可以分為以下三類:
數值類型:
byte:字節型,占用1個字節(8位),取值范圍為-128到127。
short:短整型,占用2個字節(16位),取值范圍為-32768到32767。
int:整型,占用4個字節(32位),取值范圍為-2147483648到2147483647。這是最常用的整數類型。
long:長整型,占用8個字節(64位),取值范圍為-9223372036854775808到9223372036854775807。當數值很大或很小,超出一個int的范圍時,可以使用long。
float:單精度浮點型,占用4個字節(32位),用于存儲帶小數點的數字。
double:雙精度浮點型,占用8個字節(64位),用于存儲帶有小數點的數字。這是最常用的浮點數類型。
字符類型:
char:字符型,占用2個字節(16位),用于存儲單個字符。在Java中,char類型的字面量必須使用半角的單引號括起來。
布爾類型:
boolean:布爾型,占用1個字節,只有兩個值:true和false。用于判斷真或假。
二、引用數據類型
引用數據類型不是直接包含數據值,而是存儲了對象的引用(即對象的內存地址)。Java中的引用類型主要有三種:
類(Class):類是一種用戶定義的數據類型,它可以包含屬性(變量)和方法。類可以用來創建對象的實例,并存儲有關該對象的信息。
接口(Interface):接口是一種特殊的類,它定義了一組方法但沒有實現這些方法。接口可以用來定義一組相關的方法和常量,并可以在其他類中實現這些方法。
數組(Array):數組是一種特殊的數據結構,可以存儲多個相同類型的元素。數組可以是基本數據類型或引用數據類型的數組。
三、其他數據類型
Java中還有一些特殊的數據類型,如字符串(String)。字符串是由字符組成的序列,用于存儲和操作文本數據。字符串在Java中是不可變的,即一旦創建了一個字符串對象,就不能修改它的內容。
4、數據類型轉換:
自動數據類型轉換:
package test.com;
public class AutoTypeConversionDemo { public static void main(String[] args) { //當一個byte、short或char類型的值賦給一個更大范圍的整型(如int、long)變量時,會發生自動類型轉換.// 聲明一個byte類型的變量 byte b = 100; // 自動數據類型轉換:byte到short,short到int,int到long,long到float,float到double // 注意:byte -> int的轉換是自動的,盡管這里直接將其賦值給了一個short類型的變量 // 但實際上,byte首先被提升為int,然后再被賦值給short(因為short類型的變量可以接受int類型的值,只要這個值在short的范圍內) // 這里直接演示byte到int的自動轉換,并通過顯式轉換到short以避免編譯器警告 short s = (short) b; // 顯式轉換,直接賦值給short通常不需要(但會有警告) // byte到int的自動轉換 int i = b; // int到long的自動轉換 long l = i; // long到float的自動轉換(注意:這可能會導致精度丟失) float f = l; // float到double的自動轉換 double d = f; // 打印結果,以驗證轉換 System.out.println("byte to int: " + i); System.out.println("int to long: " + l); System.out.println("long to float: " + f); System.out.println("float to double: " + d); // 演示char到int的自動轉換(因為char在內部是以Unicode值存儲的,即一個整數) char c = 'A'; int charAsInt = c; System.out.println("char to int (Unicode value): " + charAsInt); // 輸出65,因為'A'的Unicode值是65 }
}
?強制數據類型轉換:
package test.com;
public class ExplicitTypeConversionDemo { //強制數據類型轉換(也稱為顯式類型轉換)是當嘗試將一個大范圍數據類型的值賦給一個小范圍數據類型的變量時,需要明確告訴編譯器我們想要進行這種轉換的方式。//這種轉換可能會導致數據丟失或溢出,因為小范圍的數據類型可能無法容納大范圍數據類型中的所有值。public static void main(String[] args) { // 聲明一個double類型的變量 double doubleValue = 123.456; // 嘗試將double類型的值賦給int類型的變量,這會導致編譯錯誤 // int intValue = doubleValue; // 編譯錯誤 // 使用強制類型轉換將double類型的值賦給int類型的變量 // 注意:這會丟失小數部分,只保留整數部分 int intValue = (int) doubleValue; // 打印結果,以驗證轉換 System.out.println("After casting double to int: " + intValue); // 輸出:After casting double to int: 123 // 另一個示例:將float類型的值強制轉換為byte類型 // 注意:這可能會導致溢出,因為byte的范圍是-128到127 float floatValue = 255.0f; // float類型,f或F后綴表示這是一個float字面量 byte byteValue = (byte) floatValue; // 強制轉換 // 打印結果,注意可能的溢出 System.out.println("After casting float to byte: " + byteValue); // 輸出可能是-1,因為255超出了byte的范圍 }
}
5、常量:
a、字符串常量?
字符串常量直接在代碼中使用
String greeting = "Hello, World";通過變量存儲字符串常量的值
String message1 = "Welcome";
String message2 = "to Java";
String fullMessage = message1 + " " + message2; // fullMessage 的值為 "Welcome to Java"
?b、整數常量
整數常量默認為int類型,如果希望表示長整型常量,需要在數字后加上L或l來表示。例如:int number1 = 100; // 十進制整數常量
int number2 = 012; // 八進制整數常量,表示十進制10
int number3 = 0xFF; // 十六進制整數常量,表示十進制255long bigNumber = 123456789012345L; // 長整型常量整數常量在編程中經常用于表示具體的數值,例如計數器、索引等,可以直接在代碼中使用整數常量來表示固定的整數值。
c、小數常量
小數常量默認為double類型,如果希望表示單精度浮點型常量,需要在數字后加上f或F來表示。例如:double pi = 3.14159; // 雙精度浮點型常量
float height = 1.72f; // 單精度浮點型常量小數常量在編程中經常用于表示需要精確的小數值,如計算圓周率、表示身高等,可以直接在代碼中使用小數常量來表示固定的小數值。
d、字符常量?
字符常量是在程序中直接表示一個字符的固定值。在 Java 中,字符常量使用單引號 ' ' 包圍。例如,'A'、'b'、'7' 等都是字符常量。字符常量可以是一個普通的可打印字符(如字母、數字、標點符號)或者是一些特殊的控制字符(如換行符、制表符等)。特殊的字符在字符常量中使用轉義字符來表示,如 '\n' 表示換行符,'\t' 表示制表符。字符常量是基于 Unicode 編碼的,每個字符常量實際上代表一個 Unicode 字符。下面是一些字符常量的示例:char letter = 'A'; // 表示字母'A'
char number = '5'; // 表示數字'5'
char space = ' '; // 表示空格字符
char newline = '\n'; // 表示換行符
char tab = '\t'; // 表示制表符字符常量在編程中經常用于表示單個字符,比如在處理字符串、輸入輸出操作等場景下。在Java中,可以直接在代碼中使用字符常量來表示一個特定的字符。
?e、布爾常量
布爾常量的類型是 boolean,只有兩個取值:true(真)和false(假),布爾常量用來表示邏輯狀態或條件的真假。布爾常量主要用于控制流程、判斷條件以及邏輯運算。布爾常量的示例:boolean isTrue = true;
boolean isFalse = false;布爾常量在編程中經常用于條件判斷語句(如 if 語句、while 循環等)以及邏輯運算(如與、或、非等),幫助程序根據不同的條件來執行不同的代碼段。
f、 null
空常量指的是一個特殊的常量值,表示沒有指向任何對象的引用,空常量對應的是 null 值。
null 也是一個關鍵字,用于表示一個變量沒有引用任何對象。當一個對象被賦予 null 值時,表示這個對象不指向任何內存位置,即為空。null通常用于初始化變量,表示該變量目前沒有指向任何實際的對象。在對應使用這個變量時,需要注意判斷是否為空,以避免空指針異常。
例如:
String str = null;
str 變量被初始化為 null,表示沒有指向任何字符串對象。當嘗試訪問 str 變量所引用的對象時,需要先進行空指針檢查,以確保不會出現空指針異常。
6、變量
變量的聲明:
package test.com;
public class VariableDemo { public static void main(String[] args) { // 聲明整型變量 int number = 10; // 聲明浮點型變量 double pi = 3.14; // 聲明字符型變量 char letter = 'A'; // 聲明布爾型變量 boolean isTrue = true; // 聲明并初始化字符串變量 //字符串不是基本數據類型,而是String類的對象。String greeting = "Hello, World!"; // 打印變量值 System.out.println("Number: " + number); System.out.println("PI: " + pi); System.out.println("Letter: " + letter); System.out.println("Is True: " + isTrue); // 打印字符串 System.out.println(greeting); }
}
?變量的作用域:
package test.com;
//變量的作用域是指變量在程序中可以被訪問的區域。
//在Java中,變量的作用域取決于聲明它的位置。
//局部變量:在方法、構造函數或代碼塊中聲明的變量。它們的作用域是從聲明點開始到包含它的代碼塊結束。
//實例變量(也稱為字段):在類的方法外部但在類內部聲明的變量。它們的作用域是整個類,但只能被該類的實例訪問。
//類變量(也稱為靜態變量):使用static關鍵字聲明的變量。它們的作用域是整個類,但可以通過類名直接訪問,而不需要創建類的實例。
public class ScopeDemo { // 類變量 static int classVar = 100; public static void main(String[] args) { // 方法變量 int methodVar = 200; // 局部變量 { int blockVar = 300; System.out.println("Block Variable: " + blockVar); // blockVar 只能在當前塊中訪問 } // 類變量和方法變量都可以在這里訪問 System.out.println("Class Variable: " + classVar); System.out.println("Method Variable: " + methodVar); // blockVar 在這里不能訪問,因為它只在定義它的塊中可見 }
}
?7、標識符
標識符是用來給變量、方法、類、接口等命名的字符串。
標識符的命名規則遵循以下基本原則:
首字符:標識符的首字符可以是字母(A-Z 或 a-z)、美元符號($)或下劃線(_)。注意,首字符不能是數字(0-9)。
后續字符:除了首字符外的后續字符可以是字母、數字、美元符號($)或下劃線(_)。
關鍵字:Java中的關鍵字(如class、int、return等)不能用作標識符。
大小寫敏感:Java是大小寫敏感的語言,因此MyClass和myclass會被視為兩個不同的標識符。
長度:理論上,標識符的長度沒有限制,但出于可讀性和實用性的考慮,應避免使用過長的標識符。
命名約定:雖然Java沒有強制的命名約定,但遵循一定的命名習慣(如駝峰命名法)可以使代碼更易于閱讀和維護。例如,變量名和方法名通常以小寫字母開頭,隨后的單詞首字母大寫(小駝峰命名法),而類名則以大寫字母開頭,隨后的單詞首字母也大寫(大駝峰命名法)。
Unicode字符:從Java 1.0.2版本開始,Java標識符可以使用Unicode字符集中的字符,但不建議使用非ASCII字符,因為它們可能會降低代碼的可讀性。
特殊字符:雖然$和_可以在標識符中使用,但它們通常被保留給特定的命名習慣或庫/框架中的特定用途(例如,內部類或變量命名)。
以下是一些有效的Java標識符示例:
age
userName
_myVariable
$salary
EmployeeID
而以下是一些無效的Java標識符示例:
1stClass(以數字開頭)
class(關鍵字)
my-variable(包含非法字符-)
Hello World(包含空格)
選擇清晰、描述性強且遵循Java命名約定的標識符,可以使代碼更加易于理解和維護。
常用的命名規則: