引用类型
对象、数组都是引用数据类型;所有引用类型的默认值都是null;一个引用变量可以用来引用与任何与之兼容的类型。
Java常量
常量代表程序运行过程中不能改变的值。在java中使用final关键字来修饰常量,声明方式和变量类似,注意声明常量时,必须立即为其赋值;常量的语法格式如下:
final 数据类型 常量名称 = 值;
final 数据类型 常量名称1 = 值1, 常量名称2 = 值2,……常量名称n = 值n;
final double PI = 3.1415926;
虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。
当使用常量的时候,前缀0�表示8进制,而前缀0x代表16进制。例如:
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
自动类型转换
自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
package com.imooc;
public class DataType {
public static void main(String[] args) {
//定义一个char类型
char c1='a';
//char自动类型转换为int
int i1 = c1;
System.out.println("char自动类型转换为int后的值等于"+i1);
//定义一个char类型
char c2 = 'A';
//char 类型和 int 类型计算
int i2 = c2+1;
System.out.println("char类型和int计算后的值等于"+i2);
}
}
解析:c1的值为字符'a',查ASCII码表可知对应的int类型值为97,'A'对应值为65,所以i2=65+1=66。
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
1. 不能对boolean类型进行类型转换。
2. 不能把对象类型转换成不相关类的对象。
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4. 转换过程中可能导致溢出或损失精度,例如:
int i = 128;
byte b = (byte)i;
System.out.println(b);
因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。
- 5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45;
强制类型转换
1. 数据类型必须是兼容的
2. 格式:(type)value; type是要强制类型转换后的数据类型 实例:
int d =10;
byte a = (byte)d;
隐含强制类型转换
- 1. 整数的默认类型时int
- 2. 浮点型不存在这种情况,因为在定义float类型时必须在数字后面跟上F或者f