1、2进制 数据类型 运算符

进制、数据类型、运算符

内存划分最小单位:字节
1个字节=8个bit位
1个字母1个字节,1个汉字2个字节

进制

1、进制的划分

二进制(权重2)、八进制(权重8)、十进制(权重10)、十六进制(权重16)
注意:除了这些还有三进制、四进制 只是这些不经常用

2、进制的转换

1)二进制–>八进制

在这里插入图片描述
八进制:0471 以零开头
取值:0~7

2)二进制–>十六进制

在这里插入图片描述
十六进制:0x139 取值0~9 a ~f/A ~F
以零x开头

3)十六进制–>十进制

0x139 = 9*(16^0)+3*(16 ^1)+1*(16 ^2) = 313

4)十进制–>二进制

1)辗转相除法
在这里插入图片描述
2)拆分法
100
64(2 ^6)+32(2 ^5)+4(2 ^2)=0110 0100

5)十进制–>二进制

符号位:正数=0 负数=1
符号位不参与运算
1)当为正数时
10
原码:0000 1010
反码:0111 0101
补码:000 1010
原码==补码
2)当为负数时
-10
原码:1000 1010
反码:1111 0101
补码:1111 0110
负数补码:原码按位取反+1
注意:计算机、卷子上写的是补码

6) 二进制–>十进制

补码:1010 1010
1、记录符号位 负数
2、按位取反+1 --> 值 0101 0110 = 86
最后二合一:-86

数据类型

在这里插入图片描述

1、数据类型所占的字节数

整型:byte(1)、short(2)、int(4)、long(8)
浮点型:float(4)、double(8) 高精度一般都用
字符型:char(2)、unicod(2)字符集(包含ASCII码,‘a’=97)

2、引用类型分为四种

强引用(StrongReference)
软引用(SoftReference)
弱引用(WeakReference)
虚引用(PhantomReference)

3、变量的定义(租户):

1)int num=0;
2)int num; num=10;

4、常量的定义(钉子户(不能改变)):

final int PI=3;

5、类型转换

1)强制转换(显式)
大盒—>小盒子
错误:short s= 10;
byte b= s;
正确:byte b=(byte)s
2)自动类型转换(隐式)
这些类型按精度从低到高排列顺序为byte<short<int<long<float<double
小盒—>大盒
byte b=10; short s=b;
注意:系统默认小数位double
错误:float f=1.0;
正确:float f=(float)1.0; float f=1.0f/1.0F
其中:int/int–>int
int/double–>double
byte/int–>int

笔试题

1、byte a=120,byte b=10;求a+1/2b的值?
1/2=0(这个为int的类型)所以a+1/2b=120;
2、byte a=120,byte b=10,1/2(a+b)的值赋给byte c?
这个1/2 =0为int类型,所以1/2(a+b)为int类型,而c是byte类型,所以这句话是错误的。
应改为:byte c = (byte)(1/2(a+b));

运算符

运算符是一些特殊符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。

1、java中运算符主要分为:

在这里插入图片描述

2、赋值运算符

1)赋值运算符以符号“=”表示,它是一个二元运算(对两个操作数作处理)
2)赋值运算符“=”处理时会先取得右方表达式处理后的结果,因此一个表达式中若含有两个以上的“=”运算符,会从最右方的“=”开始处理

3、自增、 自减运算符++、 –

其功能是使变量的值增 1 或减 1。
1)++a(–a)
表示在使用变量a之前,先使a的值增加(减)1
2)a++(a–)
表示在使用变量a之后,使a的值加(减)1

4、逻辑运算符

Java 提供了 3 种逻辑运算符, &&(与)、 ||(或)、 !(非)。
1)a&&b: 只有 a 与 b 都为 true, 结果才为 true, 否则为 false。
2)a||b: 只有 a 与 b 都为 false, 结果才为 false, 否则为 true。
3)!a: 与 a 的值相反。
注意:“&&”属于“短路”运算符,而“&”则属于“非短路”运算符。

5、位运算符

位运算符的作用在于对整数数值的二进制表示进行运算。

  1. 按位求反运算符 ~
    对操作数的二进制数据的每一个二进制位都取反。
    即 1 变成 0, 而 0 变成 1。 如`8(… 0000 1000)的结果为-9(1111…1111 0111 负数的计算按位取反+1)。
  2. 位与运算符 &
    参与运算的两个操作数, 相应的二进制数位进行位与运算。
    如 5&11(0101&1011) 结果为 1。
  3. 位或运算符 |
    参与运算的两个操作数, 相应的二进制数位进行位或运算, 两个位上一个有 1 则为 1。
    如 5|11(0101&1011)结果为 15。
  4. 位异或运算符^
    参与运算的两个操作数, 相应的二进制数位进行位异或运算, 两个位一样则为 0, 否则为 1。
    如 5^11(0101&1011 结果为 14。
  5. 保留符号位的右移运算符>>
    将一个操作数的各个二进制位全部向右移若干位, 这个位数由右操作数来决定, 移到右端的低位被舍弃,
    左边空出的位全部用最高位的符号位来填充。 如 5>>1 结果为 2。 -9>>1, 结果为-5。
  6. 右移运算符>>> 和>>
    1) >>>右移后左边空出的位用 0 填充(无论最高位是0还是1)。
    如 5>>>1 结果为 2。 -9>>>1, 结果为 2147483643。
    2) >>如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位就填入1。
  7. 左移运算符<<
    将一个操作数的所有二进制位向左移若干位, 右边空出的位填 0。 若高位左移后溢出, 则舍弃溢出的数。
    如 5<<1 结果为 10
    注意:>>n 就是除n个2 <<n 就是乘n个2

6、三元运算符

格式:
条件式?值1:值2
若条件式为true则取值1,反之值2

7、运算符的优先级

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页