Java语言学习笔记-【04运算符、算数、关系、逻辑、赋值...】

1、运算符介绍

+ **算数运算符** + **赋值运算符** + **关系运算符[比较运算符]** + **逻辑运算符** + **位运算符[需要二进制基础]** + **三元运算符**

2、算数运算符

加减乘除

取模==取余

2.1、/ 的应用

10/4 结果是 2
使用浮点数进行运算有小数 10.0 / 4 结果是2.5

2.2、 % 的应用(-10 % 3)

% 取模,取余

在 % 的本质 看一个公式 a % b === a - a / b * b

-10 % 3 = (-10) - (-10) / 3 * 3 = -10 + 9 = -1 结果是 -1

2.3、 ++ 用法

独立使用时 i++ 和 ++i 是相等的

2.3.1、i++ 和 ++i 的理解

作为表达式使用

前++ : ++i 先字赠后赋值

后++ : i++ 先赋值后自增

public class ArithmeticOperator{
	public static void main(String[] args){
		/*
		作为表达式使用
		前++ : ++i 先字赠后赋值
		后++ : i++ 先赋值后自增
		*/
		int j = 8;
		//int k = ++j;//等价于 j = j + 1;k = j;
		int k = j++;//等价于 k = j;j = j + 1;
		int k = ++i;
		System.out.println(j + k);
	}
}
2.3.1.1、经典面试题(思路)
public class ArithmeticOperatorExercise01{
	public static void main(String[] args){
//练习
//经典面试题
int i = 1;
i = i++;//过程: (1) temp = i;(2) i = i + 1;(3) i = temp;
System.out.println(i);//1
	}
}
//题二
		int j = 1;
		j = ++j;//过程: (1) i = i +1;(2) temp = i;(3) i = temp;
		System.out.println(j);//2

2.3.1.2、课堂训练
1) 假如还有 59 天放假,问:合 xx 个星期零 xx 天
//课堂训练
		//1.需求:
		//假如还有 59 天放假,问:合 xx 个星期零 xx 天
		//2.思路分析
		//(1) 使用 int 变量 days 保存 天数
		//(2) 一个星期是 7 天 星期数 weeks: days / 7 零 xx 天 leftDays days % 7
		//(3) 输出
		//3.走代码
		int days = 59;
		int week = days / 7;
		int leftDay = days % 7;
		System.out.println("星期:" + week + "天数:" + leftDay);//星期8,天3

2)华氏温度 转 摄氏温度

//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为
		//:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度
		//
		//2 思路分析
		//(1) 先定义一个 double huaShi 变量保存 华氏温度
		//(2) 根据给出的公式,进行计算即可 5/9*(华氏温度-100)
		// 考虑数学公式和 java 语言的特性
		//(3) 将得到的结果保存到 double sheShi

		double huaShi  = 1234.6;
		double sheShi = ((double)5/9)*(huaShi - 100);
		//或者 double sheShi = 5.0/9*(huaShi - 100);
		System.out.println("华氏温度:" + huaShi + "对应的" + "摄氏温度:" + sheShi);

3、关系运算符

4、逻辑运算符(*)

&&短路与

^ 异或 不同时为true、相同时为false

4.1、逻辑与和短路与区别(&&和&)

案例:

public class LogicOperator01{
	public static void main(String[] args){
		//练习
		//&& 和 & 案例演示
		//&&短路与应用
		int age = 50;
		if(age > 20 && age < 90){
			System.out.println("ok!");
		}
		//&逻辑与应用
		if(age > 20 & age < 90){
			System.out.println("ok2!");
		}

		//区别
		int a = 4;
		int b = 9;
		//对于&&短路与而言,如果第一个条件为 false ,后面的条件不再判断
		//对于&逻辑与而言,如果第一个条件为 false ,后面的条件仍然会判断
		if(a < 1 && ++b >3){
			System.out.println("ok300!");
		}
			System.out.println("a=" + a + "b=" + b);//a = 4;b = 9
			if(a < 1 & ++b >2){
			System.out.println("ok400!");
			}
			System.out.println("a=" + a + "b=" + b);//a = 4;b = 10
	}
}

if(a && b) ----如果a是错误的b将不执行,短路与

if(a & b) ----如果a是错误的b依然执行,逻辑与

4.2、同时逻辑或 和 短路或用法(|和| |)

if(a | | b) ----如果a是true的b将不执行结果为true,短路或

if(a & b) ----如果a是错误或者正确的,b依然执行,逻辑或

//看看区别
//(1)||短路或:如果第一个条件为 true,
//则第二个条件不会判断,最终结果为 true,效率高
//(2)| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
int a = 4;
int b = 9;
if( a > 1 || ++b > 4) { // 可以换成 | 测试
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b); //4 10

4.3、异或

public class InverseOperator {
//编写一个 main 方法
public static void main(String[] args) {
//! 操作是取反 T->F , F -> T
System.out.println(60 > 20); //T
System.out.println(!(60 > 20)); //F
//a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
boolean b = (10 > 1) ^ ( 3 > 5);//T
System.out.println("b=" + b);//T
}
}

