引用類型
對象狂鞋、數(shù)組都是引用數(shù)據(jù)類型躏结;所有引用類型的默認值都是null;一個引用變量可以用來引用與任何與之兼容的類型夸研。
Java常量
常量代表程序運行過程中不能改變的值诚纸。在java中使用final關(guān)鍵字來修飾常量,聲明方式和變量類似陈惰,注意聲明常量時畦徘,必須立即為其賦值;常量的語法格式如下:
final 數(shù)據(jù)類型 常量名稱 = 值抬闯;
final 數(shù)據(jù)類型 常量名稱1 = 值1井辆, 常量名稱2 = 值2,……常量名稱n = 值n溶握;
final double PI = 3.1415926;
雖然常量名也可以用小寫杯缺,但為了便于識別,通常使用大寫字母表示常量睡榆。
byte萍肆、int袍榆、long、和short都可以用十進制塘揣、16進制以及8進制的方式來表示包雀。
當(dāng)使用常量的時候,前綴0?表示8進制亲铡,而前綴0x代表16進制才写。例如:
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
自動類型轉(zhuǎn)換
自動類型轉(zhuǎn)換必須滿足轉(zhuǎn)換前的數(shù)據(jù)類型的位數(shù)要低于轉(zhuǎn)換后的數(shù)據(jù)類型,例如: short數(shù)據(jù)類型的位數(shù)為16位奖蔓,就可以自動轉(zhuǎn)換位數(shù)為32的int類型赞草,同樣float數(shù)據(jù)類型的位數(shù)為32,可以自動轉(zhuǎn)換為64位的double類型吆鹤。
package com.imooc;
public class DataType {
public static void main(String[] args) {
//定義一個char類型
char c1='a';
//char自動類型轉(zhuǎn)換為int
int i1 = c1;
System.out.println("char自動類型轉(zhuǎn)換為int后的值等于"+i1);
//定義一個char類型
char c2 = 'A';
//char 類型和 int 類型計算
int i2 = c2+1;
System.out.println("char類型和int計算后的值等于"+i2);
}
}
解析:c1的值為字符'a',查ASCII碼表可知對應(yīng)的int類型值為97厨疙,'A'對應(yīng)值為65,所以i2=65+1=66疑务。
整型轰异、實型(常量)、字符型數(shù)據(jù)可以混合運算暑始。運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型婴削,然后進行運算廊镜。
轉(zhuǎn)換從低級到高級。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則:
1. 不能對boolean類型進行類型轉(zhuǎn)換唉俗。
2. 不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象嗤朴。
3. 在把容量大的類型轉(zhuǎn)換為容量小的類型時必須使用強制類型轉(zhuǎn)換。
4. 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度虫溜,例如:
int i = 128;
byte b = (byte)i;
System.out.println(b);
因為byte類型時8位雹姊,最大值為127,所以當(dāng)強制轉(zhuǎn)換為int類型值128時候就會導(dǎo)致溢出衡楞。
- 5. 浮點數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到吱雏,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45;
強制類型轉(zhuǎn)換
1. 數(shù)據(jù)類型必須是兼容的
2. 格式:(type)value瘾境; type是要強制類型轉(zhuǎn)換后的數(shù)據(jù)類型 實例:
int d =10;
byte a = (byte)d;
隱含強制類型轉(zhuǎn)換
- 1. 整數(shù)的默認類型時int
- 2. 浮點型不存在這種情況歧杏,因為在定義float類型時必須在數(shù)字后面跟上F或者f