第四章 数据类型02 int

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中计算不一定准确.

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值