Java教程

Java学习3:运算符

本文主要是介绍Java学习3:运算符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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学习3:运算符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!