Java基础(3)——算术 逻辑 位运算符,三元运算符 & Scanner使用_java三元运算符 添加逻辑或


### 2.scanner用try… catch



import java.util.Scanner;
import java.util.InputMismatchException;

public class Test3 {
public static void main(String[] args) {
// 1. Scannner相关处理
Scanner scanner = new Scanner(System.in);
/*
* java.util.InputMismatchException
* 产生 :Scanner使用时产生;
* 解决:异常处理机制——异常捕获
* try {
* // 可能会出现异常的代码
* }catch{
* }
* 捕获异常的作用:
* 1.当程序异常时,可以根据异常的类型做出不同的处理;
* 2.保证程序在处理完异常后可以继续执行后面的程序,而不是中断程序;
*/
// 测试问题
System.out.println(“请输入一个数:”);
int num = 0; //变量要赋初始值
while(true) {
try {
// scanner.nextInt()报错时,会进入catch循环
num = scanner.nextInt(); // 阻塞 , 局部变量

			System.out.println("数据为" + num);
			break; //输入正确,跳出循环
		}catch(InputMismatchException e) {
			System.out.println("您输入的不是一个整数");
			scanner.nextLine(); // 解决进入死循环
		}
	}

	System.out.println("数据"+num);
	System.out.println("程序接下来的代码");
	
	// 释放资源
	scanner.close();
}

}


## 一、数字运算符


### 1.加法


字符串的拼接:



