java編程思想 -- java概述

(1)內存分配

  1. 寄存器: 在運算器內部,運行速度非常快,但是你不能控制。
  2. 棧(stack): 在RAM內,存放變量。
  3. 堆(heap): 在RAM內,存放對象。速度比stack要慢
  4. 常量 : 常量值直接存儲在程序代碼內部,這樣做是安全的,因爲它的值永遠不會改變
  5. 非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)表達式出現的最大的數據類型決定了表達式最終結果的數據類型。

注意

  1. char,byte,short提升爲int,然後再轉化成較小類型,有可能造成數據丟失。
  2. int 與 int 相乘不用進行類型轉換,但是有可能造成溢出,所以也要小心。
        int i = 1000000000 * 2000;

        System.out.println(i);  // --> -1454759936

問題

(1)對基本數據類型執行算數運行或按位運算,只要類型比int小(即byte和short和char),那麼在運算之前,這些值會全部轉化爲int,最終結果也是int,如果把這些值付給較小的類型,就必須使用強制類型轉換。可能造成數據丟失。
怎麼截取數據的?????

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