首頁  >  文章  >  Java  >  Java基礎講解--基本資料型別與運算

Java基礎講解--基本資料型別與運算

巴扎黑
巴扎黑原創
2017-07-17 14:31:241325瀏覽

編碼

ASCII--0~127  65-A  97-a

西歐碼表---ISO-8859-1---0-255---1個字節

gb2312----0-65535---gbk---2個位元組

Unicode編碼系統---utf-8---3個位元組

中  f

bit位元Byte位元組1Byte = 8bit   1KB=1024B  MB GB TB PB---電腦中儲存單位

常數

整數常數-- -所有的整數3,99,107

小數常數---所有的小數  3.5  100.9

字元常數---用單引號將一個字母、數字、符號標識起來'a'  ' =' ' '

字串常數---用雙引號將一個或多個字元標識起來“abc” “234” “q2” “”

布林常數---用於表示邏輯值---true/false

空常數---null

#5-整數, 5.0-小數  '5'-字元「5」-字串'5.0'-寫法錯誤“5.0”-字串

進位

二進位:滿二進一,0~1 1+1=10 0b10011 0b0011,從JDK1.7開始,允許以0b作為開頭來識別一個數字是一個二進位數字

八進位:滿八進一,0~7,7+1=10 要求必須以0作為開頭06  015

#十進位:滿十進一,0~9

十六進位:滿十六進一,0~9,,A~F,9+1=A f+1=10 要求以0x為開頭0x5  0xad

進位的轉換

十進位轉換成二進位:不斷除以2取餘,然後將餘數倒排

 

二進位轉換成十進位:從低位次起,位元次乘以2的位元次冪,然後求和

 

二進位轉換成八進位:從低位次起,每三位分割為一組,不足三位補0,產生一位八進制數字,將這些數字按序排列即可

八進制轉換成二進制:一變三---一位八進制數字產生三位二進制數字

二進位轉換成十六進位:四變一的過程

變數

 

System.out.println(i);

int i = 5;---不行---變數必須先宣告在使用

int i;

System.out.println(i);---不行----變數在使用之前必須先初始化

資料型別

基本資料型別

數值型別

整數型別

byte---位元組型---1個位元組--- -2^7~2^7-1 --- -128~127

byte b = 5; byte b2 = -128;

# short---短整型---2個位元組--- -2^15~2^15-1 --- -32768~32767

short s = 54; short s = -900 ;

int---整數型---4個位元組--- -2^31~2^31-1

int i = 100000;

int  j = 100_000_000;--從JDK1.7開始是允許的。在編譯的時候會自動忽略這些_ ->  int  j = 100000000;

int  i = 00001111;---八進位

Java中整數預設型別就是int

#long---長整型---8個位元組--- -2^63~2^63-1---以L作為結尾標識這個數字是一個long類型的數字

#長 l = 3L;

浮點型

float---單一精確度---4個位元組---必須以f作為結尾

float f = 3.2f;

double---雙精確度---8個位元組

Java中小數預設是double類型

double d = 3.5;

double d = 4.6D;---可以

double d = 3.9e4; //是十進制的科學計數法

double d = 0x3p2; //是十六進制的科學計數法  -> 12

字符型

char---2個位元組--- 0 ~65535

char c  = 'a';

char c = '中';

布林型

boolean---true/false

boolean b = false;

引用資料型別

類別---class  介面---interface   陣列---[]

資料型別的轉換

隱含轉換/自動型別轉換

byte b = 100;

int i = b;

long l = 63;---可以---當整數的值在int型別的範圍內的時候,可以不用加入L這個結尾

規律一:小的型別可以轉換成大的型別---byte->short->int->long  float->double

int i = 5;

float f = i;

long l = 6;

float f = l;

規則二:整數可以轉換為小數,但可能產生精確度損失

char c = 'a';

int i = c;

規律三:字元型可以轉換為整數

short s = 'a';---可以

char c = 100;---可以

 

#char c = 'a' ;

short s = c;---不可以

定義了char類型的變數c,儲存的資料是一個字符,不需要檢查特定的字元編碼,當賦值給short類型的時候,short需要檢查這個字元對應的編碼是否在short類型的取值範圍內,這個時候無法確定這個字元對應的特定編碼,由於short類型的取值範圍和char類型沒有完全重合,為了防止出現超過範圍的情況,不允許賦值。

 

