【java基礎】——java基本語法(1)


一、java語言基礎構成

java語言的基礎由關鍵字、標識符、註釋、常量和變量、運算符、語句、函數、數組構成。

二、java關鍵字和保留字

1、關鍵字

定義:被java語言賦予了特殊涵義的單詞。
特點:關鍵字中所有字母均爲小寫。
關鍵字共有50個,分爲以下類型,都有其特殊含義。
  • 用於定義數據類型的關鍵字(下表)
class interface byte short int
long float double char boolean
void        




  • 用於定義數據類型值的關鍵字:true,false,null
  • 用於定義流程控制的關鍵字(下表)

if else switch case default
while do for break continue
return        
  • 用於定義訪問權限修飾符的關鍵字:private, protected,public
  • 用於定義類、函數、變量修飾符的關鍵字:abstract,final,static,synchronized
  • 用於定義類與類之間關係的關鍵字:extends, implements
  • 用於建立實例及引用實例,判斷實例的關鍵字:new,this,super,instanceof
  • 用於異常處理的關鍵字:try,catch,finally,throw,throws
  • 用於包的關鍵字:package,import
  • 其它修飾符關鍵字:native,strictfp(strict float point,精確浮點),
                                transient(變量修飾符,用它聲明一個實例變量,在對象序列化時不會被序列化),
                                         volatile(類型修飾符,用來修飾被不同線程訪問和修改的變量),
                                         assert(斷言,可以看作是異常處理的一種高級形式,用於捕捉我們在代碼中做出的假設)。

2、保留字:以後可能用的。const、goto

三、java中的常量與變量

1、常量

常量:表示不能改變的數值。
java中常量的分類:
  • 整數常量:所有整數
  • 小數常量:所有小數
  • 布爾型常量:較爲特有,只有兩個數值,true和false
  • 字符常量:將一個數字字母或符號用單引號(‘’)標識
  • 字符串常量:將一個或者多個字符用雙引號標識
  • null常量:只有一個數值,null
對於整數,java有三種表現形式:
  • 二進制:0和1表示,滿2進1
  • 十進制:0~9,滿10進1
  • 八進制:0~7,滿8進1,開頭用O表示
  • 十六進制:0~9,A~F,滿16進1,開頭用Ox表示
計算機採用二進制的原因:
  • 技術實現簡單,計算機是由邏輯電路組成,邏輯電路通常只有兩個狀態,開關的接通與斷開,這兩種狀態正好可以用“1”和“0”來表示。
  • 簡化運算規則,兩個二進制數和、積運算組合各有三種,運算規則簡單,有利於簡化計算機內部結構,提高運算速度。
  • 適合邏輯運算,邏輯代數是邏輯運算的理論依據,二進制只有兩個數碼,正好與邏輯代數的“真”與“假”相吻合。
  • 易於進行轉換,二進制與十進制數易於互相轉換。
  • 用二進制表示數據具有抗干擾能力強,可靠性高等優點。因爲每位數據只有高低兩個狀態,當受到一定程度的干擾時,仍能可靠的分辨出它是高還是低。

2、變量

  • 定義:內存中的一個存儲空間,該空間有自己的名稱(變量名)和類型(數據類型)。
  • 作用:用於不斷的存放同一類型的常量,並可以重複使用。
  • 定義的格式:數據類型   變量名  = 初始化值。 如:int x = 6;
  • 變量的作用範圍:從變量定義開始到定義它的代碼塊結束。同一範圍內,不允許多個局部變量命名衝突。
  • 什麼時候定義變量:當數據不確定的時候,需要對一個數據進行存儲時,就定義一個變量來完成存儲動作。
變量的命名規則:
①應以字母、下劃線、或美元符號開頭。
②後面接字母、下劃線、美元符號或者是數字。
③java變量名沒有長度限制。
④java變量名對大小寫敏感。
駝峯命名法:
①變量名應該用有意義的單詞。
②變量名如果只有一個單詞,則所有的字母小寫。
③變量名如果由多個英文單詞組成,則從第二個單詞開始首字母大寫。
下面舉一些例子來說明命名規則:
合法的變量名:Password、last_name、$abc、_ref
正確的變量名:password、last_Name

3、數據類型

  • java是一種強類型語言。這就意味着java必須爲沒一個變量聲明一種類型。在java中,一共有8中基本類型,其中有4種整型、2種浮點類型、一種用於表示Unicode編碼的字符單元的字符類型char和一種用於表示真值的boolean類型。
  • java中有兩種基本數據類型:基本數據類型和引用數據類型,其結構圖如下:

  • 基本數據類型:所佔字節數及取值範圍如下圖:

