(1)內存分配
- 寄存器: 在運算器內部,運行速度非常快,但是你不能控制。
- 棧(stack): 在RAM內,存放變量。
- 堆(heap): 在RAM內,存放對象。速度比stack要慢
- 常量 : 常量值直接存儲在程序代碼內部,這樣做是安全的,因爲它的值永遠不會改變
- 非RAM存儲: 數據完全存活於程序之外。例如:流對象和持久化對象。
(2)基本數據類型
基本數據類型 | 大小 | 最小值 | 最大值 | 包裝類型 | 默認值 |
---|---|---|---|---|---|
boolean | - | - | - | Boolean | false |
char | 16-bit | Unicode 0 | Unicode (2^16)-1 | Character | ‘\u0000’(null) |
byte | 8-bit | -128 | 127 | Byte | (byte)0 |
short | 16-bit | -2^15 | (2^15)-1 | Short | (short)0 |
int | 32-bit | -2^31 | (2^31)-1 | Integer | 0 |
long | 64-bit | -2^63 | (2^63)-1 | Long | 0L |
float | 32-bit | IEEE 754 | IEEE 754 | Float | 0.00f |
double | 64-bit | IEEE 754 | IEEE 754 | Double | 0.00d |
void | - | - | - | Void |
高精度使用BigInteger 和 BigDecimal
java中的數組
java中的數組在運行時會進行下標檢查,所以不會出現數組越界的情況。
副作用
對於一個表達式,它的效果分爲兩部分——結果和副作用。
結果就是表達式的值,比如1+1得結果就是2。
副作用是表達式除了產生結果以外產生的其他效果。比如i++,結果i原來的值,副作用是給i的內容+1。
短路
常數表示
int i = 11;
long l = 22L;
float f = 33.0F;
//小數默認是double類型
double d1 = 44.44;
double d2 = 55.55D;
/**
* 十六進制
* 0x ==> ‘零X’開頭表示十六進制整數
*/
int hexadecimal = 0X1000;
/**
* 八進制
* 0 ==> 零開頭表示八進制小數
*/
int octonar = 01000;
/**
* 1.39e-43 ==> 表示1.39 * 10^43
* 注意:
* 在java中, e 代表10的冪次
* 在數學中,e代表2.718.....
*/
double scientific = 1.39e43;
按位運算符 & | ^
移位運算符
待補充
類型轉換
- 擴張類型
int – > double
int – > float
等等
不用強制轉換,因爲新的數據類一定能夠容納久的數據類型 - 窄化轉換
double –> int
double –> float
等等
必須進行強制轉換,因爲新的類型可能無法容納那麼多信息,可能照成數據丟失。
截尾
浮點數轉化爲整型值會進行結尾取值,即小數點後的值全部拋棄
double above = 0.7;
double below = 0.3;
float fabove = 0.7f;
double fbelow = 0.3f;
System.out.println((int)above); // ==> 0
System.out.println((int)below); // ==> 0
System.out.println((int)fabove); // ==> 0
System.out.println((int)fbelow); // ==> 0
四捨五入
四捨五入需要使用java.lang.Math.round()方法
提升
(1)對基本數據類型執行算數運行或按位運算,只要類型比int小(即byte和short和char),那麼在運算之前,這些值會全部轉化爲int,最終結果也是int,如果把這些值付給較小的類型,就必須使用強制類型轉換。可能造成數據丟失。
char c = 'a';
char cc = (char) +c; // +c 已經是int類型的了
(2)表達式出現的最大的數據類型決定了表達式最終結果的數據類型。
注意
- char,byte,short提升爲int,然後再轉化成較小類型,有可能造成數據丟失。
- int 與 int 相乘不用進行類型轉換,但是有可能造成溢出,所以也要小心。
int i = 1000000000 * 2000;
System.out.println(i); // --> -1454759936
問題
(1)對基本數據類型執行算數運行或按位運算,只要類型比int小(即byte和short和char),那麼在運算之前,這些值會全部轉化爲int,最終結果也是int,如果把這些值付給較小的類型,就必須使用強制類型轉換。可能造成數據丟失。
怎麼截取數據的?????