本博主是 JavaScript 出身的,使用的是弱類型語言;因此對於強類型語言,或者面向對象開發類型的語言,不少細節都不太習慣。本入門系列文章,都是爲了加固 強類型語言/面向對象 的一下概念、關鍵字 和 方法等知識。java
一、Java 的基本知識: 數組
1 /// Java 的源代碼的文件名 必須與公共類 的名字相同,並用 .java 做爲擴展名 (大小寫也要保持一致) 2 3 /// 命令行 編譯 和 運行java 程序: 4 /// 編譯:javac 源代碼文件名(帶擴展名 .java) -> 編譯後的的文件爲 源代碼文件名.class 5 /// 運行:java 源代碼的文件名(不帶擴展名 .class) 6 /// javac 程序是一個 Java 編譯器 7 /// java 程序啓動 Java 虛擬機,虛擬機執行編譯器放在 .class 文件中的字節碼 8 9 /// main 入口,必須聲明爲 public (Ps: 雖然有些 Java 解析器 當 main 不是 public 也能夠運行 但這點只須要知道就好了,咱們一般都是必需要爲 public 的)
二、基本類型:工具
1 /// Java 有 8 種基本類型(primitive type),其中有 4種整型、2種浮點型、1種用於表示 Unicode 的編碼的字符單元的字符類型 char 和 一種表示真值的boolean 類型。 2 /// int、short、long、byte、float、double、char 和 boolean
(A)、整型(Java 中沒有任何無符號(unsigned) 形式的 int、long、short 或者 byte 類型): 編碼
類型 | 存儲需求 | 取值範圍 | 使用場景 |
int | 4 字節 | -2 147 483 648 ~ 2 147 483 647(正好超過20億) | 最經常使用 |
short | 2 字節 | -32 768 ~ 32 767 | 底層的文件處理或者須要控制佔用存儲空間量的大數組 |
long | 8 字節 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 | 星球上的竟然人數 |
byte | 1 字節 | -128 ~ 127 | 底層的文件處理或者須要控制佔用存儲空間量的大數組 |
(B)、浮點型:spa
Java 浮點型類型 | 存儲需求 | 取值範圍 | 特色 |
float | 4 字節 | 大約 ± 3.402 823 47E + 38F (有效位數爲 6 ~ 7) | float 類型的數值後綴 F 或 f,沒有後綴的默認是 double 類型 |
double | 8 字節 | 大約 ± 1.797 693 134 862 315 70E + 308(有效位數爲 15位) | double 類型的後綴是 D 或者 d,沒有後綴的默認是 double 類型 |
Ps: 命令行
一、全部的浮點數值計算都遵循 IEEE 754 規範。
二、常量 Double.POSITIVE_INFINITY(double 類型的正無窮大)、Double.NEGATIVE_INFINITY(double 類型的負無窮大)和 Double.NaN(Double 類型的 NaN)code
三、檢測一個特定值是否是 等於 Double.NaN 只能用 Double.isNaN(特定值) 這個方法。由於全部 「非數值」 的值都認爲是不相同的。
四、Float 類型也有它本身的 正無窮大、負無窮大或者是 NaN, 把 Double 改爲 Float 就好了對象
五、浮點類型的計算仍是有偏差的,在金融計算中,不能用 由於涉及金錢方面的,要求精確。後面會說的 金融計算中,使用的 BigDecimal 類blog
(C)、char 類型:ip
一、本來是表示單個字符的,可是如今有些 Unicdoe 字符能夠用一個 char 值 描述,另外一些 Unicode 字符則須要兩個 char 值。
二、char 類型的字面量值要用 單引號括起來。
三、在 Java 的核心技術中,有大體說到 Unicode 和 char 類型,可是這部分須要理解完整的 編碼 知識,博主知識庫不充足,須要的請本身去詳情瞭解一下。
(D)、boolean 類型:
一、boolean 類型的值,就只有 true Or false 兩個值,用來斷定邏輯條件。
二、與 JavaScript 中的不一樣,Java 中的 整型值 和 布爾值 之間 不能進行相互轉換
三、變量:
1 /// 在 Java 中,每個變量都有一個類型 (type)。在聲明變量時,變量的類型位於變量名以前。 2 /// Java 中的變量名,必須是一個以字母開頭 並 由 字母或 數字構成的序列 3 /// 與其餘語言相比,Java 中的 「字母」 和 「數字」 的範圍更加大,字母包括 'A' ~ 'Z'、'a' ~ 'z'、'_'、'$' 外,還可使某種語言中表示字母的任何 Unicode 字符。好比希臘人能夠用 π,德國人能夠用 'ä'
Ps:
一、不能使用 Java 保留字 做爲變量名
二、要知道哪些 Unicode 字符屬於 Java 中的字母,可使用 Character 類的 isJavaIdentifierStart 和 isJavaIdentifierPart 去檢查
三、儘管 $ 是 一個合法的 Java 字符,但不要在本身的代碼中使用這個字符,它只用在 Java 的編譯器 或其餘工具生成的名字中。
四、雖然能夠一行聲明多個變量,但不提倡使用這種風格,由於逐一聲明每個變量能夠提升程序的可讀性。
五、變量聲明後,要初始化才能使用,不然會報 // ERROR--variable not initialized 錯誤
六、Java 中,提倡變量的聲明,儘量靠近變量第一次使用的地方,這是一種良好的編寫風格。
四、常量:
A、在 Java 中,利用關鍵 final 指示常量,例如: final double CM_PER_INCH = 2.54;
B、關鍵字 final 表示這個變量只能被賦值一次,一旦賦值後,就不可以再更改了。
C、習慣上,常量名使用全大寫。
D、在 Java 中,但願某個常量能夠在一個類中的多個方法使用,一般將這些常量成爲 類常量;使用關鍵字 static final 設置。
E、類常量 定義位於 方法的外部。
F、在 JavaScript 中 定義常量使用的是 const, 在 Java 中 const 是做爲保留關鍵字,目前未被使用。
G、在運算時候,好比 cos ,sin, tan 等數學方法,都在 Math 類中。
H、Java 中提供了兩個接近 π 和 e 的常量的近似值:Math.PI 和 Math.E
五、數值類型之間的轉換:
A、實心箭頭表示唔信息丟失的轉換,虛箭頭表示可能有精度損失的轉換。
B、若是兩個操做數有一個是 double 類型,另外一個操做數會轉換爲 double 類型;
不然,若是其中一個操做數使 float 類型,另外一個操做數將會轉成 float 類型;
不然,若是其中一個操做數爲 long 類型,另外一個操做數將會轉成 long 類型;
不然,兩個數都會被轉成爲 int 類型
C、強制類型轉換, 強制類型轉換的語法格式是圓括號中給出想要轉換的目標類型,後面緊跟待轉換的變量名,例如:
1 double x = 9.997; 2 int nx = (int) x;
D、若是強制轉換的值,超過目標類型的範圍,就會被截取成一個徹底不一樣的值。好比 int 300 轉換成 byte 類型 的實際值 爲44。
六、枚舉類型:
A、有時候變量的值只在一個有限的集合內,就要用到自定義枚舉類型,例如:銷售的服裝尺寸只有 小、中、大和超大 這四種尺寸。
1 /// 這裏定義枚舉類型 2 enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE }; 3 /// 上面定義完後,可使用這種枚舉類型 4 /// Size 類型的變量只能存儲在這個類型聲明中給定的某個枚舉值 5 /// 或者 null 值,null 表示這個變量沒有設置任何值 6 Size s = Size.MEDIUM;
七、字符串:
A、從概念上來講,Java 字符串 就是 Unicode 字符串序列。
B、Java 中沒有內置的字符串類型,而是在 標準的Java 類庫中提供了一個 預約義類,叫作 String.
C、每一個用雙引號括起來的字符串都是 String 類的一個實例。
D、Java 中的 String 是不可變字符串,沒有提供修改的字符串的方法(說的應該就是沒有 replace 方法了)
E、第四點的緣由,是由於編譯器可讓字符串共享。
F、檢測字符串是否相等,表達式:
/// s 和 t 可使字符串變量,也可使字符串字面量。 /// equals 是區分大小寫的 s.equals(t) /// 不區分大小寫可使用 equalsIgnoreCase 方法 s.equalsIgnoreCase(t)
G、不能使用 == 運算符,判斷連個字符串是否相等,這個運算符只能肯定兩個字符是否放在同一個位置上。例如:
String greeting = "Hello"; if (greeting == "Hello")... // probably true if (greeting.substring(0, 3) == "Hel")... // probably false
H、由於實際上,只有字符串常量是共享的,而 + 或 substring 等操做產生的結果並不共享。
I、空串 和 Null 串:
1 /// 空串是長度爲 0 的字符串,可使用下面的方法檢查是否爲空串: 2 if (str.length() == 0) .. 3 // 或者 4 if (str.equals(""))... 5 /// Null 串是一個特殊值,表示目前沒有任何對象與該變量關聯。 6 /// 檢查字符串是否爲 null 使用 == 7 if (str == null)... 8 /// 檢查字符串不是既不是空串,也不是 null 串時,要先判斷 null 串,由於 null 上面是沒有 length() 方法,會致使報錯的