自学Java笔记2 2021-3-28更

运算符和表达式

在这里插入图片描述

运算符:赋值运算符,算数运算符,关系运算符,逻辑运算符
单等号 =
计算顺序:从右往左
eg:

int num = 998;		//将998这个数值赋值给整型变量num

复合运算符:+=,-=,*=……
eg:

int num = 90;
		int num1 =80;
		num = num +90;		//自增90
		num1 += 80;			//自增80,与上式等价
		System.out.println("num:" + num + "\n" +"num1:" + num1);

运行结果:
在这里插入图片描述

表达式:运算符与操作数的组合
eg:

a = (b + 1) + (b - 2)

算数运算符可以进行算数运算

几元表示需要几个操作数参与运算

一元运算符:++、–

int num1 = 5, num2 = 8;
		num1++;  //=>num = num+1	打印结果为5
		int result1 = num1++;	//重点+难点,区分前置还是后置	打印结果为5
		/*上述式子运算顺序等价于下面
		int result1 = num1;
		num1++*/
		int result2 = ++num2;	//打印结果为9
		/*上述式子运算顺序等价下面
		++num2
		result2 = num2
		*/

个人总结:当++或–只出现在一个变量无其他运算符时前置后置无所谓,eg:

num++//等价于++num

当++或–出现上述情况时,前置++或–才能将++或–的值赋值给前面的变量,后置的话就是先赋值给前面的变量再进行++或–运算。

二元运算符:+、-、*、/、%(取模)

int num1 = 8979 / 10;		//傻瓜计算机,不会给你四舍五入,直接去掉个位,变成897
double num2 = 6789 / 10;   //运行结果:678.0
int num3 = 15 % 2;		//运行结果:1,取模的意思是取余数
int num4 = 15 % 3;		//运行结果:0
int num5 = -15 % -2;	//运行结果:-1,取模最终结果符号只跟第一个数字符号一致,自己尝试

三元运算符:? :

跟if…else…差不多
看程序吧,自己换换数字尝试

int num1 = 90;
int num2 =80;
int num3 = num1 < num2 ? 90 :80;
System.out.println(num3);	//打印结果:90

关系运算符:>、<、>=、<=、==、!=

关系运算符可以比较大小,高低,长短。

逻辑运算符&&、||、!

返回值为bool类型,不是true就是false
在这里插入图片描述

位运算符:&、|、~、^、<<、>>

在这里插入图片描述

条件结构

if结构

先判断后执行

if(条件为真){
//代码块1
}
else{
//代码块2
}

注意:
1、可以省略大括号
2、省略大括号后if结构只能影响到下一行

举例程序:

package feng.java.learning;

import java.util.Scanner;

/*
 * 硬盘盘符一般采用A-Z大写字母表示
 * 使用程序判断用户输入盘符是否符合规则
 * */
public class ifDemo {
	public static void main(String[] args) {
		//1、输入盘符
		Scanner input =  new Scanner(System.in);
		System.out.print("输入盘符");
		char ch = input.next().charAt(0);	//获取用户输入字符串的第一个字符
		if(ch >= 'A' && ch <= 'Z'){
			System.out.println("输入合法!");
		}
		else{
			System.err.println("输入非法!!");
		}
	}
}

switch结构

switch(表达式){
case 常量1:
	语句1breakcase 常量2:
	语句2breakcase 常量3:
	语句3break;
……
default:
	语句:
}

使用switch结构时的注意点:
1.switch后的表达式可以是整型、字符型、String型(不建议String型)
2.case后常量表达式的值不能相同
3.case后允许多条语句,不需要大括号
4.如果不添加break语句,需要特别注意执行顺序
5.case和default子句的先后顺序可以自行变动
6.default子句可以省略

eg:

package feng.java.learning;

import java.util.Scanner;

/*
 * 根据月份打印对应的天数
 * 如果是闰年,2月份天数为29天
 * 使用switch-case结构
 * isLeapYear = year % 4 == o && year != 0 || year % 400 == 0
 * */
public class 日历 {
	public static void main(String[] args) {
		//1、定义变量:年、月、日
		int year = -1,month = -1,dayOfMonth = -1;
		Scanner input = new Scanner(System.in);
		System.out.print("年份:");
		year = input.nextInt();
		System.out.print("月份:");
		month = input.nextInt();
		//2、根据月份计算当月的天数,2月默认28天
		switch(month){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			dayOfMonth = 31;
		case 4:
		case 6:
		case 9:
		case 11:
			dayOfMonth = 30;
		case 2:
			dayOfMonth = 28;
		}
		//3、如果输入年份是闰年,月份天数+1
		boolean isLeapYear = year % 4 == 0 && year != 0 || year % 400 == 0;
		if(isLeapYear){
			dayOfMonth ++;
		}
		System.out.println(year + "年" + month + "月有" + dayOfMonth + "天!");
	}
}

小结:switch和多重if对比:
相同点: 都是用来处理多分支条件的结构
不同点: switch:等值条件判断——条件是有限个的时候
多重if:判断某个连续区间时的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值