目錄
- 前言
- 一、二進制
- 1.1 補碼
- 1.2 二進制和十進制之間的互換
- 二、變數與資料型別
- 2.1 變數分類
- 2.2 資料型別
- 2.3 型別轉換
- 2.4 關鍵字大全
- 三、方法的使用
- 3.1 概述
- 3.2 權限修飾符詳解
- 3.3 回傳值詳解
- 3.4 引數串列詳解
- 3.5 方法實體
- 四、運算子的使用
- 4.1 算術運算子
- 4.2 賦值運算子
- 4.3 關系運算子
- 4.4 邏輯運算子
- 4.5 字串連接運算子
- 4.6 三目運算子
- 五、變數作用域以及轉義字符
- 5.1 變數作用域
- 5.2 轉義字符
- 結尾(附上一份ASCII表)
前言
Java 語言的主要特性:
- Java 語言是簡單的:
Java 語言的語法與 C 語言和 C++ 語言很接近,使得大多數程式員很容易學習和使用,另一方面,Java 丟棄了 C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如運算子多載、多繼承、自動的強制型別轉換,特別地,Java 語言不使用指標,而是參考,并提供了自動分配和回收記憶體空間,使得程式員不必為記憶體管理而擔憂,
- Java 語言是面向物件的:
Java 語言提供類、介面和繼承等面向物件的特性,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,并支持類與介面之間的實作機制(關鍵字為 implements),Java 語言全面支持動態系結,而 C++語言只對虛函式使用動態系結,總之,Java語言是一個純的面向物件程式設計語言,
- Java 語言是分布式的:
Java 語言支持 Internet 應用的開發,在基本的 Java 應用編程介面中有一個網路應用編程介面(java net),它提供了用于網路應用編程的類別庫,包括 URL、URLConnection、Socket、ServerSocket 等,Java 的 RMI(遠程方法激活)機制也是開發分布式應用的重要手段,
- Java 語言是健壯的:
Java 的強型別機制、例外處理、垃圾的自動收集等是 Java 程式健壯性的重要保證,對指標的丟棄是 Java 的明智選擇,Java 的安全檢查機制使得 Java 更具健壯性,
- Java 語言是安全的:
Java通常被用在網路環境中,為此,Java 提供了一個安全機制以防惡意代碼的攻擊,除了Java 語言具有的許多安全特性以外,Java 對通過網路下載的類具有一個安全防范機制(類 ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,并提供安全管理機制(類 SecurityManager)讓 Java 應用設定安全哨兵,
- Java 語言是體系結構中立的:
Java 程式(后綴為 java 的檔案)在 Java 平臺上被編譯為體系結構中立的位元組碼格式(后綴為 class 的檔案),然后可以在實作這個 Java 平臺的任何系統中運行,這種途徑適合于異構的網路環境和軟體的分發,
- Java 語言是可移植的:
這種可移植性來源于體系結構中立性,另外,Java 還嚴格規定了各個基本資料型別的長度,Java 系統本身也具有很強的可移植性,Java 編譯器是用 Java 實作的,Java 的運行環境是用 ANSI C 實作的,
- Java 語言是解釋型的:
如前所述,Java 程式在 Java 平臺上被編譯為位元組碼格式,然后可以在實作這個 Java 平臺的任何系統中運行,在運行時,Java 平臺中的 Java 解釋器對這些位元組碼進行解釋執行,執行程序中需要的類在聯接階段被載入到運行環境中,
- Java 語言是高性能的:
與那些解釋型的高級腳本語言相比,Java 的確是高性能的,事實上,Java 的運行速度隨著 JIT(Just-In-Time)編譯器技術的發展越來越接近于 C++,
- Java 語言是多執行緒的:
在 Java 語言中,執行緒是一種特殊的物件,它必須由 Thread 類或其子(孫)類來創建,通常有兩種方法來創建執行緒:其一,使用型構為 Thread(Runnable) 的構造子類將一個實作了 Runnable 介面的物件包裝成一個執行緒,其二,從 Thread 類派生出子類并重寫 run 方法,使用該子類創建的物件即為執行緒,值得注意的是 Thread 類已經實作了 Runnable 介面,因此,任何一個執行緒均有它的 run 方法,而 run 方法中包含了執行緒所要運行的代碼,執行緒的活動由一組方法來控制,Java 語言支持多個執行緒的同時執行,并提供多執行緒之間的同步機制(關鍵字為 synchronized),
- Java 語言是動態的:
Java 語言的設計目標之一是適應于動態變化的環境,Java 程式需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類,這也有利于軟體的升級,另外,Java 中的類有一個運行時刻的表示,能進行運行時刻的型別檢查,
一、二進制
- 計算機中的資料都以二進制數字保存,
- 二進制:逢二進一,即只有0、1兩個值,
如:十進制的 10 在計算機內保存為二進制的 1010,
- 計算機中資訊的存盤單位
位(Bit):表示一個二進制數碼 0 或 1,是計算機存盤處理資訊的最基本單位,
位元組(Byte):一個位元組由 8個位組成,它表示作為一個完整處理單位的 8 個二進制數碼,
1.1 補碼
事實上,計算機內的二進制數值是以補碼形式表示的,
補碼:
- 一個正數的補碼和其原碼的形式是相同的,
- 負數的補碼是:將該數的絕對值的二進制形式,按位取反再加1,
由此可知,二進制補碼數值的最高位(最左位)是符號位:該位為0,表示數值為正數;該位為1,表示數值為負數,
| 10 | 00000000 00000000 00000000 00001010 |
|---|---|
| -10 | 11111111 11111111 11111111 11110110 |
主要原因:
使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理,另外,兩個用補碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄,
1.2 二進制和十進制之間的互換
二進制數轉換成十進制數:
按權相加:把二進制數首先寫成加權系數展開式,然后按十進制加法規則求和,
例子:
原碼 101101 101101 101101 = = = 1 × 2 3 1 \times 2^3 1×23 + 0 × 2 2 +0\times2^2 +0×22 + 1 × 2 1 +1\times2^1 +1×21 + 1 × 2 0 +1\times2^0 +1×20 + 0 × 2 ? 1 +0\times2^{-1} +0×2?1 + 1 × 2 ? 2 = ? +1\times2^{-2}=\, +1×2?2= 8 + 0 + 2 + 1 + 0 + 0.25 ? 8+0+2+1+0+0.25\, 8+0+2+1+0+0.25 = 11.25 =11.25 =11.25
十進制數轉換成二進制數:
- 整數部分:“除2取余,逆序排列”法
- 小數部分:“乘2取整,順序排序”法
注意:編程時若涉及復雜的進制運算可借助計算器中的程式員模式!

二、變數與資料型別
變數就是系統為程式分配的一塊記憶體單元,用來存盤各種型別的資料,由于該存盤單元中的資料可以發送改變,因此得名為“變數”,
如下圖:

因此,通過定義不同型別的變數,可以在記憶體中儲存整數、小數或者字符,
2.1 變數分類
按所屬的資料型別劃分:
- 基本資料型別變數
- 參考資料型別變數
按被宣告的位置劃分:
- 區域變數:方法或者陳述句塊內部定義的變數
- 成員變數:方法外部、類的內部定義的變數
特別注意:類的外面不能有變數的宣告
2.2 資料型別
由于變數記錄的資料內容大小不同,導致所需的存盤單元大小不同,在 Java 語言中使用資料型別的概念加以描述,
位元組是計算機資訊技術用于計量存盤容量的一種計量單位,作為一個單位來處理的一個二進制數字串,是構成資訊的一個小單位,Java 中的位元組是八位的位元組,即它包含八位的二進制數,

| 型別 | 占用記憶體 | 值范圍(含邊界值) | 默認值 |
|---|---|---|---|
| 整數型(int) | 4位元組 | -214783648 ~ 2147483647 | 0 |
| 短整型(short) | 2位元組 | -32768 ~ 32767 | 0 |
| 長整型(long) | 8位元組 | -9223372036854775808L ~ 9223372036854775807L | 0 |
| 位元組型(byte) | 1位元組 | -128 ~ 127 | 0 |
| 浮點型(float) | 4位元組 | -3.40292347E+38 ~ 3.40292347E+38 | 0.0f |
| 雙精度浮點型(double) | 8位元組 | -1.79769313486231570E+308 ~ 1.79769313486231570E+308 | 0.0d |
| 布爾型(boolean) | 1位元組 | true 或 false | false |
| 字符型(char) | 2位元組 | ‘\u0000 ~ u\ffff’ | ‘\u0000’ |
2.3 型別轉換
boolean 型別不能轉換成任何其它資料型別,
自動型別轉換: 容量小的型別自動轉換成容量大的資料型別,

byte,short,int 不會互相轉換,它們三者在計算時會轉換成 int 型別,
強制型別轉換:容量大的型別轉換成容量小的資料型別時,要加上強制轉換符:
long l = 100L;
int i = (int)l;
注意:
有可能造成精度降低或資料溢位,使用時要小心,
2.4 關鍵字大全
Java 中有一些賦予特定的含義,有專門用途的字串稱為關鍵字(keyword),全部都為小寫,

三、方法的使用
3.1 概述
方法用于封裝一段特定的邏輯功能,方法的主要要素有:權限修飾符、方法名、引數串列和回傳值,
格式:
權限修飾符 回傳值型別宣告 方法名稱(引數串列){
方法中封裝的邏輯功能;
return 回傳值;
}
3.2 權限修飾符詳解

3.3 回傳值詳解
- 方法呼叫結束后可以回傳一個資料,稱之為回傳值,
- 方法在宣告時必須指定回傳值的型別,
- 通過 return 陳述句回傳,return 陳述句的作用在于結束方法且將資料回傳,
- 如果方法沒有回傳值(即方法不需要回傳資料),需將回傳值型別宣告為 void,
3.4 引數串列詳解
- 方法的引數串列:在呼叫時傳遞給方法,需要被方法處理的資料,
- 在方法定義時,需要宣告該方法所需要的引數變數,
- 在方法呼叫時,會將實際引數值傳遞給方法的引數變數,必須保證傳遞引數的型別和個數符合方法的宣告,
3.5 方法實體
//回傳較大的數
public static int max(int num1, int num2){
return num1 > num2 ? num1 : num2;
}
四、運算子的使用
4.1 算術運算子

++ 運算子:
- 如果是變數前綴:先對此變數加1,再執行其他的操作,
- 如果是變數后綴:先執行當前陳述句的其他操作,再對此變數加1,
-- 運算子:
- 如果是變數前綴:先對此變數減1,再執行其他的操作,
- 如果是變數后綴:先執行當前陳述句的其他操作,再對此變數減1,
實體:
/**
* ++和--放在變數前后的區別,注意觀察運算結果
*/
public class IO_test02 {
public static void main(String[] args) {
int i = 3;
System.out.println(i++);
System.out.println(i);
System.out.println("-----------------------");
int j = 3;
System.out.println(++j);
System.out.println(j);
System.out.println("-----------------------");
int k = 3;
System.out.println(k--);
System.out.println(k);
System.out.println("-----------------------");
int n = 3;
System.out.println(--n);
System.out.println(n);
}
}
運行結果:

4.2 賦值運算子
賦值運算子作用是將一個值賦值給一個變數,運算順序從右到左,

4.3 關系運算子
關系運算子作用是比較兩邊的運算元,結果總是 boolean 型的,

4.4 邏輯運算子
邏輯運算子用于對 boolean 型結果的運算式進行運算,運算結果總是 boolean 型,

4.5 字串連接運算子
String s = "she "+"is “+“my girl!”,結果為"she is my girl!”
"+"除了可用于字串相連接,也能將字串與其它的資料型別相連成一個新的字串,
如:String s = “你好”+1024;
結果為“你好1024”
實體:
public class IO_test01 {
public static void main(String[] args) {
String s = "she "+"is "+"my girl!";
System.out.println(s);
String s1 = "你好"+"1024";
System.out.println(s1);
}
}
運行結果:

4.6 三目運算子
X?Y:Z
X為 boolean 型別運算式,先計算 x 的值,若為 true,整個三目運算的結果為運算式y的值,否則整個運算結果為運算式 z 的值,
實體:
public class IO_test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
System.out.println(num1>num2?num1+"大":num2+"大");
}
}
運行結果:

五、變數作用域以及轉義字符
5.1 變數作用域
在區域變數中,內部范圍可以訪問外部范圍的變數,外部范圍不能訪問內部范圍的變數,
實體1:
public class IO_test02 {
public static void main(String[] args) {
int a = 2,b = 3;
{
System.out.println(a+b);
}
}
}
運行結果:

實體2:
/**
* 變數的作用域
* 代碼分為結構定義陳述句和功能執行陳述句,
* 功能執行陳述句必須以英文分號結尾,
*/
public class IO_test01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = a+b;
System.out.println(c);
say(c);
}
private static void say(int d) {
System.out.println(d);
}
}
運行結果:

5.2 轉義字符

實體:
public class T8 {
public static void main(String[] args) {
System.out.println("乘法口訣表");
for(int i=1;i<=9;i++){
for (int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
}
運行結果:

結尾(附上一份ASCII表)

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/255196.html
標籤:java
上一篇:Java核心基礎
