天天看點

Java核心技術解析詳解

Java核心技術解析詳解

1.資料類型

包含八種基本類型,其中四種整形(int/short/long/byte),兩種浮點類型(float/double),一種用于表示Unicode編碼的字元類型char,一種表示真值的boolean類型整形大小排序long(接近正無窮)>int(2147483647)>short(32767)>byte (127)浮點類型大小排序 double>float。

浮點計算建議使用BigDecima類關于類型強轉

整型值和布爾值之間不能進行互相轉換

2.變量

變量是指記憶體中的一個存儲區域,該區域要有自己的名稱(變量名)、 類型(資料類型),該區域的資料可以在同一資料類型的範圍内不斷變 化值;

變量的聲明

每個變量都有一個類型(type)。變量的資料類型總是在變量名之前,并 必須以分号結束,變量名中所有的字元都是有意義的,并且大小寫敏感。

變量名不能使用Java保留字作為變量名。變量名的長度基本上沒有限 制。可以在一行中聲明多個變量(但不建議使用,應逐一提高代碼可讀性 )

變量初始化

聲明變量後,必須用指派語句對變量進行顯示初始化,未初始化變量會 被Java編譯器認為認為語句序列錯誤引起 ERROR–variable not initialized 錯誤變量初始化可以在一行中進行,也可以在多行中進行

一行: int a = 1;

多行: int a;

    a = 1;

變量初始化聲明可以放在代碼中的任何位置,但是按照可讀性原則建議盡可能的靠近變量第一次使用的地方

3.常量

在Java中,利用關鍵字final 訓示常量

示例:

final double CM_PER_INCH = 2.54;

關鍵字 final 表示這個變量隻能被指派一次。一旦被指派之後,就不能 夠再更改了。習慣上,常量名使用全大寫。

在 Java 中,經常希望某個常量可以在一個類中的多個方法中使用,通 常将這些常量稱為類常量。可以使用關鍵字 static fina設定一個類常量。示例:

public static final double CM_PER_INCH = 2.54;

類常量的定義位于main()的外部。是以,在同一個類的其他方法中也可以使用這個常量。而且,如果一個常量被聲明為 public,那麼其他類的方法也可以使用這個常量。

一般調用方法為 類名.常量名

4.運算符

在 Java 中,使用算術運算符 +、-、 *、/ 表示加、減、 乘、除運算 。 當參與 / 運算的兩個操作數都是整數時, 表示整數除法;否則,表示浮點除法。 整數的求餘操作(有時稱為取模)用 % 表示。例如, 15/2 等于 ,7 15%2 等于 1 , 15.0/2 等于 7.50需要注意,整數被 0 除将會産生一個異常, 而浮點數被 0 除将會得到無窮大或 NaN 結果。

數學函數與常量

在Java中,主要使用Math和number類進行計算,number類包含(byte short integer long double float),char 和 boolean 不支援計算,Number 類屬于 java.lang 包。

示例:

import static java.1ang.Math.;

import java.lang.Number.;

System.out.println("a = " + sqrt(a));

其中 sqrt() 為求平方根,sqrt()為靜态方法

常用方法

Math.sqrt(16);  //4.0 – 計算平方根

Math.cbrt(8);  //2.0 – 計算立方根

Math.hypot(3,4);  //5.0 - 計算(x的平方 + y的平方)的立方根(勾三股四

Math.pow(3,2);  //9.0 – 計算a的b次方

Math.exp(3);  //20.0855369231 – 計算e^x的值

Math.max(7,18);  //18 – 輸出最大值

Math.min(2,3,4);  //2 – 輸出最小值

Math.abs(-10);  //10 – 求絕對值

Math.abs(16);  //16

Math.ceil(10.8);  //11 – 傳回整數值(大)

Math.ceil(-10.8);  //10

Math.ceil(0.0);  //0.0

Math.ceil(-0.0);  //-0.0

Math.floor(10.8);  //10.0 – 傳回整數值(大)

Math.floor(-10.8);  //-11.0

Math.floor(0.0);  //0.0

Math.floor(-0.0);  //-0.0

Math.random();  //0.1245// – 輸出[0,1)間的随機數 0.8979626325354049

Math.random()*100;  // – 輸出[0,100)間的随機數 32.783762836248144

Math.rint(10.8);  //11.0 – 四舍五入(傳回double值)

Math.rint(10.2);  //10.0

Math.rint(-10.5);  //-10.0

Math.rint(-10.51);  //-11

Math.round(16);  //16 – 四舍五入(傳回long值)

Math.round(-16);  //-16

Math.nextUp(16);  //16.0000001 – 傳回比A大一點的數

