1.2 資料型別
資料型別
Java是強型別語言:要求變數使用要嚴格符合規定,所有變數都必須先定義後才能使用。
資料型別分為兩類:
-
基本型別(primitive type)
//整數
int num1=10; //最常用
byte num2=20;
short num3=30;
long num4=40L;//Long型別要在數字後+“L”
//浮點數
float num5=50.2F;//float型別/要在數字後+"F"(同上,它們總是事很多,喜歡帶隨從)
double num6=60.06;
//字元型別
char name ='A';//只能是單個字元,不要話多
//字串
String nameA ="王二";//String 沒變黃,它不是關鍵字,是類
System.out.println("num1 = " + num1);
//布林值:是非
boolean flag=true;//注意true容易寫錯,讀出來”ch-u-true" 處 not"t-u-ture" 兔兒
boolean flag=false;
-
引用型別(Reference type)
除了基本的,就是這個不基本的資料型別(doge)
型別轉換:
java是強型別語言,所以要進行有些運算就需要用到型別轉換。
運算中,不同型別先轉化為同一型別,再進行運算。
強制轉換(高–低)
(type)變數名
int i11 = 128;
byte b2 = (byte) i11;//記憶體溢位 max=127
System.out.println(i11);
System.out.println(b2);
//結果輸出
128
-128
轉換中要注意記憶體溢位情況
自動轉換(低–高)
int i11 = 128;
double b2 = i11;
System.out.println(i11);
System.out.println(b2);
//結果輸出
128
128.0
!注意
-
不能對布林值進行轉換
-
不能把物件型別轉換成不相干的型別
-
在把大容量轉換成小容量時,強制轉換
-
轉換時可能存在記憶體溢位或者精度問題
System.out.println(23.7); System.out.println((int)23.7); System.out.println((int)-45.89f); char c123='a'; int d123=c123+1; System.out.println(d123); System.out.printIn((char)d123) //結果輸出 23.7 23 -45 98 b
-
操作比較大的數時,千萬注意溢位問題!
int money=100000000; int money1=10_0000_0000;//JDK7新特性,數字間可用下劃線分割 float money1=10_0000_0000L;//!L和F儘量大寫,要不和1和l眼瞎看不清 System.out.println(money); System.out.println(money1); int years=20; int total=money*years; long tatal1=money*years; //沒用的!,預設是int,早在轉換前已經存在問題了 System.out.printIn(tatal); System.out.println(total1); //結果輸出 1000000000 1000000000 //下劃線在輸出時不顯示 -1474836480 //計算時溢位了 ,我錢沒了! -1474836480 long total2=money*((long)years);//先把一個數轉化為long System.out.printIn(total2); //結果輸出 20000000000 //yeah,我是小螃蟹,我有鉗了
彩蛋:
什麼是位元組?
-
位(bit):計算機內部資料儲存的最小單位,11001100是一個八位二進位制數。電腦的32位和64位
-
位元組(byte):計算機中資料處理的基本單位,習慣用大寫B表示。
1B = 8 bits
1024B=1KB
1024KB=1M
1024M=1G
-
字元:計算機中使用的字母,數字,字和符號。
資料型別擴充套件
整數進位制:
-
二進位制0b
-
十進位制
-
八進位制0
-
十六進位制0x
int i =10; int i2=010;//八進位制 int i3=0x11;//16進位制 System.out.println("i = " + i); System.out.println("i2 = " + i2); System.out.println("i3 = " + i3); //結果輸出 i=10 i2=8 i3=17
浮點數:
浮點數表現位元組長度是有限而切值是離散的,存在舍入誤差,是一個大約值(接近但不等於)
最好完全避免使用浮點數進行比較!
***銀行業務怎麼表示?(面試題)***——用BigDecimal類
float f=0.1f;//0.1沒錯,記得加f
double d=1.0/10;//0.1
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
float d1=1223454554f;
float d2=d1+1;
System.out.println(d1==d2);
//結果輸出
false //?就離譜
0.1
0.1
true //?就離譜
字元:
所有的字元本質還是數字?
char c1='a';
char c2='中';
System.out.println("c1= " +c1);
System.out.println((int)c1);
System.out.println("c2= "+c2);
System.out.println((int)c2);
//結果輸出
c1= a
97
c2= 中
20013
Unicode表:(97=a ,65=A) (0~65536)兩位元組 U0000~UFFFF
char c3='\u0061';
System.out.println(c3);
//結果輸出
a
轉義字元:
// \t 製表符
// \n 換行
// ......
System.out.println("hello\tworld");
System.out.println("hello\nworld");
//結果輸出
hello world
hello
world
物件與記憶體分析(later)
String sa=new String("hello,world!");
String sb=new String("hello,world!");
System.out.println(sa==sb);
String sc="hello,world!";
String sd="hello,world!";
System.out.println(sc==sd);
//結果輸出
false
true
布林值:
boolean flag1=true;
if(flag1==true){} //萌新
if(flag1){} //老油條專用“Less is more"
//這三行功能相同
boolean 可以用if語句替代
相關文章
- python教程1.2:變數+資料型別+運算子Python變數資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 資料型別: 資料型別有哪些?資料型別
- 區別值型別資料和引用型別資料型別
- 資料型別,型別轉換資料型別
- 資料型別資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- 3. php資料型別、資料型別轉換PHP資料型別
- 基本資料型別與字串型別資料型別字串
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- JavaScript - 資料型別JavaScript資料型別
- Symbol資料型別Symbol資料型別
- 資料型別2資料型別
- JavaScript 資料型別JavaScript資料型別
- js資料型別JS資料型別
- TypeScript資料型別TypeScript資料型別
- Oracle 資料型別Oracle資料型別
- SQL 資料型別SQL資料型別
- NumPy 資料型別資料型別
- php資料型別PHP資料型別
- numpy資料型別資料型別
- JavaScript資料型別JavaScript資料型別
- 一、資料型別資料型別
- [Mysql]資料型別MySql資料型別
- MySQL資料型別MySql資料型別
- go 資料型別Go資料型別
- 基本資料型別資料型別
- Python資料型別Python資料型別
- Java資料型別Java資料型別
- MYSQL 資料型別MySQL 資料型別
- Sqlite—資料型別SQLite資料型別
- Redis資料型別Redis資料型別
- go資料型別識別Go資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- Mysql 資料型別之整數型別MySQL 資料型別
- Java資料型別及型別轉換Java資料型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別