day02(进制转换+算术、赋值、比较、逻辑运算符)

来源:互联网 发布:canal mysql 编辑:程序博客网 时间:2024/06/05 19:31

传智播客java基础班冯佳老师整理,还会持续更新,请关注冯佳老师的微

fengjia_2553868@qq.com

1:进制转换

  • 其他进制到十进制
    • 其他进制包含二进制,八进制,十六进制
      • 转换规则
      • 先把数据的每一位上的系数乘以对应基数的次幂(低位从从零开始),然后相加即可
  • 十进制到其他进制

    • 规则:除基取余,直到商为0,最后将余数反转

      • 十进制到二进制
        • 除2取余,直到商为0,最后将余数反转
        • 十进制13对应的二进制数据是1101
        • 二进制到十进制的技巧(8421码)
      • 十进制到八进制
        • 除8取余,直到商为0,最后将余数反转
        • 十进制13对应的把进制数据是15
        • 十进制--二进制--八进制
          • 首先把十进制转成二进制
          • 其次把二进制数据每三位组合。左边不够三位用0补位
          • 然后把每个组合计算成对应的十进制数据
          • 最后从左到右把数据相连接即可得到八进制
      • 十进制到十六进制

        • 除16取余,直到商为0,最后将余数反转
        • 十进制13对应的把进制数据是D

        • 十进制--二进制--十六进制

          • 首先把十进制转成二进制
          • 其次把二进制数据每四位组合。左边不够四位用0补位
          • 然后把每个组合计算成对应的十进制数据
          • 最后从左到右把数据相连接即可得到十六进制
  • 快速转换法

2:计算机中有符号数据表示法

  • 原码:十进制或者其它进制转换为二进制数;
  • 反码:原码取反,若原码为负数,则二进制首位不取反
  • 补码:反码+1,也就是原码取反后再+1;

3:变量

  • 在程序的运行过程中,其值在指定范围内变化的值
  • 是内存中一个区域,用于存储数据
  • 变量的定义格式:
    • A:数据类型 变量名 = 初始化值;
  • 变量在使用的时候
    • A:第一种,在声明的时候,就初始化值
      • 数据类型 变量名 = 初始化值;
      • 举例:byte b = 100; System.out.println(b);
    • B:第二种 在使用前,赋值
      • 声明
      • 赋值
      • 使用
      • 举例 byte b2;b2 = 100; System.out.println(b2);
    • 注意:成员变量有初始化值,而局部变量没有初始化值,必须初始化后才能使用。

4:数据类型

  • java语言分为两种数据类型
    • A:基本数据类型
    • B:引用数据类型(类,接口,数组)
  • 基本数据类型
    • A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同
    • B:4类8种
      • 整数
        • byte 占1个字节//8个开关,8个二进制位 1byte = 8bit
        • short 占2个字节
        • int 占4个字节0
        • long 占8个字节 其后加L或l标识
      • 浮点数
      • float 占4个字节 其后加F或f标识3.3f 2^63
        • 32个二进制位
        • 1位符号位
        • 8位代表指数位
        • 23位尾数位0.9999999
        • 0000000000 - 111111111 0 - 255
        • IEEE 754 0 255 特殊的值
        • 1 - 254 - 127
        • 1 - 127 = -126
        • 254 - 127 = 127
      • double 占8个字节
      • 字符
        • char 占2个字节 0 - 65535
      • 布尔型
        • boolean This data type represents one bit of information,
        • but its "size" isn't something that's precisely defined.
        • 这个数据类型代表一个比特的信息,但它的“大小”不是精确定义的东西.
        • true,false
  • C:默认情况下:
    • 整数是int类型
    • 浮点数是double类型
    • 举例:int i=i+0.13;编译失败,i+0.13被转换为double型了,需要强转回int型。