4.4、赋值运算符

public class Assign{
	public static void main(String[] args){
		//练习
		//赋值运算
		byte b = 3;
		b += 2;//此时考虑类型转换;等价 b = (byte)(b + 2)
		b++; //等价b = (byte)(b + 1)
		System.out.println(b);
	}
}

4.5、三元运算符

a > b ? c : d;

5、运算符优先级

  1. () , { } 等
  2. 单目运算符 ++ –
  3. 算数运算符
  4. 位移运算符
  5. 比较运算符
  6. 逻辑运算符
  7. 三元运算符
  8. 赋值运算符

5.1、标识符的命名规则规范

命名区分大小写


自己命名保留字不可用

6、原码、反码、补码(重点背下来)

6.1、基础

7、位运算符

7.1、&、|、^、~ 的用法

与,或,非,异或,取反

计算机内部运行的时候采用补码

显示用户的是原码

&和~ 的运算案例,其它的道理一样

import java.util.Scanner;

public class BitOperator{
	//编写一个main方法
	public static void main(String[] args){
		//1.先得到 2的补码 ==》2的原码 00000000 00000000 00000000 00000010
		// 		原反补相同	 2的反码 00000000 00000000 00000000 00000010
		//					 2的补码 00000000 00000000 00000000 00000010
		//2. 3的补码 3的原码 00000000 00000000 00000000 00000011
		//	 		3的补码 00000000 00000000 00000000 00000011
		//3. 按位与
		//	00000000 00000000 00000000 00000010
		//	00000000 00000000 00000000 00000011
		//	00000000 00000000 00000000 00000010	&后的补码,返回给我们的是原码
		//	运算后的原码 也是 00000000 00000000 00000000 00000010
		// 结果就是   2

		System.out.println(2 & 3);//2

		//推导
		//1.先得到 -2 的原码 10000000 00000000 00000000 00000010
		//2.-2的 2的反码	   11111111 11111111 11111111 11111101
		//3. -2的补码	   11111111 11111111 11111111 11111110
		//4. ~-2操作		   00000000 00000000 00000000 00000001(运算后的补码)
		//5. 运算后的原码就是:00000000 00000000 00000000 00000001  1
		System.out.println(~-2);//1
		
		//推导
		//1. 得到2的原码 :00000000 00000000 00000000 00000010
		//		2的 补码 :00000000 00000000 00000000 00000010
		//2、~2 操作		:11111111 11111111 11111111 11111101(取反后)
		//3. 运算后的反码 :11111111 11111111 11111111 11111100(先反码在原码)
		//			原码 :10000000 00000000 00000000 00000011 -3 
		System.out.println(~2);//-3
	}
}

7.2、位移用法

  1. 2 >> 3 :2向右移3位
  2. 2 << 3 :2向左移3位

例如: 2. >> 1 2的二进制位: 0010–》0001===> 1

2 >> 1 2的二进制位: 0010—》 0100===> 4

2、键盘输入语句

1、引入包概念

2、Scanner键盘输入事件

import java.util.Scanner;

public class Input{
	public static void main(String[] args){
		//演示接受用户的输入
		// 步骤
		//Scanner类 表示简单文本扫描器,在java.util;包
		//1、引入/导出 Scanner类所在的包
		//2、创建Scanner 对象 , new 创建一个对象 体会
		//myScanner 就是Scanner类的对象
		Scanner myScanner = new Scanner(System.in);
		//3、 接收用户输入了,使用 相关方法
		System.out.println("请输入名字");
		String name = myScanner.next();
		System.out.println("请输入年龄");
		int age = myScanner.nextInt();
		System.out.println("请输入薪资");
		double score = myScanner.nextDouble();
		System.out.println("你的信息如下:");
		System.out.println("名字:" + name + "\t年龄:"
		 + age + "\t薪资:" + score);
	}
}

3、进制

	//Binary进制

		//n1 二进制
		int n1 = 0b1010;
		//n2 八进制
		int n2 = 0103;
		//n3 十进制
		int n3 = 103;
		//n4 十六进制
		int n4 = 0x101;
		System.out.println("二进制:" + n1 + "八进制:" + 
			n2 + "十进制:" + n3 + "十六进制:" + n4);

3.1、进制转换

  1. n进制转十进制简单
  2. 十进制 转 二进制 整数倒取余,小数正取整 34 --》100010
  3. 十进制 转 八进制 整数倒取余,小数正取整
  4. 十进制 转 十六进制 整数倒取余,小数正取整
  5. 二进制 转 八进制 三位为一组
  6. 二进制 转 十六进制 四位为一组
  7. 八进制、十六进制 转 二进制
    1. 八转二 每一位转成三位
    2. 十六转二 每一位转成四位

4、本章作业

1、1,2题

2、3题

3、4题

Double.parseDouble(“18.8”);

注意:double中的String不能是字符串


(本章作业图片中已解释,部分图片借用网络资源)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Debug 熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值