知识点:

熟记 JAVA 语法基础 2;

        运算规则 运算符(自增自减 短路与 短路或 三目运算符)

一、运算规则(5 条)

1.1 计算结果的数据类型,与最大数据类型一致

System.out.println(3/2);//1 , int/int, 得到的结果类型还是 int

System.out.println(3/2d);//1.5 , int/double 。得到的结果是 double

1.2 byte,short,char 三种比 int 小的整数,运算时会先自动转换成 int

byte a = 1;

byte b = 2;

byte c = (byte)(a+b);

//a+b 会自动提升成 int 类型,右面得运算结果就是 int 大类型,给左面的 byte 小类型赋值,不可以,需要强转。

1.3 整数运算溢出

整数运算,类似于一个钟表,转到最大时,再转会回到最小。

计算:光速运行一年的长度是多少米? 3 亿 m/s

// 溢出的现象:因为做了大的整型数据的运算,会超出 int 取值范围。解决方法:把整数提升成 long 类型。

System.out.println(300000000L*60*60*24*365);

1.4 浮点数运算不精确

1-0.8 ( 这是一个现象)

1.5 浮点数的特殊值

Infinity 无穷大 3.14/0

NaN not a number 0/0.0 或 0.0/0

二、运算符

2.1 概述


运算符 用于连接 表达式 的 操作数,并对操作数执行运算。


例如,表达式 num1+num2,其操作数是 num1 和 num2,运算符是”+”。


在 java 语言中,运算符可分为 5 种类型:


        算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。


根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。


        单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。


        位运算符涉及到二进制位的运算,在 java 程序中运用不是很多。


2.2 运算符速查表

java简单输出 java的输出规则_System

2.2.1 算术运算符之自增自减运算符


a 是操作数,++是自增运算符,--是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的 后面,例如:a++、++a、a--、--a 等。


自增(++):将变量的值加 1


分前缀式(如++a)和后缀式(如 a++)。前缀式是先加 1 再使用;后缀式是先使用再加 1。


自减(--):将变量的值减 1


分前缀式(如--a)和后缀式(如 a--)。前缀式是先减 1 再使用;后缀式是先使用再减 1。


2.2.2 逻辑运算符


        逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题


注意逻辑运算符返回的运算结果为布尔类型


通常,我们用 0 表示 false,用 1 表示 true


与:表示并且的关系


单与&: 1 & 2 ,结果想要是 true,要求 1 和 2 都必须是 true


双与/短路与&&:1 && 2 ,当 1 是 false 时,2 会被短路,提高程序的效率


或:表示或者的关系


单或|: 1 | 2,结果想要是 true,要求 1 和 2 只要有一个为 true 就可以


双或/短路或||:1 || 2,当 1 是 true 时,2 会被短路,提高程序效率


        TIPS:当一个表达式包含多个运算符时,就需要考虑运算符的优先级,优先级高的运算符先参与运算,优先级低的 运算符后参与运算。在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级 的地方使 用小括号辅助 进行优先级管理。


2.3 练习 1:测试自增自减


创建 Java 工程: DAY03


创建包: cn.tedu.basic


创建类: Test1_Operator.java


package cn.mbh.basic;
/**
*@author MBH:
*@version 创建时间:2022年7月2日 下午10:01:32
*/
/**本类用于测试运算符自增自减*/
public class Test1_Operator {

	public static void main(String[] args) {
		//符号在前,先变化再使用
		 //符号在后,先使用再变化
		int a = 1;
		System.out.println(a++);//此时,a++的值为1
		System.out.println(a);//总输出的a的值为1+1=2
		
		int b = 1;
		System.out.println(++b);//此时,++b的值为2
		System.out.println(b);//总输出的b的值为2
		
		System.out.println(++a+a+b++);//3+3+2=8
		
		int c = 1;
		System.out.println(c--);//此时,c--的值为1
		System.out.println(c);//总输出的c的值为0
		
		int d = 1;
		System.out.println(--d);//此时,--d的值为0
		System.out.println(d);//总输出的d的值为0
		
		System.out.println(--c-c-c--);//-1-(-1)-(-1)=1
	}

}

2.4 练习 2:求两数的最大值

创建类: Test2_MaxNum.java

package cn.mbh.basic;

import java.util.Scanner;

/**
*@author MBH:
*@version 创建时间:2022年7月2日 下午10:11:52
*/
/**本类用于测试求两个数的最大值*/
public class Test2_MaxNum {

