day04:类型转换,运算符。

1.数据排序:

byte short int long float double boolean char

2.自动类型转换:

小类转大类型。

3、强制类型转换:

  1.double类型转int类型,存在精度丢失问题。

  2.大类型转换为小类型。

  3.存在溢出问题。

package day04;

public class DataTypeChange03 {
    public static void main(String[] args) {
        int a = 25;
//    报错    byte b = a;
        byte b = (byte)a;  //需要强制转换


        int i = 1500;
        byte j = (byte)i;
        System.out.println(j);


    }
}

上述代码打印j值计算过程发生溢出,使用强制转换得到正常j值:

        〇、内存中怎么实现强制类型转换?

 int  a = 1500

                转换成原码:    00000000 00000000 00000101 11011100

                          反码:       011111111 111111111 111111010 00100011

 计算器内存保存补码:       011111111 111111111 111111010 00100100

byte b = (byte)a 

由于 byte类型只有1字节: 00000000,强制转换会截断int类型a的数据,只保留最后8位

          byte对应原码:        11011100

          byte对应反码:     10100011

          byte对应反码:     10100100

              btye对应值:        36

一、转换对应规则:

int整数常量可直接赋给  byte short  char   ,但不能超过小类型范围。

byte short  char参与运算,系统一律转换为int类型。


二、运算符 

上图中, 2.0为小数double   范围大于int     

 运算过程中a b 值默认为int类型   

 m的值默认带有小数,  类型也应为较大范围的double。


 如图,short来定义s会报错    因为运算过程 a b   默认为int类型

其值也为int类型

可以强制转换结果(short)(a+b)

也可以    int   d   



 如上图会报错,因为0不能当分母,抛异常.ArithmeticException

 如上图,不会抛异常,double 类型数据除double类型 0

计算结果为Infinity    

当负 double类型数据除double类型0

计算结果为-Infinity






 自增自减问题的计算。


 &门  全真为真,否则为假


 ||门  有真为真


 异或^门 全真为假


 !非门  相反值



用异或门来改变    交换变量的值

 a=a^b;   //a=7

b=a^b;   //b=4

a=a^b;   //a=3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值