Java运算符与选择语句
算数运算符
概述
- 什么是运算符:
对常量和变量进行操作的符号 - 算术运算符
+,-,*,/,%,++,- - - /和%的区别
/:获取两个数据相除的商
%:获取两个数据相除的余数
注意:整数相除只能到整数。要想得到小数,就必须有浮点数据参与运算
字符和字符串参与运算
-
字符参与运算
其实就是拿该字符对应的数值来操作
-
字符串参与运算
其实做的不是加法运算,而是字符串拼接,字符串和其他类型的数据做拼接,结果是字符串类型
代码演示
public class OperaterDemo{
public static void main(String[] args) {
int a =10;
int b =20;
a+=b; //a =a+b
a-=b; //a =a-b
System.out.println(a);
//字符串连接符 + ,String
System.out.println(a+b);
System.out.println(""+a+b);
System.out.println(a+b+"");//""+a+b与a+b+""不同
}
}
结果
10
30
1020
30
自增自减运算符的概述和用法
概述
对变量做加1或者减1的操作
用法
如果++或者–在变量的后面,先拿出变量参与操作,后变量做++或者–
如果++或者–在变量的前面,先将变量做++或者–,后拿变量参与操作
代码演示
/*
* 作用:就是自己+1或者-1
* ++和--可以放在变量的前面,也可以放在变量的后面。
* 单独使用一个变量的时候,放在变量的前面或者后面,效果一样。
*/
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增自减 一元运算符
int a = 3;
int b = a++; //先给b赋值,再自增
int c = ++a; //先自增,再赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 正常写为2^3 但是java不支持
double pow = Math.pow(2, 3);//Math数学类
System.out.println(pow);
}
}
输出结果
5
3
5
8.0
赋值运算符
赋值运算符分类
- 基本的赋值运算符:=
- 扩展的赋值运算符:+=,-=,*=,/=,%=
- +=: a+=20;相当于a = (a的数据类型)(a + 20);
代码演示
public class OperatorDemo {
public static void main(String[] args) {
//定义变量
int a = 10; //把10赋值给int类型的变量a
System.out.println("a:"+a);
//扩展的赋值运算符:+=
//把运算符左边的数据和右边的数据进行运算,然后把结果赋值给左边
//a = a + 20;
a += 20;
System.out.println("a:"+a);
//short s = 1;
//s = s + 1;
//扩展的赋值运算符隐含了强制类型转换。
//a+=20
//等价于
//a =(a的数据类型)(a+20);
short s = 1;
s += 1;
System.out.println("s:"+s);
}
}
关系运算符的概述和使用
基本使用及注意事项
-
关系运算符包含以下内容:
==,!=,>,>=,<,<=
-
关系运算符的结果都是boolean型,也就是要么是true,要么是false
-
注意事项:
关系运算符“==”不能误写成“=”
代码演示
/*
* 关系运算符:
* ==,!=,>,>=,<,<=
* 关系运算符操作完毕的结果是boolean类型。
*
* 注意事项:
* 千万不要把==写成了=
*/
public class OperatorDemo {
public static void main(String[] args) {
//定义三个变量
int a = 10;
int b = 20;
int c = 10;
//==
System.out.println(a == b);
System.out.println(a == c);
System.out.println("------------");
//!=
System.out.println(a != b);
System.out.println(a != c);
System.out.println("------------");
//>
System.out.println(a > b);
System.out.println(a > c);
System.out.println("------------");
//>=
System.out.println(a >= b);
System.out.println(a >= c);
System.out.println("------------");
System.out.println(a == b);
System.out.println(a = b);//20,把b的值赋值给了a,并把a作为结果输出了
}
}
逻辑运算符的概述和应用
概述
-
逻辑运算符用于连接关系表达式,在Java中不可以写成3<x<6,应该写成x>3 && x<6
-
逻辑运算符
&& 、|| 、!
-
结论
&&:有false则false。
||:有true则true。
!:非false则true,非true则false。
特点:偶数个不改变本身。
代码演示
public class Operatordemo {
//逻辑运算符
public static void main(String[] args) {
//与 (and) 或(or) 非(取反)
boolean a =true;
boolean b =false;
System.out.println("a && b:"+(a&&b) );
System.out.println("a || b:"+(a||b));
System.out.println("!(a && b):"+(!(a&&b)));
//短路运算
int c =5;
boolean d = (c<4)&&(c++<4);//前半句为假则后边c++<4不执行
System.out.println(d);
System.out.println(c);
}
}
结果
a && b:false
a || b:true
!(a && b):true
false
5
位运算
//逻辑运算符,位运算
public class Demo06 {
public static void main(String[] args) {
/*
* A =0011 1100
* B =0000 1101
-------------------
A&B = 0000 1100 AB上下对应都为1则为1
A/B = 0011 1101 有一个1则为1
A^B = 0011 0001 相同为0不同为1
~B = 1111 0010 都为1的为0其余为1
*
* 2*8=16 2*2*2*2
* 位运算效率极高
* <<左移 *2
* >>右移 /2
*
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2
* 0000 0011 3
* 0000 0100 4
* 0000 1000 8
*
* */
System.out.println(2<<3);//2左移三位为16
}
}
三元运算符
格式
- (关系表达式)?表达式1:表达式2;
- 如果条件为true,运算后的结果是表达式1;
- 如果条件为false,运算后的结果是表达式2;
代码演示
public class Demo08 {
//三元运算符
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格" : "及格"; //必须掌握
System.out.println(type);
}
}
键盘录入
概述
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性。
步骤
-
导包(位置放到class定义的上面)
import java.util.Scanner;
-
创建对象
Scanner sc = new Scanner(System.in);
-
接收数据
int x = sc.nextInt();
代码演示
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//给出提示
System.out.println("请输入一个整数:");
//获取数据
int i = sc.nextInt();
//把获取的数据输出
System.out.println("i:"+i);
}
}
选择流程控制语句
概述
• 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
• 流程控制语句分类
- 顺序结构
- 选择结构
- 循环结构
顺序结构
概述
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
代码演示
/*
* 顺序结构:从上往下,依次执行
*/
public class OrderDemo {
public static void main(String[] args) {
System.out.println("开始");
System.out.println("语句A");
System.out.println("语句B");
System.out.println("语句C");
System.out.println("结束");
}
}
选择结构
if语句的格式
-
if语句格式1
-
if语句第一种格式:
if(关系表达式) {
语句体
} -
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体 -
代码演示
/* * 执行流程: * A:首先计算关系表达式的值,看是true还是false * B:如果是true,就执行语句体 * C:如果是false,就不执行语句体 */ public class IfDemo { public static void main(String[] args) { System.out.println("开始"); //定义两个int类型的变量 int a = 10; int b = 20; //判断两个变量是否相等 if(a == b) { System.out.println("a等于b"); } //定义变量 int c = 10; if(a == c) { System.out.println("a等于c"); } System.out.println("结束"); } }
-
-
if语句格式2
- if(关系表达式) {
语句体1;
}else {
语句体2;
} - 执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
- if(关系表达式) {
- 代码演示
/*
* 执行流程:
* A:首先计算关系表达式的值,看结果是true还是false
* B:如果是true,就执行语句体1
* C:如果是false,就执行语句体2
*/
public class IfDemo2 {
public static void main(String[] args) {
System.out.println("开始");
//判断一个数据是奇数还是偶数
//思路:如果一个数据对2取余的结果是0,说明该数是偶数
//定义一个变量
int a = 100;
//重新给a赋值
a = 99;
if(a%2 == 0) {
System.out.println("a是偶数");
}else {
System.out.println("a是奇数");
}
System.out.println("结束");
}
}
-
if语句格式3
-
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
} -
执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1 -
代码演示
/* * 执行流程: * A:计算关系表达式1的值,看是true还是false * B:如果是true,就执行语句体1 * C:如果是false,就继续计算关系表达式2的值,看是true还是false * D:如果是true,就执行语句体2 * E:如果是false,就继续计算... * F:所有的关系表达式的结果都是false,执行语句体n+1 */ public class IfDemo3 { public static void main(String[] args) { System.out.println("开始"); //假如x和y满足如下的关系: //x>=3 y=2x+1 //-1<=x<3 y=2x //x<-1 y=2x-1 //根据给定的x的值,计算出y的值 int x = 5; x = 0; x = -5; //定义变量y int y; if(x >= 3) { y = 2*x+1; }else if(x>=-1 && x<3) { y = 2*x; }else if(x<-1) { y = 2*x-1; }else { y = 0; System.out.println("不存在这样的x的值"); } System.out.println("y:"+y); System.out.println("结束"); } }
-
Switch语句
格式
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n+1;
break;
}
格式解释
表达式:byte,short,int,char
JDK5以后是枚举,JDK以后可以使字符串
case后面的值:是用来和表达式的值进行匹配的
break:表示中断
default:所有的值都和表达式不匹配,就执行default对应的的内容
执行流程:
A:计算表达式的值
B:拿着这个值依次和case后面的值进行比对,一旦匹配,就执行对应的语句,在执行的过程中,遇到break就结束
C:如果所有的case都不匹配,就执行语句体n+1
代码演示
import java.util.Scanner;
/*
案例:
根据键盘录入的数据1-7,输出对应的星期一到星期日
快捷键:对代码进行格式化
ctrl+shift+f
*/
public class SwitchDemo {
public static void main(String[] args) {
//创建键盘录入数据
Scanner sc= new Scanner(System.in);
//给出提示
System.out.println("请输入一个整数1-7");
int weekDay = sc.nextInt();
//用switch语句事先判断
switch(weekDay) {
case 1:
System.out.println("星期一");
break ;
case 2:
System.out.println("星期二");
break ;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你输入的数据有误");
break;
}
}
}
本文地址:https://blog.csdn.net/weixin_44707339/article/details/109582378