java基础,运算符及运算符优先级,进制转换,源码、反码、补码,数据类型,流程控制语句,数组定义、特点

一、运算符(operator):

算数运算符:+、-、*、/、%、++、--

赋值运算符:=、+=、-=、*=、/=、%=

关系(比较)运算符:<、<=、>、>=、!=、==

逻辑运算符:&、|、&&、||、!、^

        注意:短路与、短路或的效率要比较高

移位运算符:

        <<:左移位,补0(被位移数 * 2^位移数次方)

        >>:右移位,补符号位(被位移数 / 2^位移数次方)

        >>>:无符号右移位 正数:右移位,负数:先变正数再逐渐变小

位运算符:&(按位与)、|(按位或)、~(按位非|取反)、^(按位异或)

运算符优先级

        () > 一元运算符 > 算数运算符 > 移位运算符 > 比较运算符 > 位/逻辑运算符 > 三目运算符 > 赋值运算符

二、进制(binary):

1. 常用进制接介绍:

进制:满几归零进一,称为进制数;

        十进制:生活中常用的,满十归零进一;

                取值范围:0~9 写法例如:1234 默认十进制

        二进制:计算机中底层使用的是二进制,满二归零进一;

                取值范围:0~1 写法例如:0b0001 或 0B0001

        八进制:满八归零进一

                取值范围:0~8 写法例如:01234

        十六进制:满十六归零进一

                取值范围:0~15 写法例如:0x11AB 或 0X22EF

                10~15之间的写法:A(10)、B(11)、C(12)、D(13)、E(14)、F(15)

2. 进制之间的转换:

        x进制转十进制:从右到左,每位数*x的n次方,n从0开始,依次+1;权项相加

        十进制转x进制:十进制数 除以 x,直到商为0,将每次相除的余数从下到上依次排列。

3. 原码、反码、补码:

原码:将数字转为二进制数;适用于两个正数计算
  规则:原码+原码=原码
  问题:有负数参与的计算,计算结果不正确
反码:
  规则:反码+反码=反码
  	正数:原码与反码一致
  	负数:符号位不变,其他位按位取反;
      	     符号位产生进位舍弃,结果+1;再取反为原码;
  问题:绝对值相同的正负数相加,计算结果不正确
补码:计算机中使用的是补码,适用于任何加法计算。我们使用原码的原因:原码转十进制好计算,
  解决问题:
      1. 原码计算中有负数参与的计算结果不正确
      2. 反码中绝对值相同的正负数相加,计算结果不正确的问题
  原码转补码:
      正数补码:原码、反码、补码一致
      负数补码:反码+1;
  计算规则:补码+补码=补码
  注意:符号位产生进位舍弃,结果不+1

最高位为符号位:0正数、1负数
  原码:原码加法计算:原码+原码=原码 ---- 支持两个正数相加
      2原码 + 9原码
      00000000 00000000 00000000 00000010  2原码
      00000000 00000000 00000000 00001001  9原码
      ------------------------------------------
      00000000 00000000 00000000 00001011  11原码

      -3原码 + 5原码
      10000000 00000000 00000000 00000011  -3原码
      00000000 00000000 00000000 00000101  5原码
      -------------------------------------------
      10000000 00000000 00000000 00001000  8原码(值有问题) 正确2

      -3原码 + -2原码
      10000000 00000000 00000000 00000011  -3原码
      10000000 00000000 00000000 00000010  -2原码
      ------------------------------------------
      00000000 00000000 00000000 00000101  5原码(值存在问题)