Math.nextDown(16);  //15.99999999-- 傳回比A小一點的數

Math.nextAfter(16,17);  //16.1111111 – 傳回大于A小于B的數

數值類型轉換

在Java中,經常需要将一種數值類型轉換為另一種數值類型合法轉換 表示無資訊丢失的轉換。

其中合法轉換:

        char

        ↓

byte -> short -> int    ->      long      (損失)↓↙(損失)↘↓(損失)

      float    ->      double

其中int可無損失轉換為long、double

float可無損失轉換為double

int轉float、long轉double、long轉float都可能有精度丢失

強制類型轉換

在Java中,如果需要由高精度轉換為低精度時,可能需要強制類型轉換。

強制類型轉換的文法格式是在圓括号中給出想要轉換的目标類型,後面緊跟待轉換的變量名。

例如:

double x = 9.997;

int nx = (int) x;// nx = 9

強制類型轉換通過截取小數部分将浮點值轉換為整型如果想對浮點數進行舍入運算可以在後面加入Math.round方法

int nx = (int) Math.round(x);

指派運算符

是指在指派過程中,加入二進制運算符,是對指派并運算的簡寫

例如:

x += 4 等價 x = x+4;

同理可有 +=、-=、*=、/=、%=

注意:在進行指派運算時,如果發生強制類型轉換,會進行強制轉換操

例如

x+=4.5 等價于 (int)(x + 4.5)

自增自減運算符

在Java中,提供了自增(++) 自減(–)運算符;n++是将變量n的目前值加1,n–是将n的 值減1。由于這些運算符會改變變量的值,是以它們的操作數不能是數值,當寫成4++ 時,就是不合法的語句。

除了以字尾形式出現外,自增自減運算符還會以字首方式出現,++n,–n都會使變量 值加1或減1.在表達式中使用時,運算符在前會先進行+1或-1,運算符在後,會使用原來的值。

例如

int m = 7;

int n = 7;

int a = 2 * ++m;//a = 16,m = 8

int b = 2 * m++;//b = 14,n = 8

關系和boolean運算符

關系運算符

==(判斷等号兩端值是否相同)

!=(判斷等号兩端值是否不同)

<(小于) >(大于) <=(小于等于) >=(大于等于)

邏輯運算符

&& 邏輯與 自左到右 2>1 && 3<5 true 表示必須同時滿足兩邊條件才為true

|| 邏輯或 自左到右 2<1 || 2>5 false 表示滿足任意一邊條件即可為true

! 邏輯非 自右到左 !(2>4) true 表示取右邊條件的相反數

優先級!運算級别最高,&& 運算高于||運算。!運算符的優先級高于算數運算符,而

&&和||運算符則低于關系運算符

三元操作符

?: 表示如果條件為true,表達式 condition?expression1:expression2執行expression1的值,否則計算為expression2的值

例如

x<y?x:y 會傳回x和y中較小的一個

位運算符(一般不使用)

處理整型類型時,可以直接對組成整型數值的各個位完成操作。這意味着可以使用掩 碼技術得到整數中的各個位。位運算符包括:

& (“and”) | (“or”) A (“XOr”) ~ (“not”)

有》《和 運算符将位模式左移或右移。

》> 運算符會用 0 填充高位

括号與運算符級别

如果不使用圓括号, 就按照給出的運算符優先級次序進行計算。同一個級别的運算符按照從左到右的次序進行計算(除了表中給出的右結合 運算符外。)

示例:

a && b || c

等價于

(a && b) || c

a += b += c

等價于

a += (b += c)

運算符優先級

運算符 結合性

[].()(方法調用) 從左往右

!~++ – +(一進制加法) -(一進制減法) ()(強制類型轉換) new 從右往左

  • / % 從左往右
    • 從左往右

      << >> >>> 從左往右

      < <= > >= instanceof 從左往右

      == != 從左往右

      & 從左往右

      ^ 從左往右

      | 從左往右

      && 從左往右

      || 從左往右

      ?: 從右往左

      = += -= *= /= %= &= |= ^= <<= >>= >>>= 從右往左

      優先級由高到低排列

枚舉類型

有時候,變量的取值隻在一個有限的集合類。但其中可能會儲存一個錯誤的值針對這種情況可以自定義枚舉類型。枚舉類型包括有限個命名的值。例如

enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};

可以通過聲明這種類型的變量給予指定變量指派

Size s = Size.MEDIUM;

Size類型的變量隻能存儲這個類型聲明中給定的某個枚舉值,或者null值,null表示這個變量沒有設定任何值。

文章來自:https://www.itjmd.com/news/show-5357.html