short s = 97;

char c = s;--不行

 

明確轉換/強制類型轉換

long l = 54;

int i = (int)l;

double d = 3.5;

int i = (int)d ;---小數強轉成整數的時候,小數部分直接捨棄

double型別不能精確地儲存小數

Hexadecimal--十六進位

Decimal--十進位

Octal---八進位

Binary--二進位

運算子

算術運算子

+加-減*乘/除%取模++自增--自減+字串拼接

#int i = 5210 / 1000 * 1000;--->i = 5000;

注意:

#1. 整數運算完成之後結果一定是整數

#2. 整數除以0的時候,編譯通過,執行報錯---ArimeticException---算術異常

#3. 小數除以0的結果是Infinity

4. 0/0.0的結果是NaN---Not a Number---非數字

5. byte/short型別在運算的時候會自動提升為int型別

 

%取餘運算

-5%3=-2   -4%3=-1  -3%7=-3

5%-3=2  7%-2=1  2%-8= 2

-5%-3=-2  -9%-3=0

#對於負數的取餘,先依照正數的取餘運算,看取餘符號左邊的數字的符號,如果左邊是負數,那麼結果就是負數

5%1.2=0.2   6%1.3=0.8

4.3%1.4=0.1

 

##4.3%1.4=0.1

 

#++/--

對於++在原來的基礎上自增1

int i = 5;

int j = ++i;--- > i自增1,然後將i的值賦值給j---先自增,再運算

int j = i++;--->先取得i的值5,i自增變成6,然後將取得的值5賦值給j---先運算,再自增

int i = 3;

int j = ++i * 2;-> ; j = 8;

int j = i++ * 2;->j = 6

 

int i = 6;

##int j = i++ + ++i;->i = 8;  j = 14;

int j = ++i + i++;->i = 8; j = 14 

 

byte b = 5;

b++;---JVM在底層會對結果進行強制型別轉換,將結果再轉換為byte型別

 

# char c = 'a';

System.out.println(c + 4);--可以

char c2 = 'd';

System.out. println(c + c2);---提升為int型別之後再進行運算

 

+ 字串拼接運算

「a」 + “b”-- -> “ab”

“a” + 3---> “a3”

“a” + true-> “atrue”

##2 + 4 + “f”-> “6f”

“f” + 2 + 4-> “f24”

賦值運算子

##= += -= *= /= %= &= |= ^= <<= >>= >>>= ~=

int i= 5;

i + = 3; -> i = i + 3; -> i = 8;

i -= 2;-> i = i - 2;-> i = 3;

int j;

j += 4;---不行

 

int i = 5;

i += i -= i *= 5;--> i = -15;

i = 5 + ( 5 - (5 * 5)) ;

i += i -= i *= ++ i;--->i = -20;

i += i*= i-= (i++ + --i);---> i = -20;

i = 5 + ( 5 * (5 - (5 + 5)));

 

byte b = 5;

b += 3;---可以

byte b = 125;

b += 3;---可以--- -128

比較/關係運算子

= =相等!=不等> < >= <= instanceof

3 == 4;-> false

instanceof---判斷物件與類別的關係的- -只能用於引用資料型別

String s = “abd”;

System.out.println(s instanceof String);---true

System. out.println(“def” instanceof String);---true

邏輯運算子

用於運算邏輯值

&與|或!非^異或&&短路與||短路或

true&true=true true&false=false false&true=false false&false=false

true|true=true true|false=true false|true=true false|false= false

!true=false !false=true

true^true=false true^false=true false^true=true false^false=false

#對於&&,如果前一個表達式的值為false,那麼就能確定整個表達式的值為false,&&後邊的運算就不再進行了

三元/三目/條件運算子

邏輯值?表達式1:表達式2

如果邏輯值為true,執行表達式1;反之執行表達式2

int i = 5, j = 7;

i > j ? System.out.println(i): System.out.println(j);---不行!三元運算子運算完成之後必須有結果!

double d = i > j ? i  * 2.5 : j;---兩個表達式的回傳值類型要麼一致,要麼相容

從控制台取得資料

import java.util.Scanner; //寫在package之下,class 之上

Scanner s = new Scanner(System.in);

int i = s. nextInt();

double d = s.nextDouble();

String str = s.nextLine();

String str2 = s.next();# ##

以上是Java基礎講解--基本資料型別與運算的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn