/*
关于Java中的整数型
数据类型 占用空间 默认值 取值范围
--------------------------------------------------------------
byte 1 0 [-128~127]
short 2 0 [-32768~32767]
int 4 0 [-2147483648~2147483647]
long 8 0L
java语言中的“整数型字面值”被默认当做int类型来处理,要让这个“整数型字面值”被当做
long类型来处理的话,需要在“整数型字面值”后面添加1\L,建议使用大写的L
Java语言中的整数型字面值有三种表达方式:
1.十进制【是一种缺省默认的方式】
2.八进制【在编写八进制整数型字面值的时候需要以0开始】
3.十六进制【在编写十六进制整数型字面值的时候需要以0x开始】
*/
public class java
{
public static void main(String[] args) {
int a=10;
int b=010;
int c=0x10;
//整数型字面值以0开头的,后面的一串数字就是八进制
//整数型字面值以0x开头的,后面的一串数字就是十六进制
System.out.println(a); //10
System.out.println(b); //8
System.out.println(c); //16
long x=123;
//123整数型字面值被当做int类型,占用4个字节
//x变量在声明的时候是long类型,占用8个字节
//小容量可以自动转换为大容量,被称为自动类型转换机制
//int类型的字面值123赋值给long类型的变量x,存在类型转换
//int类型转换为long类型
//long类型是大容量
//int类型是小容量
//如果后面的数字不是123,而是超出int类型的取值范围的数字,则无法转换long类型,
//除非在这个数字后面添加一个L,代表转换为Long类型
System.out.println(x);
// long x=100L;
//100L是long类型字面值
//x是Long类型变量
//不存在类型转换,直接复制
// int y=x;
//x变量是Long类型,8个字节
//y变量是int类型,4个字节
//编译错误,因为大容量转换成小容量,需要进行强制类型转换
//强制类型转换需要加“强制类型转换符”
//加上强制类型转换符后编译可以通过,但是运行阶段可能损失精度
//所以强制类型转换谨慎使用,因为损失精度后可能损失很严重
//强制转换原理:
//原始数据:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001
//强制转换后的数据: 00000000 00000000 00000000 00000001
//将左边的二进制砍掉,精度有所损失
}
}