Java学习Day04

JAVA学习Day03

一、类型转换

  1. 数据类型由小到大的排序

    byte short int(char) long float double

  2. 自动类型转换/隐式类型转换:

    小类型转大类型

  3. 强制类型转换

    1. 大类型转换成小类型
    2. 语法: (要转换成的类型) 变量
    3. 强制类型转换需要考虑范围问题,可能会存在溢出
    4. double类型转换成int类型,存在精度丢失问题
  4. 两点规则

    1. 整数直接量可以赋值给byte short char,但是不能超出范围
    2. byte short char型数据参与运算时,系统一律将其转换成int类型

    二、运算符

    1. 算术运算符

      • , - , * , / , % -- ++
      1. byte b1 = 3;
      2. byte b2 = 4;
      3. byte b3 = b1 + b2;
      4. byte b4 = 3 + 4;
      
      问:第三行代码和第四行代码是否会报错?为什么?
      byte b3 = b1 + b2;编译错误,byte类型的数据参与运算,会自动转换为int类型,所以计算的结果是int类型,
      byte b4 = 3 + 4; 不会报错,在JDK1.7做了一个优化,在编译过程中会直接计算3+4=7 ,然后将7赋值给b4
      如果计算结果不超范文,不报错,正常赋值,如果超范围,编译会报错。
      
      • / 除法

        注意:

        1. 除数不能为0,如果除数为0,被除数为整数,程序编译没有问题,但是运行会抛出异常,异常如果没有处理,当抛出异常时,程序会停止

        2. 正浮点数/0: Infinity(无穷大)

          负浮点数/0:-Infinity(负无穷大)

      • ++ -- 自增,自减

        • 如果变量单独使用++,-- ,++--在变量之前和在变量之后没有区别,都是在变量原基础上加/减1

        • 如果++--参与到运算中,则

          • 如果++ -- 在变量之后,先参与运算,再++ --
            如果++ -- 在变量之前,先++--  ,再运算
            

      补充

      int a = 5;
              a += 10;
              System.out.println(a);
              short s = 5;
              s += 5;   //自动强转,相当于s = (short) (s + 5);
              System.out.println(s);
              s = (short) (s + 5);
              System.out.println(s);
      
      

      关系运算符

      关系运算符的结果为boolean值,关系成立则返回true,关系不成立则返回false

逻辑运算符:

&& (与) ||(或) !(非) ^(异或)

三目运算符:

boolean?"'数据1":"数据2" :如果Boolean=ture ->数据1 否则为数据2

异或应用:

将a和b的值互换:

/**a^b^b则值为a,异或两个相同的值结果为本身*/
int a = 5;
        int b = 6;
        a = a ^ b;
        b = b ^ a;//b ^ a ^ b = b
        a = a ^ b;//a ^ b ^ a = a
        System.out.println(a );
        System.out.println(b);

位运算符

位运算符 符号解释
& 按位与,当两位相同时为1时才返回1
| 按位或,只要有一位为1即可返回1
~ 按位非,将操作数的每个位(包括符号位)全部取反
^ 按位异或。当两位相同时返回0,不同时返回1
<< 左移运算符
>> 右移运算符
>>> 无符号右移运算符
  • 位运算符的运算过程都是基于补码运算,但是看结果,我们得换成原码,再换成十进制看结果
  • 从二进制到十进制都是基于原码
  • 正数的原码反码补码都一样,负数原码反码补码不一样
  • byte,short,char在计算时按照int类型处理

如何区分&,|,^是逻辑运算符还是位运算符?

如果操作数是boolean类型,就是逻辑运算符,如果操作数是整数,那么就位运算符 。

额外拓展:

     //程序开始的时间
        long start = System.currentTimeMillis();
	//程序结束的时间
          long end = System.currentTimeMillis();
	//计算程序运行所需要的时间
       		 System.out.println((end-start)+"ms");
posted @   wi_z  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示