ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java学习3:运算符

2021-11-09 10:33:33  阅读:125  来源: 互联网

标签:学习 Java 运算 00000000 补码 运算符 ++ 原码


3.运算符

运算符是一种特殊的符号,用于表示数据的运算、赋值和比较。

3.1算术运算符

算术运算符是对数值类型的变量进行运算的。

在java中 %(模) 的本质:a % b = a - a / b * b 简记:符号取左边变量的。

++(自增)的一些注意事项

  1. i++;先赋值,再自增

    ​ int i =2; int j = i++; //i = 3, j = 2

  2. ++i;先自增,再赋值

    ​ int i = 2; int j = ++i; //i =3, j = 3

  3. 自身++赋值

    ​ int i =1; i = i++;

    ​ 后++,先使用,后自增,很容易理解为i=i,然后i++,得到i = 2;但实际上上面代码结果为i = 1。

    ​ 这里其实会有一个临时变量temp;i = i++实际过程为

    ​ (1)temp = i;(2)i = i + 1;(3)i = temp;

    ​ 所以最终i = 1。

    ​ 另外,i = ++i 的执行过程为(1)i = i + 1;(2)temp = i;(3)i = temp。

3.2关系运算符

关系运算符的结果都是boolearn型,要么是true,要么是false。

3.3逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是以一个boolean值。

&&与&的区别

&&叫短路与,如果&&符号之前的为false,后面的条件不判断(常用)

&叫逻辑与,不管&符号前是否为false,后面的条件都判断

|| 和 | 和 && 与 & 类似。

^逻辑异或: a^b,当a和b不同时,结果为true,否则为false。

易错题

8

答案为 50。

首先z++是后加加,所以先判断z和46是否相等然后再自增,相等,&&前为true,此时z为47,然后把true赋值给y,&&后也为真,if语句成立,z++,此时z为48;然后把false赋值给x,||前为false,判断后面表达式,++z,先自增再判断,z为49,z与49相等,||后面表达式成立,if语句成立,z++,z为50。

3.4 赋值运算符

赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值。

复合赋值运算符会进行类型转换,如:byte num = 4; num += 2; 相当于 byte num = 4; num = (byte)(num + 2);

3.5 标识符

标识符规范

  1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc
  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz【大驼峰】比如:TankShotGame
  3. 变量名、方法名:多单词组成时,第一个单词小写,第二个单词开始的每个单词首字母大写:xxxYyyZzz【小驼峰,简称 驼峰法】 比如:stuName
  4. 常量名:所有字母大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ 比如:TAX_RATE

3.6 四种进制

  1. 二进制:0,1,满2进1。以0b0B开头。如:0b1010(十进制10)
  2. 十进制:0-9,满10进1。 如:10
  3. 八进制:0-7,满8进1,以数字0开头表示。 如:012(十进制10)
  4. 十六进制:0-9以及A(10)-F(15),满16进1,A-F不区分大小写,以0x0X开头表示。 如:0xA(十进制10)

3.7 原码、补码、反码(重点、难点

  1. 二进制最高位是符号位:0表示正数,1表示负数。
  2. 正数的原码,反码,补码都一样(三码合一)。
  3. 负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)
  4. 负数的补码=它的反码+1,负数的反码=负数的补码-1。
  5. 0的反码,补码都是0。
  6. java没有无符号数,换言之,java中的数都是有符号的。
  7. 在计算机运算的时候,都是以补码的形式来运算的。
  8. 当我们看运算结果的时候,要看他的原码。

3.8 位运算

java中有7个位运算符(&、|、^、~、>>、<<和>>>)

  1. 按位与&:两位全为1,结果为1,否则为0。
  2. 按位或|:两位有一个为1,结果为1,否则为0
  3. 按位异或^:两位一个为0,一个为1,结果为1,否则为0
  4. 按位取反~:0->1,1->0
  5. 算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位,本质是/2
  6. 算术左移<<:符号位不变,低位补0,本质是*2
  7. 逻辑右移(无符号右移)>>>:低位溢出,高位补0

特别说明:没有<<<符号。

// 位运算
public class BitOperrator{
	public static void main(String[] args){
		// 2&3
		// 2的原码	00000000 00000000 00000000 00000010
		// 2的反码	00000000 00000000 00000000 00000010
		// 2的补码	00000000 00000000 00000000 00000010
		// 3的补码	00000000 00000000 00000000 00000011
		// 按位与 &
		// 00000000 00000000 00000000 00000010
		// 00000000 00000000 00000000 00000011
		// 00000000 00000000 00000000 00000010	运算后的补码
		// 运算后的原码	00000000 00000000 00000000 00000010
		// 结果就是 2
		System.out.println(2&3); // 2
//============================================================
		// ~-2
		// -2的原码	10000000 00000000 00000000 00000010
		// -2的反码	11111111 11111111 11111111 11111101
		// -2的补码	11111111 11111111 11111111 11111110
		// 按位取反	00000000 00000000 00000000 00000001	运算后的补码
		// 运算后的原码 00000000 00000000 00000000 00000001
		// 结果就是 1
		System.out.println(~-2); // 1
//============================================================
		// ~2
		// 2的补码	00000000 00000000 00000000 00000010
		// 按位取反	11111111 11111111 11111111 11111101 运算后的补码
		// 运算后的反码	11111111 11111111 11111111 11111100
		// 运算后的原码	10000000 00000000 00000000 00000011
		// 结果就是 -3
		System.out.println(~2); // -3
//============================================================
		// 2|3
		// 2的补码	00000000 00000000 00000000 00000010
		// 3的补码	00000000 00000000 00000000 00000011
		// 按位或 |
		// 00000000 00000000 00000000 00000010
		// 00000000 00000000 00000000 00000011
		// 00000000 00000000 00000000 00000011	运算后的补码
		// 运算后的原码	00000000 00000000 00000000 00000011
		// 结果就是 3
		System.out.println(2|3); // 3
//============================================================
		// 2^3
		// 2的补码	00000000 00000000 00000000 00000010
		// 3的补码	00000000 00000000 00000000 00000011
		// 按位异或	00000000 00000000 00000000 00000001	运算后的补码
		// 运算后的原码	00000000 00000000 00000000 00000001
		// 结果就是 1
		System.out.println(2^3); // 1
//============================================================
		System.out.println(1>>2); // 1 / 2 / 2 = 0
		System.out.println(1<<2); // 1 * 2 * 2 = 4
	}
}

标签:学习,Java,运算,00000000,补码,运算符,++,原码
来源: https://blog.csdn.net/weixin_43741998/article/details/121222698

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有