1.int
int 4个字节 最大值,超过才是用long类型.
开发的时候不用斤斤计较,基本常用int
在java语言整数型字面量有4种表现形式:
十进制:最常用
二进制
八进制
十六进制
*/
public class IntTest{
public static void main(String[] args){
//十进制
int a = 10;
System.out.println(a);//10
//八进制
int b =010;
System.out.println(b);//8
//十六进制
int c =0x10;
System.out.println(c);//16
//二进制
int d = 0b10;
System.out.println(d);//2
//基本我们用十进制就可以了.
---------------------------------------------------------------------------------
/*
在java中有一条特别的结论,必须记住;
在任何情况下,整数型的"字面量/数据"默认被当做int处理
如果希望该"整数型字面量" long类型来处理,需要在"字面量"后面添加L/l
(建议使用大写L,l和1分不清)
*/
public class IntTest02{
public static void main(String[] args){
int a = 100;
//分析这个代码存在类型转换吗,以下代码什么意思?
//不存在
//100 被当做int类型处理
//a变量 是int类型
//int 类型赋值给 int类型的变量.
System.out.println(a);
//存在类型转换
//200默认当做int变量处理
//b 变量是long(8字节);a 变量是 int(4字节);
//小容量可以转成大容量;成为自动类型转换.
long b = 200;
System.out.println(b);
//300L就是long类型的自变量;
long c = 300L;
System.out.println(c);
//题目
long d = 2147483647;//2147483647是int的最大值.
System.out.println(d);
//long可以放下,但是已经超过int 范围.
long e = 2147483648L;//默认当做int处理,已经超出范围.加L
System.out.println(e);
}
}
-------------------------------------------------------
/*
1.小容量可以直接赋值给大容量,称为自动类型转换;
2.大容量转小容量,必须加强制类型转换符,进行强制转换.
强制转换后数据会损失精度.(int)加括号.
*/
public class IntTest03{
public static void main(String[] args){
long x = 100L;
//x 与 y 的类型不同
//错误: 不兼容的类型: 从long转换到int可能会有损失;
//大容量转小容量,必须加强制类型转换符,进行强制转换.
//底层如何进行强制转换的,砍掉前面四个字节.(相差的字节)
int y = (int)x;
System.out.println(y);
//下面是可以的
int a =100;
int b = a;
}
}
------------------------------------------------------------------------------------------------
/*
java中有个语法规则
当整数未超过byte的取值范围[-127-128],那么可以直接赋值(大-小)
上述也通用于short变量;
这种语法机制是为了方便写代码存在的
*/
public class IntTest04{
public static void main(String[] args)
//300默认int类型,b变量是byte类型
//大容量转小容量,加强制类型转换符.
//有损失
byte b = (byte)300;
System.out.println(b);
byte x = 1;//这个可以
byte y = 128;//这个不可以,不超过127
short s = 1;//可以
short s1 = 32767;//可以
short s2 = 32768;//不可以
}
}
============================================
/*
1.计算机任何情况只识别二进制
2.计算机在底层存储数据的时候,一律'二进制的补码形式',效率最高.
3.什么是补码?
二进制:原码 反码 补码
4.对一个正数来说,三个一样
对于负数来说, 反码(符号位不变,其他为取反)
补码:反码加1
计算机永远存储二进制补码形式,逆推导
减1
符号位不变,其他为取反
*/
public class IntTest05{
public static void main(String[] args){
byte b = (byte)150;//150超出取值范围
System.out.println(b);//输出-106
}
}
========================================
/*
结论: byte short char 做混合运算时,各自先转换Int后在做运算.
*/
public class IntTest06{
public static void main(String[] args){
char c1 = 'a';
byte b = 1;
//注意这里 + 负责求和;
System.out.println(c1 + b);//c1 和b类型不同
//运行结果为 98 ;
short s = (short)(c1 + b);//不知道后面是否是int类型;要加强制符号.
//必须括号放一起 不然会有歧义.
short k = 98;//这个可以,因为知道 98 是int类型;
int a = 1;
//错误:不兼容
short x = a;因为 a 是int类型,不管多少值.
}
}
==============================================
/*
结论:多种数据类型做混合运算,谁的容量最大,结果属于哪种类型;
char+short+byte 这个除外;
因为 上述会自动转化为int运算.
*/
public class IntTest07{
public static void main(String[] args){
long a = 10L;
char c = 'a';
short s = 100;
int i = 30;
//求和
System.out.println(a + c + s + i);//237
int x = a + c + s + i;//不兼容,后面属于Long类型
int x = (int)(a + c + s + i);//正确
//java中规定,int类型和int类型最终的结果还是Int类型
int temp = 10 / 3;//取整,3
//在java中计算不一定准确.
}
}