5:数据类型转换

  • 数据参与运算

    • A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
      • 容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:
        • byte,short,char->int->long->float->double
        • byte 和 short运算时不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转换为int类型
      • 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
      • 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
    • B:强制转换符
      • 格式:(数据类型)(要被转换的数据) byte b = (byte)(300);
    • C:字符型参与运算
      • 首先会去找对应字符的unicode码值。然后运算。
      • char 类型取值范围0~2(16)-1,我就有了一个问题?能不能把整数直接赋值给char类型的变量?
      • 能把整数直接赋值给char类型变量,输出时会先查找整数对应的char类型值。
    • D:布尔型参与运算
      • 不能参与运算
    • E:字符串参与运算

      • 它是和参与运算的数据相连接组成了一个新的字符串。
      • 任何数与字符串相加,结果都会相连成为一个新的字符串,字符串只能进行相加运算。
    • 思考:哪句是编译失败的呢?为什么呢?

    1
    2
    byte b1=3,b2=4,b;
    b=b1+b2;//编译失败,b1+b2的值会自动转为int型,int型不能赋值给byte,必须强转才行;
    • (1)byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算
    • (2)b1和b2是两个变量值,jvm无法判断里面值的大小

    b=3+4;

    • java 编译器有常量优化机制,在编译的时候已经将3+4的结果赋值给b了

6:算术运算符+,-,*,/,%,++,--

  • A:%

    • 当左边的绝对值小于右边:结果是左边
    • 当左边的绝对值等于右边或者是右边倍数的时候:结果是0
    • 当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
    • 取余的正负号取决于左边,右边忽略不记
    • 用途:任意正整数%2 结果是要么0,要么1。用于切换条件
  • B:++,--

    • 递增,递减运算符。就是加1或者减1
    • 单独存在,放在操作数的前面或者后面,结果一样
    • 参与运算时:
      • 放在变量的前面,先自身加或者减1,然后再参与运算
      • 放在变量的后面,先参与运算,然后再自身加或者减1
  • C:+

    • 作为数据的符号(正号)
    • 做加法运算
    • 字符串连接符"5 + 5 =" + (5 + 5);

7:赋值运算符=,+=,*=

  • 赋值运算符
    • A:=:赋值运算符 把右边的值赋给左边
    • 注意=不是等于号,只是把右边的值赋给左边,等号是==
    举例:int x = 3; 把3赋给int类型变量x    int a,b,c;    a = b = c = 5;
  • B:+=:加赋值运算符 把左边和右边的和赋给左边
    • 举例:int x = 3; x+=2;等同于 x = x + 2;
    • 面试题
  • 1
    2
    3
    4
    byte b = 5;
    b = b + 2;//编译失败,b+2被自动转型为Int
    b += 2; b = (byte)(b + 2);//编译成功,b+=2虽然等价于b=b+2,但是完成了类型强转。
    System.out.println(b);会不会报错?
    +=运算符在给b赋值时,自动完成了强转操作。

8:比较运算符==,!=,>,<,>=,<=

  • 比较运算符的结果都是boolean型,也就是要么是true,要么是false。

9:逻辑运算符

  • 逻辑与运算符 &

    1
    2
    3
    4
    5
    第一个条件    第二个条件     结果
    true          true           true
    false         true           false
    true          false          false
    false         false          false
    简单记:左右两边同时为true,结果为true。
  • 逻辑或运算符 |

    1
    2
    3
    4
    5
    第一个条件    第二个条件     结果
    true          true           true
    false         true           true
    true          false          true
    false         false          false
    简单记:左右两边只要有一个结果是true,结果为true。
  • 逻辑异或运算符 ^

    1
    2
    3
    4
    5
    第一个条件    第二个条件     结果
    true          true           false
    false         true           true
    true          false          true
    false         false          false
    简单记:左右两边相同,结果为false。左右两边不相同,结果为true;
  • 逻辑非运算符 !

    1
    2
    3
    !true  false
    !false true
    !!true true
  • 短路与:

    &:左边无论什么结果,右边都执行。&&:左边为false,右边不执行,结果为false。
    1
    2
    int x = 10;
    x > 11 && x < 15
  • 短路或:

    |:左边无论什么结果,右边都执行。||:左边为true,右边不执行,结果为true。
0 0
原创粉丝点击