Java基本語法

標識符
概念
Java對各種變量,方法和類等要素命名時使用的字符序列稱爲標識符
規則
1.標識符由字母,下劃線,美元符或數字組成
2.標識符應由字母,下劃線,美元符開頭
3.Java標識符大小寫敏感,長度沒有限制
注:Java標識符要見名知意,且不能與關鍵字重名
關鍵字
概念
Java中一些賦以特定含義,擁有特殊用途的字符串叫做關鍵字,所有的Java關鍵字都是小寫英文,關鍵字大寫後不再被當作關鍵字。
關鍵字的分類
用於控制訪問相關4個:public(公共的)、protected(受保護的,同一個包中的其它類及子類可以訪問。)、 缺省的、 private(私有的,本類可以訪問)
修飾符與包及類之間的關係以及訪問關係:
public protected 缺省 private
本類 可以 可以 可以 可以
同包子類 可以 可以 可以 不可以
同包非子類 可以 可以 可以 不可以
不同包子類 可以 可以 不可以 不可以
不同包且非子類 可以 不可以 不可以 不可以
類、接口、抽象類相關、實例化對象相關6個:abstract(抽象的)class(定義類)、interface(定義接口)implements(實現)、extends(繼承)new(創建新對象)
程序控制相關12個:if(如果)、else(否則) 、instanceof(判斷一個對象是否是某個類的實例)switch(開關)、case(switch語句的一個條件)、break(跳出循環/跳出switch語句塊)、default(switch語句的默認分支,當所有的case都不滿足條件時會執行)for(for循環語句)、do(循環語句,循環體至少會被執行一次)、while(當…時)、continue(結束本次循環,繼續下一次循環)return(返回…,用於跳出方法)、
修飾方法,變量方法相關8個:static(靜態的)、final(最終的不可被改變的)、const(const是Java預留關鍵字,用於後期擴展用,用法跟final相似,不常用)native(表示方法用非java代碼實現)synchronized(線程同步的)transient(修飾不要序列化的字段)volatile(標記字段可能會被多個線程同時訪問)strictfp(嚴格的/精準的)
異常處理相關5個:try(捕獲異常)、catch(處理異常)、finally(有無異常都會執行)throw(拋出一個異常對象)、throws(聲明一個方法可能拋出異常)
包相關2個:import(引入包)package(定義包)
數據類型相關8個:8種基本數據類型:byte、short、int、long、float、double、char、boolean
變量引用相關3個:super(調用父類的方法/構造函數/成員變量)this(表示調用當前實例的成員變量或方法/調用另一個重載的構造函數)void(沒有返回值)
其他相關2個:assert(斷言條件是否滿足,滿足則繼續向下執行,不滿足則拋出異常終止執行)、enum(枚舉類型)
保留字:goto const false true。
常量
Java的常量值用不同的數據類型字符串表示,
比如:整數型:123 ;字符常量 ‘a’ ;邏輯常量:true;字符串常量:“Hello World”。
變量
Java變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域。
Java中每一個變量都屬於特定的數據類型,在使用前必須申明變量類型:
int i = 1;
float f = 12.3f; //注意float a = (float)1.3;或者float a = 1.3f;(f或F都可以不區分大小寫)
double d=1.3; //注意和單精度浮點數float區分
String name ="hello world";
變量的分類
按聲明位置劃分
局部變量:在方法或者語句塊內部定義的變量
成員變量:在方法的外部,類的內部定義的變量
所屬數據類型劃分
基本數據類型變量
引用數據類型變量
局部變量和成員變量
public class Test{
public int i;//成員變量
public void method(){
int j;//局部變量 局部變量不允許使用訪問修飾符修飾
}}
基本數據類型的轉換
boolean類型不可轉換爲其他的數據類型
字符型,浮點型的數據在混合運算中相互轉換要準守如下規則
容量小的類型自動轉換爲容量大的數據類型:
byte,char,short > int > long > float > double
byte,char,short不會相互轉換,他們在計算式先轉換成int類型
容量大的類型轉換成容量曉得類型要加上強制轉換符,可能會造成精度降低或者溢出
public class TestConvert {
public static void main(String arg[]) {
int i1 = 123;
int i2 = 456;
double d1 = (i1+i2)1.2;//系統將轉換爲double型運算 因爲小的類型會自動轉換爲大的數據類型 1.2 默認是double類型
float f1 = (float)((i1+i2)
1.2);//需要加強制轉換符 (i1+i2)1.2是double類型,如果用float接受 需要使用強制轉換因爲 double類型大於float
byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系統將轉換爲int型運算,需要強制轉換符
System.out.println(b3);
double d2 = 1e200;
float f2 = (float)d2;//會產生溢出
System.out.println(f2);
float f3 = 1.23f;//必須加f
long l1 = 123;
long l2 = 30000000000L;//必須加l
float f = l1+l2+f3;//系統將轉換爲float型計算
long l = (long)f;//強制轉換會捨去小數部分(不是四捨五入)
}}
Java運算符分類
算術運算符:+ -
/ % ++ --;
關係運算符:> < <= >= == !=
邏輯運算符:! & | ^ && ||
位運算符:& | ^ ~ >> << >>>
賦值運算符:=
擴展賦值運算符:+= -= /= *=
字符串連接運算符:+
語句
條件語句
if //如果條件爲true則執行
if...else //如果if條件爲true執行if語句,否則執行else語句
if...else if //同上
if...else if...else if...else //有一條執行就不會再判斷後續天劍
switch
swtich()//變量類型只能是int、short、char、byte和enum類型。當進行case判斷時,JVM會自動從上到小掃描,尋找匹配的case。
循環語句
for
while
do while
break 語句,終止某個語句塊的執行,在循環語句體系中,可以強制退出循環
Continue 語句,跳過本次循環進入下一次循環
數組
定義
dataType[] arrayVar;
dataType arrayVar [ ];
說明: 首先dataType它可以是基本數據類型比如 int array [ ];也可以是引用類型 比如Object [ ]。
方法
方法是語句的集合,它可以實現一個功能,比如println()方法它可以實現打印輸出。在java中方法是包含在類或對象中,方法創建於程序中,在其他地方被引用。
定義一個方法
修飾符 返回值類型 方法名(參數類型 參數名){
...
方法體
...
return 返回值;
}
//示例
public int addNumber(int a, int b){
int x=0;
x=a+b;
retutn x;
}
定義規則
1、命名規則,方法名一般以小寫字母開頭,後邊的單詞首字母大寫
2、return後邊跟的值的類型必須與返回值類型相同,除了void,因爲void是無返回值的。
解析方法
修飾符:修飾符,這是可選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。
返回值類型 :方法可能會返回值。returnValueType 是方法返回值的數據類型。有些方法執行所需的操作,但沒 有返回值。在這種情況下,returnValueType 是關鍵字void。
方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。
參數類型:參數像是一個佔位符。當方法被調用時,傳遞值給參數。這個值被稱爲實參或變量。參數列表是指方法的參數類型、順序和參數的個數。參數是可選的,方法可以不包含任何參數。
方法體:方法體包含具體的語句,定義該方法的功能如 int x=0; x=a+b。
main方法
main 方法是被 JVM調用的,除此之外,main 方法和其它方法沒什麼區別。main 方法的頭部是不變的,如下所示,帶修飾符 public 和 static,返回 void 類型值,方法名字是 main,此外帶個一個 String[] 類型參數。String[] 表 明參數是字符串數組。
public class TestMax {
/* 主方法 /
public static void main(String[] args) {
int i = 5;
int j = 2;
int k = max(i, j);
System.out.println( i + " 和 " + j + " 比較,最大值是:" + k);
}

/* 返回兩個整數變量較大的值 /
public static int max(int num1, int num2) {
return num1>num2? num1:num2;
}
}
構造方法
class Student {
int id;//ID
String name;//姓名
int age;//年齡
Student(String n) {//擁有一個參數的構造方法
name = n;
}
Student(int i, String n) {//擁有二個參數的構造方法
id = i;
name = n;
}
Student(int i, String n, int a) {//擁有三個參數的構造方法
id = i;
name = n;
age = a;
}
public void show() {//普通方法
System.out.println(id + " " + name + " " + age);
}

public static void main(String args[]) {
    Student s1 = new Student("小紅");//創建一個小紅
    Student s2 = new Student(250, 18);//創建一個
    s1.show();//對象調用方法
    s2.show();
}

}
Java文件經過JVM編譯成字節碼文件,即.class文件,將字節碼文件在不同的操作系統中運行時,操作系統再將字節碼文件編譯成機器碼文件。這就是Java跨平臺
首先明確一點,java 的 GC 回收是完全自動的,沒有提供相關 api 手動回收,所有的內存分配和回收權限都在 jvm,在開發人員手裏沒有絕對的強制垃圾回收的方法,不過可以這樣去做:
對於不再引用的對象,及時把它的引用賦爲 null。 obj = null;
如果內存確實很緊張,調用 System.gc () 方法來建議垃圾回收器開始回收垃圾,通知 GC 運行,但是 Java 語言規範並不保證 GC 一定會執行。
java 基本類型的默認值和取值範圍
整數類型 byte(1 個字節)short(2 個字節)int(4 個字節)long(8 個字節)
字符類型 char(2 個字節)
浮點類型 float(4 個字節)double(8 個字節)
常見字符的ASCII碼值如下:空格的ASCII碼值爲32;數字0到9的ASCII碼值分別爲48到57;大寫字母“A”到“Z”的ASCII碼值分別爲65到90;小寫字母“a”到“z”的ASCII碼值分別爲97到到122。
Java 標識符有如下命名規則:
由 26 個英文字母大小寫,數字:0-9 符號: $ ¥ 組成
標識符應以字母、
、$ 開頭。
標識符不能是關鍵字。
抽象類和接口
關於抽象類
JDK 1.8 以前,抽象類的方法默認訪問權限爲 protected
JDK 1.8 時,抽象類的方法默認訪問權限變爲 default
關於接口
JDK 1.8 以前,接口中的方法必須是 public 的
JDK 1.8 時,接口中的方法可以是 public 的,也可以是 default 的
JDK 1.9 時,接口中的方法可以是 private 的
裝箱和拆箱
基本數據類型轉化成包裝類是裝箱 (如: int --> Integer)。
包裝類轉化成基本數據類型就是拆箱 (如:Integer --> int)。
包裝類就是引用類型,基本數據類型就是值類型。
通過 裝箱 和 拆箱 操作,XM代理申請www.kaifx.cn/broker/xm.html,能夠在值類型和引用類型中架起一做橋樑。換言之,可以輕鬆的實現值類型與引用類型的互相轉換,裝箱和拆箱能夠統一考察系統,任何類型的值最終都可以按照對象進行處理。
序列化和反序列化
Java 在序列化時不會實例化 static 變量和 transient 修飾的變量,因爲 static 代表類的成員,transient 代表對象的臨時數據,被聲明這兩種類型的數據成員不能被序列化
Java有兩種傳遞方式,值傳遞和引用傳遞。基本類型和以string str = “aaa”;這種方式創建的都是值傳遞,對象創建和數組都是引用傳遞,所以在函數的判斷形參需要特別注意。
Java垃圾回收機制
垃圾回收主要針對的是堆區的回收,因爲棧區的內存是隨着線程而釋放的。堆區分爲三個區:年輕代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法區)。
年輕代:對象被創建時(new)的對象通常被放在 Young(除了一些佔據內存比較大的對象), 經過一定的 Minor GC(針對年輕代的內存回收)還活着的對象會被移動到年老代(一些具體的移動細節省略)。
年老代:就是上述年輕代移動過來的和一些比較大的對象。Major GC (FullGC) 是針對年老代的回收。
永久代:存儲的是 final 常量,static 變量,常量池。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章