基本數據類型的轉換:
在java中基本數據類型共有8中,其中boolean型不能轉換成其它類型,其它類型也不能轉換呈boolean類型。
除boolean類型外,剩下的7種類型按照他們容量的大小,從小到大,依次排序爲:
  • 容量小的向容量大的,可以自動轉換,比如可以將一個int類型的值直接賦值給double,如:double d = 34;
  • 容量大的向容量小的轉換,則必須進行強制類型轉換,如:int i = (double)32.42;
  • 整數類型常量默認爲int類型,浮點型常量默認爲double類型
  • 在多種數據類型進行混合運算時,容量小的自動轉換成整個表達式中容量最大的,然後再進行計算。
  • 在進行多種數據類型混合運算時,byte、short、char三種類型不會相互轉換,他們各自轉換成int再進行計算。
  • 在有些時候,容量小的會自動提升爲容量大的,比如方法重載傳遞參數的時候,但byte、short不會自動提升爲char。
  • 注意:強制類型轉換雖然能通過編譯,但運行時,有可能會造成數據溢出,損失精度。
自動類型提升示意圖如下:


四、java中的運算符

1、算術運算符

  • 單目運算符:+(正)、-(負)、++(自增)、--(自減)
  • 雙目運算符:(+、-、*、/、%)(加、減、乘、除、模)
  • 三目運算符:a>b?表達式1:表達式2。注:當a>b爲true時,返回表達式1的值,否則返回表達式2的值。
package com.huang.test;
/**
 *@author huangxiang
 *@date 創建時間:2015年3月10日下午10:32:30
 *@version 1.0
 */
public class TestDemo {
	//演示算術運算符
	public static void main(String[] args) {
		//單目運算符的演示
		int a = 5,b=4,c=8;
		int d = a+b-c*b;
		int e = a>d?a:d;//三目運算符
		System.out.println(d);//d = -23
		System.out.println(e);//e = 5;
	}
}

2、賦值運算符:=、+=、-=、*=、/=、%=

3、比較運算符:==(比較的是左右兩邊的變量是否來自於同一個內存地址)

注:①==運算符比較的是值類型,(如基礎數據類型,int之類的)的話,由於值類型是存儲在棧裏面的,當兩個變量有同一個值時,其    實他們只用到了一個內存空間,所以比較的結果是true。
public class Test2Demo {

	public static void main(String[] args) {
		int a = 1;
		int b = 1;
		System.out.println(a==b);//結果爲true
	}
}
②如果比較兩個引用類型,則比較的就是它們的引用地址。這時候就要看兩個變量是否引用自同一個地址的內存了。
public class Test2Demo {

	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = "abc";
		System.out.println(s1==s2);//結果爲true
	}
}

但是如果:

public class Test2Demo {

	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = new String("abc");
		System.out.println(s1==s2);//結果爲false
	}
}
爲什麼結果會不同呢?
原因:a、java中有字符串緩衝池。在例子1中,S1和S2用的是同一個內存空間的“abc”,所以此時==的結果爲true。
            b、在例子2中,S2使用了new操作符重新申請了空間,沒有用到緩衝池裏的原有變量,因此,雖然S1和S2的值都是"abc"。 但所屬不同內存空間,所以==的結果爲false。

4、邏輯運算符(&&、||、!、|、&、^)

其中,&和&&的特點是:單&時,左邊無論真假,右邊都進行運算;雙&時,如果左邊爲真,右邊參與運算;如果左邊爲假,則右邊不參與運算。而“|”和“||”的特點是:“|”表示其兩邊都參與運算。而“||”時,表示當左邊爲真,右邊不參與運算。

5、位運算符(&、|、^、~、>>、<<、>>>)

  • 左移(<<):被移除的高位丟棄,空位補0
  • 右移(>>):被移位的二進制最高位是0,則右移後空位補0;最高位爲1,空位補1。
  • 無符號右移(>>>):被移位的二進制無論最高位是什麼,都補0
  • 與(&):與二進制位進行&運算,兩個全部爲1,結果爲1,否則爲0
  • 或(|):與二進制爲進行|運算,只有兩個都爲0是纔是0,否則爲1
  • 異或(^):兩個操作數的位中,相同結果爲0,不同爲1
  • 非(~):取反.

6、Instanceof

該運算符是雙目運算符,左邊操作的是一個對象,右邊操作的是一個類或接口。當左面的對象是右邊的類(或右邊的類的子孫類)創建的對象、或者是右邊接口的實現類(或實現的子孫類)的對象時,該運算符結果爲true,否則爲false。

五、標識符

定義:在java語言中,對於變量、常量、函數、語句塊也有名字,我們通通稱之爲java標識符。標識符是用來給類、對象、方法、變量和自定義數據類型命名的。
標識符的組成:標識符由數字、字母、下劃線、美元符號組成。java中是區分大小寫的,而且還要求首字母不能是數字。最重要的是,java關鍵字不能當做標識符。
如:
合法標識符:myName、My_name、Points、_3_
非法標識符:#name、25name、class、&time

標識符命名約定:
  • 類名和接口:每個字的首字母大寫,含有大小寫。如;Myclass、HelloWorld等
  • 方法名:首字母小寫,其餘的字母大寫,含有大小寫,儘量少用下劃線。
  • 常量名:基本數據類型的常量名全部使用大寫字母,字與字之間用 下劃線分隔。對象常量可用大小寫混寫。如:SIZE_NAME。
  • 變量名:可大小寫混寫,首字母小寫,字間 分隔符用字的首字母大寫。不用下劃線,少用美元符號。給變量名命名儘量見名知意。

發佈了30 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章