day03数据类型和运算符

  快捷键:
        1、生成main方法的快捷键  psvm
        2、换行输出快捷键  sout
        3、多行复制  ctrl + alt + 下键
        4. 代码格式化:ctrl+alt+L
        5. 快速\取消注释 ctrl+/
         \t 代表Tab键 默认是4个空格

变量
定义变量的格式:
        1、数据类型 变量名 = 初始化值;
        2、数据类型 变量名;
          变量名 = 初始化值;

数据类型:
    基本数据类型
        整数类型                   占用字节数        可表示的范围
            byte                     1           -2^7 ~ 2^7-1
            short                    2           -2^15 ~ 2^15-1
            int                      4           -2^31 ~ 2^31-1
            long                     8           -2^63 ~ 2^63-1
        浮点类型
            float                    4           -3.403*10^38 ~ 3.403*10^38
            double                   8           -1.798*10^308 ~ 1.798*10^308
        字符型
            char                     2
        布尔型
            boolean                  1

自动类型转换:

        byte,short,char—int—long—float—double        
        byte,short,char在参与运算的时候会自动提升到int类型
        由大的数据类型接收小的数据类型,会自动转换,不会报错。

 强制类型转换:
        由小的数据类型接收大的数据类型,会报错,接收不了,这时候需要强制类型转换
        格式:目标数据类型 目标变量名 = (目标数据类型)(要转换的数值/变量)

 变量相加和常量相加不一样
        1、变量相加首先会提升数据类型,然后再相加赋值,如果接收的数据类型范围小于计算结果后的数据类型范围,报错,不能赋值
        2、常量相加,会先进行计算,计算完后看看在不在接收的数据类型范围内,如果在,直接赋值,如果不在,报错。

/*
            byte b1=3,b2=4,b;
            b=b1+b2;
            b=3+4;
            哪句是编译失败的呢?为什么呢?

      
 */
public class DataTypeDemo4 {
    public static void main(String[] args) {
//        int a = 3;
//        byte b = 4;
//        int c1 = a + b;
//
//        byte c2 = (byte)(a + b);
//        System.out.println(c2);

        byte b1=3,b2=4,b;
//        b=b1+b2;
        b=(byte)(b1+b2);
        b=3+4;

    }
}

运算符

+号的用法
            1、当加号两边都是数字或者是数字和字符的时候,这时候的+号做的是加法运算
            2、当加号两边其中是字符串的时候,做的是字符串拼接,拼接后是一个新的字符串
            3、字符串与任何数值做加法,做的是字符串拼接,拼接后是一个新的字符串

            ++:自加1
                当++在前的时候,先自加1,再做赋值操作,当++在后的时候,先做赋值操作,再做自加1

            --:自减1
                当--在前的时候,先自减1,再做赋值操作,当--在后的时候,先做赋值操作,再做自减1

    s=s+1和s+=1不同

    short s=1, s = s+1;
    short s=1, s += 1;
    上面两个代码有没有问题,如果有,那里有问题
    第一个有问题,因为变量参与运算,首先会提升数据类型,然后做运算。所以 s = s+1;s会提升到int类型然后再做加法运算,最终的
    结果是int类型,所以拿short类型接收会报错,所以要想成功赋值,就得强制类型转换。

    第二个代码没有问题,是因为内部自动包含了强制类型转换,s+=1 ===>  s = (s的数据类型)(s+1)

关系运算符

       注意事项:
            1、关系运算符的表达式的结果是一个boolean类型,要么是true,要么是false
            2、==不能少写,一个=是赋值运算符,==才是关系运算符
            3、赋值的时候要注意类型问题,关系运算符表达式的结果是boolean类型,所以接收的时候只能是boolean类型的变量接收
 

 

逻辑运算法

  逻辑运算符的两边放的是boolean类型的值,计算的结果也是一个boolean类型的值

       &: 参与运算的时候,两边有false,则false,两边都做运算
       |: 参与运算的时候,两边有true,则true,两边都做运算
       ^: 参与运算的时候,相同为false,不同为true,两边都做运算
       !: 将true变成false,false变成true

       &&: 短路与,结果和单个与结果一样,有false则false,但是执行的东西不一样,
            当&&左边的表达式结果为false的时候,结果是false,右边不执行
        ||: 短路或,结果和单个或结果一样,有true则true,但是执行的东西不一样,
            当||左边是true的时候,右边不执行,结果是true.

        逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6

 三目运算符:又称之为三元运算符
            格式:(关系表达式)?表达式1:表达式2;
        如果关系表达式的结果为true,运算后的结果是表达式1;
        如果关系表达式的结果为false,运算后的结果是表达式2;

    注意事项:
        1、三目运算符表达式的结果数据类型由三目运算符表达式1和表达式2中最大的数据类型决定的。
        2、关系表达式一定只能是boolean类型

位运算符

由于数据在计算机中参与运算的都是补码,而想要知道补码,就得知道反码,原码,就得求出二进制

& 运算:有0则0

 | 运算:有1则1

^ 运算:相同则0,不同则1

~ 运算:1变成0,0变成1

<<: 左移,二进制(补码)左移,右边用0补齐,多出来的丢弃
>>: 右移,最左边最高位是0用0补齐,最高位是1就用1补齐,多出来的丢弃。
>>>: 无符号右移,无论左边最高是0还是1,都用0补齐,多出来的丢弃。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值