	public static void main(String[] args) {
		//1、接收键盘输入的两个整数
		System.out.println("请输入要比较的第一个数:");
		 int a = new Scanner(System.in).nextInt();
		 System.out.println("请输入要比较的第二个数:");
		 int b = new Scanner(System.in).nextInt();
		 
		//2、比较,用三元运算符比较 1 ? 2 : 3
		 int max = a > b ? a : b;
		 System.out.println("两个数的最大值是:"+max);

	}

}

2.5 练习 3:求平年闰年


创建类: Test3_Year.java


需求:接收用户输入的年份,判断是平年还是闰年


package cn.mbh.basic;

import java.util.Scanner;

/**
*@author MBH:
*@version 创建时间:2022年7月2日 下午10:14:57
*/
public class Test3_Year {
	/**本类用于接收用户输入的年份,判断是平年还是闰年*/
	/*
	* 如果年份是闰年,只要满足以下两条件其中之一即可:
	* 1.能被4整除,并且不能被100整除
	* 2.能被400整除
	*/
	public static void main(String[] args) {
		//1.提示并接收用户输入的年份
		System.out.println("请输入要判断的年份:");
		int year = new Scanner(System.in).nextInt();
		
		String result = "平年";//设置默认值,假设每年都是平年
		//2.判断用户输入的年份是否满足闰年的条件
		//2.1判断结构:if(判断条件){满足条件的代码}
		/**第一种写法:*/
		// if(year%4==0){//能被4整除
		// if(year%100 != 0){//并且不能被100整除
		// result = "闰年";//修改默认值
		// }
		// }
		// if(year%400 == 0){//能被400整除
		// result = "闰年";//修改默认值
		// }
		/**第二种优化写法:*/
		// 1.能被4整除,并且不能被100整除
		// 2.能被400整除0
		//if( (小判断条件1 && 小判断条件2 ) || 判断条件2){满足条件的代码}
		//if( (能被4整除 && 不能被100整除 ) || 能被400整除){
		if( (year%4==0 && year%100 != 0 ) || year%400 == 0){
		result = "闰年";//修改默认值
		}
		System.out.println(year+"年是"+result);

	}

}

三、分支结构

3.1 概述


顺序结构的程序虽然能解决计算、输出等问题


但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构


3.2 形式

当判断条件成立时 ( 返回 true) ,才会执行代码 …

单分支

        if(判断条件 ){ 代码 }

多分支

        if(判断条件 ){

                代码 1

        }else{

                执行不满足条件的代码 2

        }

嵌套分支

        if(判断条件 1){

                代码 1

        }else if(判断条件 2){

                执行不满足条件的代码 2

        }else if(判断条件 3){

                执行不满足条件的代码 3

        }else{

                执行谁都不满足条件的代码 4

}

3.3 练习 4:商品打折案例


创建类: Test4_ Discount.java


需求: 接收用户输入的原价。满 1000 打 9 折;满 2000 打 8 折;满 5000 打 5 折


package cn.mbh.basic;

import java.util.Scanner;

/**
*@author MBH:
*@version 创建时间:2022年7月2日 下午10:20:25
*/
/**本类用于测试商品打折案例*/
public class Test4_Discount {

	public static void main(String[] args) {
		//1.提示并接收用户输入的原价
		System.out.println("请输入商品原价");
		double price = new Scanner(System.in).nextDouble();
		
		//2.计算折后价
		//2.1定义变量count来保存折后价,初始值为原价
		double count = price;
		
		if(price >= 5000){//满5000。
			count = price * 0.5;//打5折 
		}else if(price >= 2000){ //满2000
			count = price * 0.8;//打8折
		}else if(price >= 1000){ //满1000打9折
			count = price * 0.9;
		}
		System.out.println("原价是:"+price+",折后价是:"+count);

	}

}

四、拓展补充:


Eclipse 快捷键


        Ctrl+D: 删除当前行

        Ctrl+Alt+↓ 复制当前行到下一行(复制增加)



        Ctrl+Alt+↑ 复制当前行到上一行(复制增加)

        Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)

        Alt+↑ 当前行和上面一行交互位置(同上)

        Alt+← 前一个编辑的页面

        Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)

        Ctrl+L 定位在某行 (对于程序超过 100 的人就有福音了)

        shift+回车,下面添加空行

        ctrl+shift+回车,上面添加空行

        Ctrl+/ 注释当前行,再按则取消注释

        Ctrl+Shift+/ 注释当前段落,再按则取消注释

        Ctrl+Shift+X 把当前选中的文本全部变为大写

        Ctrl+Shift+Y 把当前选中的文本全部变为小写

        Ctrl+Shift+F 格式化当前代码