反码计算:
      -3反码 + 5反码
      10000000 00000000 00000000 00000011  -3原码
      11111111 11111111 11111111 11111100  -3反码
      00000000 00000000 00000000 00000101  5原码与反码一致
      ------------------------------------------------------
      00000000 00000000 00000000 00000001   符号位进位,值+1
                                                     1
      ------------------------------------------------------
      00000000 00000000 00000000 00000010  2 正数反码与原码一致 结果为2

      -3反码 + -2反码
      10000000 00000000 00000000 00000011  -3原码
      11111111 11111111 11111111 11111100  -3反码
      10000000 00000000 00000000 00000010  -2原码
      11111111 11111111 11111111 11111101  -2反码
      ------------------------------------------
      11111111 11111111 11111111 11111001  符号位进位值+1
                                                     1
      -----------------------------------------
      11111111 11111111 11111111 11111010 负数取反(符号位不变,其他按位取反)变原码
      10000000 00000000 00000000 00000101 -5原码

      10000000 00000000 00000000 00000011  -3原码
      11111111 11111111 11111111 11111100  -3反码
      00000000 00000000 00000000 00000011  3原码与反码一致
      ------------------------------------------------------
      11111111 11111111 11111111 11111111   负数取反(符号位不变,其他按位取反)变原码
      10000000 00000000 00000000 00000000  -0原码不准确

补码计算
      10000000 00000000 00000000 00000011 -3原码
      11111111 11111111 11111111 11111100 -3反码 符号位不变,其他按位取反
      11111111 11111111 11111111 11111101 -3补码 反码+1
      00000000 00000000 00000000 00000011  3原码、反码、补码一致
      --------------------------------------------------------
      00000000 00000000 00000000 00000000 正数原码、反码、补码一致,0结果正确

4. 强制转换精度丢失的问题

强制转换:高精度转低精度,精度丢失问题

例如:int(4字节)转byte(1字节)  1byte = 8bit(位)  bit=0|1 二进制

byte只会截取int转补码后的后八位数,因此在-127~128之间强制转换无问题,当超过该范围,会出现精度丢失问题

5. 存储单位及单位换算:

1byte(字节) = 8bit(比特,位)

最大:0b11111111 255

最小:0b00000000 0

0~255   有256个数(不考虑正负);

1KB  =  1024 byte

1MB  =  1024 KB

1GB  =  1024 MB

1TB  =  1024 GB

1PB  =  1024 TB

三、数据类型:

基本数据类型:字母全部小写

        整型:

                byte: 字节型 所占大小:1byte(字节) = 8bit(比特,位)

                        取值范围:-2^7 ~ 2^7-1

                        最大数:符号位-0 0b01111111

                        最小数:符号位-1 0b10000000(补码)

                        编译器默认是整型:要高精度转低精度要强转,(byte)

                short: 短整型 所占大小:2byte

                        取值范围:-2^15 ~ 2^15-1

                        最大数:符号位-0 0b01111111 11111111

                        最小数:符号位-1 0b10000000 00000000

                int: 整型 所占大小:4byte

                        取值范围:-2^31 ~ 2^31-1

                long: 长整型 所占大小:8byte

                        取值范围:-2^63 ~ 2^63-1

四、流程控制语句:

1. 顺序流程

Java程序默认按照从上到下,顺序执行;

  1. 分支流程
    1. if系列
      1. if(){}适用于一种情况的判断
      2. if(){}else{}适用于两种情况的判断

判断1次

        if(){}else if(){}else{}适用于多种情况的判断

最少判断1次,最多判断情况数-1次

        switch 适用于等值判断

        switch(变量){

                case 值1:break;

                case 值2:break;

                default:

        }

        变量的类型:int、Integer、byte、Byte、short、Short、char、Character、String、enum

        case中无break,从匹配的case开始执行到switch结束(包括default)

        case可存在多个

  1. 循环流程
    1. while(boolean表达式){}
    2. do{}while(boolean表达式);
    3. for(初始化表达式;boolean表达式;迭代因子){}

五、数组:

数组定义:

存储多个数据类型相同的数据;

数组特点:

  1. 长度固定,创建数组时必须要指定数组的长度,创建完成后,长度不允许改变;
  2. 创建数组时会按照指定的长度在堆空间中分配地址连续,大小相等的空间;
  3. 存储相同类型的数据,数组支持基本数据类型和引用数据类型;
  4. 数组为引用数据类型,栈空间中存储第一块空间的地址;
  5. 索引值范围:0 <= 索引|下标|角标 <= 数组长度-1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值