/*
关于Java语言中的整形数据:
byte 1byte(8bit) -128 ~ 127
short 2byte
int 4byte
long 8byte
整数型有三种表示方式
1. 十进制
2. 八进制 以0开头
3. 十六进制 以0x开头
*/
public class DataTypeTest01{
public static void main(String[] args){
// 十进制
int i = 10; // 常用类型
// 八进制
int j = 010;
// 十六进制
int k = 0x10;
System.out.println("i = "+i);
System.out.println("j = "+j);
System.out.println("k = "+k);
// 将一个int类型 100字面值赋值给m变量
int m = 100;
// 将int类型 150字面值赋值给 long类型的n
// int类型的容量小于long类型
// 默认已经存在数据类转换,只不过是“自动类型转换”
long n = 150;
// 由于出现了“L” 就会把160看成long类型
// 以下程序不存在类型转换,只是一个普通的赋值运算
long x = 160L;
// 可以将 int类型 转换成 long类型 “自动类型转换”
long y = 234233633; // 如果int类型的值小于2^31 - 1
// 什么时候使用"L"或者“l”,建议使用“L”
// 如果该数值大于 2^31-1就用L 并且是 long类型
long t = 8797979L;
System.out.println("L = " + t);
}
}
/*
byte 类型
*/
public class DataTypeTest02{
public static void main(String[] args){
long i = 1000L;
// 不能自动类型转换
// 需要强制类型转换,添加强制类型转换符()
// 添加(int)后,编译通过了,但是程序在运行阶段可能损失精度,所以一定要谨慎使用
// 大容量long 像小容量转换,需要强制类型转换
int j = (int)i;
// byte 取值范围(-128 ~ 127)只要不超出范围
byte k = 10;
byte m = 127;
// byte n = 128; 错误写法 超出范围
// short 取值范围(-32768 ~ 32767)
short x = 23423;
// char 取值范围(0 ~ 65535)
// 总结:如果整数没有超出byte,short,char取值范围,可以直接将这个整数赋值给byte,short,char
char y = 90;
char u = 65535;
int v = 58787;
char w = (char)v;
System.out.println("j = " + j + " u = " + u + "w = " + w);
}
}
/*
关于 浮点型
float 4个字节
double 8个字节
*/
public class DataTypeTest03{
public static void main(String[] args){
double i = 1.2;
// 强制类型转换
float y = (float)i;
// 自动赋值运算符
float x = 1.2F;
System.out.println("i = " + i + " y = " + y + " x = " + x);
}
}
/*
java中的布尔类型
1. 只有两个值:true/false 没有0和1
2. 主要用在 逻辑运算符和条件控制语句中
*/
public class DataTypeTest04{
public static void main(String[] args){
//boolean i = 1;
boolean sex = true;
if(sex){
System.out.println("男人");
} else {
System.out.println("女人");
}
System.out.println("sex = " + sex);
}
}
/*
byte,short,char做混合运算的时候,需要先各自转换成int在做运算
*/
public class DataTypeTest05{
public static void main(String[] args){
byte i = 10;
short j = 20;
int k = i + j ;
byte m = (byte)(i + j);
System.out.println("k = " + k + "m = " + m);
/*
java程序在运行的时候分两个时期
1. 编译期
2. 运行期
在编译阶段只是知道 i+j 是int类型
int 类型无法直接赋值给 byte类型
*/
byte n = 100;
}
}