System.out.println(x+“+”+ y +“=”+(x+y)


### 2.除法: / 默认对商取整



> 
> 获取结果为小数的方法:i\*1.0/j
> 
> 
> 



//保留小数位数的方法:
double agv3 = agv*100 + 0.5;
int agv4 = (int)(agv*100+0.5);
double agvResult = agv4*1.0 / 100;
System.out.println(agvResult);


### 3.取余数:%


获取个十百位数


### 案例:加减乘除,判断奇偶,保留位数



/*算数运算符
*
*/
public class Demo1 {
public static void main(String[] args) {
// 1. 加法,数字加法,字符串拼接
int x = 3;
int y = 5;
int result = x+y;
System.out.println(x + “+” + y + “=” + result);
System.out.println(x + “+” + y + “=” + (x+y));
// 2.除法 / 默认对商取整
double a = 1.23;
System.out.println((int)a);
int i = 10;
int j = 3;
System.out.println(i/j);
System.out.println(i*1.0/j);
// 求平均数
int score1 = 97;
int score2 = 64;
int score3 = 90;
double agv = (score1 + score2 + score3)*1.0/3;
System.out.println(agv);
// 2.1.保留两位小数;
// agv*100 = 8366.66667
// agv*100+0.5 = 8367.16666
// (int)(agv*100+0.5)
// double s = 8367*1.0/100
// 2.2.保留三位小数;
double agv3 = agv*100 + 0.5;
int agv4 = (int)(agv*100+0.5);
double agvResult = agv4*1.0 / 100;
System.out.println(agvResult);

// 3.求余数,% 取模
// 3.1获取进制位,获取百位
int num = 123;
int bai = num/100;   // 123/100 = (int)1.23 = 1
int shi = num/10%10; // 123/10 = 12 % 10 = 2
int ge = num%10;     // 123%10 = 3

// 3.2判断一个数是否是奇数还是偶数;
int num3 = 10;
if(num3%2 == 0) {
	System.out.print("unm是偶数");
	
}else {
	System.out.print("num是奇数");
}

// 4.自增自减运算符 i++ i-- ++i --i
}

}


### 4.自增运算符:i++,++i



> 
> i++: 先使用i参与运算,运算结束后再+1;  
>  ++i: 先将i自增1,然后参与运算
> 
> 
> 



int i = 1;
i++ * 10//:结果为10,i为2;
++i * 10//:结果为20,i为2;



// 4.自增自减运算符 i++ i-- ++i --i
public class Demo2 {
public static void main(String[] args) {
int i = 1;
// 情形1:单独使用时,下面等效
// i = i + 1;
// i += 1;
// i++;
// ++i;

// 情形2:当++ 参与运算符
/\*

* i++: 先使用i参与运算,运算结束后再+1;
* ++i: 先将i自增1,然后参与运算
*/
System.out.println(i++ *10); // 结果为10,i的值为2
// System.out.println(++i*10); // 结果为20,i的值为2
}
}


## 二、逻辑运算符


### 1.或|



> 
> // 短路或, 表达式1 || 表达式2:当表达式1的结果为true,表达式2不会执行
> 
> 
> 



System.out.println(5>3 || 10/0 > 4);


### 2.与 &



> 
> // && 短路与,表达式1 && 表达式2【当表达式1的结果为false,表达式2不会执行】
> 
> 
> 



System.out.println(5<4 && 10/5 > 2)


### 3.非!



boolean removeFlag = true;
if (!removeFlag) {}


### 案例:与或非,短路


![在这里插入图片描述](https://img-blog.csdnimg.cn/453375618d7242ec88b3f4efd0755cd2.png)



/*逻辑运算
* 或 | 与& 非!
*/
public class Demo4 {
public static void main(String[] args) {
// 1.或 | 只要有一个成立,结果就是true
System.out.println(3>5 | 6>5);

	// 短路或, 表达式1 || 表达式2【当表达式1的结果为true,表达式2不会执行
	System.out.println(5>3 || 10/0 > 4);
	
	// 2.与 & 两个表达式都成立时才为true
	System.out.println(3>5 & 5>4);
	// && 短路与,表达式1 && 表达式2【当表达式1的结果为false,表达式2不会执行】
	System.out.println(3>5 && 5/0>4);
	
	// 3.非 ! 非真即假,非假即真
	boolean flag = true;
	flag = !flag; // 取反操作
	}

}


### 4.==等于



public class Demo3 {
public static void main(String[] args) {
// 对于基本数据类型,只会比较数值
System.out.println(11.0);
String s = “1”+“2”+“3”;
String s1 = “12”+“”+“3”;
String s2 = “123”;
System.out.println(s
s1); // true
System.out.println(s1==s2); // true

	String ss = "上海";
	String ss1 = "2020";
	String ss3 = ss + ss1; // 当出现两个变量拼接时会导致地址的变化
	String ss4 = "上海2020";
	System.out.println(ss4==ss3);
	System.out.println(ss3.equals(ss4)); // 比较两个变量的值是否相等
}

}


### 案例:判断闰年,验证登陆



/*逻辑运算
* 或 | 与& 非!
*/
public class Demo4 {
public static void main(String[] args) {
/*
* // 综合案例: 判断是否为润年
* 闰年:四年一润,百年不润,四百年再润
* 能被4整除,不能被100整除,能被400整除
*year%4 == 0;year%100 != 0;year%400 ==0;

*/
int year = 2020;
if(year%4 == 0 && year%400 != 0 || year%400 == 0) {
System.out.println(year + “是闰年”);
}else {
System.out.println(year + “是平年”);
}

	// 综合案例:模拟登陆(账号:admin,密码123)
	String username = "admin";
	String password = "123";
	if("admin".equals(username)) {
		System.out.println("用户登陆成功");
	}else {
		System.out.println("用户名或密码错误");
	}
}

}


## 三、位运算符


### 1.左移和右移 >>


重点(能够实现高效运算)



num >> n //:num/2的n次方


### 2.异或 ^


不同为true,相同为false:简单的加密算法



> 
> x^y=z z^x→y z^y→x
> 
> 
> 



	int a = 10;
	int b = 666;
	int mv = a ^ b;
	// 解密的密文
	int result = mv ^ a;
	System.out.println(result);

### 案例:左移右移,加密



public class Teat1 {
public static void main(String[] args) {
// 按位与 或 3 & 5
// 异或 ^ 不同为true,相同为false
// 简单的加密算法:x^y=z z^x→y z^y→x
int a = 10;
int b = 666;
int mv = a ^ b;
// 解密的密文
int result = mv ^ a;
System.out.println(result);

	// 左移和右移 >>
	// 重点(能够实现高效运算):num >> n :num/2的n次方
	System.out.println(16 >> 2);
}

}


## 三.三元运算符


? :  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ae927ffe89b04e1d9487bc28b2704a9b.png)


* 三元运算符 表达式?结果1:结果2
* 执行流程:成立返回1,不成立返回2



// 3.1 三个数的最大值
// 三元运算符,ab 比较,将ab比较的结果再和c比较
int a = 10;
int b = 20;
int c = 30;
int max = a > b ? a : b;
max = max > c ? max : c;
System.out.println(max);



> 
> 如何交换两个变量的数据
> 
> 
> 



// 面试点:如何交换两个变量的数据
int x = 10;
int y = 20;
int temp = x; //声明第三个变量存放任意一个变量值;

System.out.println(“x=” + x + “,y=” + y);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值