目录
一、整数类型简单介绍
二、整型代码演示说明
package t05_整型;
/**
* 整数类型:byte short int long
*/
public class TestZX {
public static void main(String[] args) {
// testByte();
// testShort();
// testInt();
testLong();
}
/**
* long类型
* 1)为整数类型,8字节,64位,存储长整数(常用)
* 2)范围:-2的63次方 ~ 2的63次方 -1
* 3)如果要表示long直接量,需要以 L 或 l 结尾
*/
private static void testLong() {
//Java 中整数字面量(直接量)默认都是int类型
//不加 L或 l,说明是int类型,这样超出int范围了。
//long l = 2147483648; //编译错误,直接量超出 int范围了
long l = 2147483648L;//以L后缀的是long类型字面量
//获取计算机系统时间, 从1970年到现在的毫秒数
long now = System.currentTimeMillis();
System.out.println(now);
//将毫秒数转化为当前年
long year = now/1000/60/60/24/365 + 1970;
System.out.println(year);
long max = 0x7fffffffffffffffL;//long时间耗尽的时刻!
year = max/1000/60/60/24/365 + 1970;
System.out.println(year);
}
/**
* int类型
* 1)为整数类型,4字节,32位,存储整数(常用)
* 2)范围:-2147483648~2147483647
* 即-2的31次方 ~ 2的31次方 -1
* 3)Java 中整数字面量(直接量)默认都是int类型。
*/
private static void testInt() {
// int类型
// 它是一个4个字节的整数,也是一个有符号的整数
// 它的取值范围:-2147483648~2147483647
int i = 5;
// i= 2147483648;//编译错误,直接量超出int范围了
}
/**
* short类型
*/
private static void testShort() {
// short类型
// 它是一个有符号的2个字节的整数,也就是16位的整数。
// 它的取值范围是 -32768~32767,
// byte类型的取值范围是: -128到127
// 所以byte类型可以直接赋给short类型,
// 反之则不可以,short类型赋给byte类型,
// 同样需要进行强制类型转换。
}
/**
* byte类型
*/
private static void testByte() {
byte b=3;
// b= b*3;//编译错误
b=(byte) (b*3);
System.out.println(b);//9
// java提供的 byte字节类型,它是1个字节的,是一个有符号的,8位的整数,
// 也就是说我们定义的 b这个变量,它可以存放负数。
// 我们在 C语言当中,当我们定义一个字节类型,通常表示的是无符号的整数。
// 那么我们要注意,在 java当中这个byte,是表示有符号的整数。
// byte字节类型是一个有符号的整数,它的范围是: -128到127
// 我们可以给它赋值:b=3; 这个值是在它的取值范围之内的,
// 然后我们让 b=b*3,会出现编译错误,那么为什么呢?
// 当我们字节类型变量 b,它在参与运算的时候,java做了自动数据类型的提升,
// 为了保证运算的精度,将这个运算 b*3 的结果,转换成一个int类型了,
// 这时候你赋值给字节类型 b,那么int类型的取值范围 和 byte类型的取值范围 是不一样的,
// 所以会导致编译错误,这时候我们需要进行强制转换:b=(byte) (b*3);
}
}
三、直接量(字面量)
直接量、8和16进制表示形式、int最大值和最小值
package t06_直接量;
/**
* 直接量:就是直接写出的数字(常量)
* 1) int i = 5; 中i是变量,而5是直接量(直接写出的数)
* 2) Java 中整数字面量(直接量)默认都是int类型。
* 3) 整数的直接量也经常写16进制的形式
* 0x(数字0, 字母x)为16进制数的标识(x大小写,都可以)
* 8进制以0开头
*/
public class TestLiteral {
public static void main(String[] args) {
int i;
//0x(数字0, 字母x)为16进制数的标识
i = 0xffffffff;
System.out.println(i);//-1
int max = 0x7fffffff;//0111 1111 1111 ......
int min = 0x80000000;//1000 0000 0000......
System.out.println("int最大值:"+max);//2147483647
System.out.println("int最小值:"+min);//-2147483648
max = Integer.MAX_VALUE;
System.out.println("JDK提供int最大值:"+max);//2147483647
min = Integer.MIN_VALUE;
System.out.println("JDK提供int最小值:"+min);//-2147483648
max = max+1;
System.out.println("max+1后的结果:"+max);//-2147483648
min = min-1;
System.out.println("min-1后的结果:"+min);//2147483647
int max2 = 0x7fffffff;
System.out.println(max2);//2147483647
max2 = max2+8;
System.out.println(max2);//-2147483641
}
}