文章目录
- 1 运算符
- 算术运算符
- 1.2 算术运算符
- 1.3字符的+操作
- 1.4字符串的+操作
- 2 赋值运算符
- 2.1赋值运算符
- 3 自增自减运算符
- 3.1 自增自减运算符
- 4 关系运算符
- 5 逻辑运算符
- 5.1 逻辑运算符
- 5.3 短路运算符
- 6 三元运算符
- 6.1 三元运算符
- 数据输入
- 数据输入概述
- Scanner使用的基本步骤
- 分支语句
- 流程控制
- 流程控制语句分类
- 顺序结构
- if语句
- if语句格式1
- if语句格式2
- if语句格式3
1 运算符
算术运算符
运算符: 对常量或者变量进行操作的符号
表达式: 用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式.
不同运算符连接的表达式体现的是不同类型的表达式
举例:
int a = 10;
int b = 20;
int c = a+b;
+: 是运算符,并且是算术运算符
a+b: 是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
1.2 算术运算符
符号 作用 说明
+加 参看小学一年级
-减 参看小学一年级
*乘 参看小学二年级,与“×”相同
/ 除 参看小学二年级,与“÷”相同
%取余 获取的是两个数据做除法的余数
注意:
/和%的区别:两个数据做除法,/取结果的商,%取结果的余数。
整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
int a = 10;
int b = 3;
System.out.println(a / b); // 输出结果3
System.out.println(a % b); // 输出结果1
/**
算数运算符
*/
public class OperatorDemo01{
public static void main (String[] args){
//定义两个变量
int a = 4;
int b = 3;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
//除法得到的是商,取余得到的是余数
//整数相除只能得到整数,要想得到小数,必须有浮点数参与
System.out.println(6.0 / 4);
}
}
1.3字符的+操作
char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:
‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加
‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加
‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
等级顺序:byte,short,char --> int --> long --> float --> double
/**
字符+的操作
*/
public class OperatorDemo02{
public static void main(String[] args){
//定义两个变量
int i = 10;
char c = 'A';//'A'的值是65
c = 'a';//'a'的值是97
c = '0';//'0'的值是48
System.out.println(i + c);
//char j = i+c;
//char类型会被自动提升为int类型
int j = i+c;
System.out.println(j);
//int k = 10+13.14;
double d = 10+13.14;
}
}
1.4字符串的+操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执 行。
/**
字符串+操作
*/
public class OperatorDemo03{
public static void main(String[] args){
System.out.println("itheima"+ 666); // 输出:itheima666
System.out.println(1 + 99 + "年黑马"); // 输出:100年黑马
System.out.println(1 + 2 + "itheima" + 3 + 4); // 输出:3itheima34
// 可以使用小括号改变运算的优先级
System.out.println(1 + 2 + "itheima" + (3 + 4)); // 输出:3itheima7
}
}
2 赋值运算符
2.1赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
符号 作用 说明
= 赋值 a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
= 乘后赋值 a=b,将a×b的值给a
/= 除后赋值 a/=b,将a÷b的商给a
%= 取余后赋值 a%=b,将a÷b的余数给a
注意:
扩展的赋值运算符隐含了强制类型转换。
/**
赋值运算符
*/
public class OperatorDemo04{
public static void main(String[] args){
//把10赋值给int类型的变量i
int i = 10 ;
System.out.println("i="+i);
//+= 把左右两边数据做加法操作,结果赋值给左边
i+= 20;
System.out.println("i="+i);
//注意:扩展的赋值运算符底层隐含了强制类型转换
short s = 10;
s += 20;
//s=(short)(s+20);
System.out.println("s="+s);
}
}
3 自增自减运算符
3.1 自增自减运算符
符号 作用 说明
++ 自增 变量的值加1
– 自减 变量的值减1
注意事项:
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
最常见的用法:单独使用。
/*
* 自增自减运算符
*/
public class OperationDemo05 {
public static void main(String[] args) {
//定义变量
int i = 10;
System.out.println("i="+i);
//单独使用
// i++;
// ++i;
// System.out.println("i="+i);
// 参与操作使用
// int j= ++i;
int j = i++;
System.out.println("i="+i);
System.out.println("j="+j);
}
}
4 关系运算符
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
public class OperatorDemo05 {
public static void main(String[] args) {
//定义变量
int i=10;
int j = 20;
int k = 10;
//==
System.out.println(i==j);
System.out.println(i==k);
System.out.println("----------");
//!=
System.out.println(i != j);
System.out.println(i != k);
System.out.println("----------");
//>
System.out.println(i>j);
System.out.println(i>k);
System.out.println("----------");
//>=
System.out.println(i>=j);
System.out.println(i>=k);
System.out.println("----------");
//<
System.out.println(i<j);
System.out.println(i<k);
System.out.println("----------");
//<=
System.out.println(i<=j);
System.out.println(i<=k);
System.out.println("----------");
//误把==写为 =
//将右值赋给左
System.out.println(i=j);
}
}
5 逻辑运算符
5.1 逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断 的结果是 true 或 false。
/*
* 逻辑运算符
*/
public class OperatorDemo06 {
public static void main(String[] args) {
//定义变量
int i= 10;
int j = 20;
int k = 30;
//& 有false则false
System.out.println((i > j) & (i > k));//false & false
System.out.println((i < j) & (i > k));//true & false
System.out.println((i > j) & (i < k));//false & true
System.out.println((i < j) & (i < k));//true &true
System.out.println("------------");
//| 有true则true
System.out.println((i > j) | (i > k));//false | false
System.out.println((i < j) | (i > k));//true | false
System.out.println((i > j) | (i < k));//false | true
System.out.println((i < j) | (i < k));//true | true
System.out.println("------------");
//^ 相同则false 不同则true
System.out.println((i > j) ^ (i > k));//false ^ false
System.out.println((i < j) ^ (i > k));//true ^ false
System.out.println((i > j) ^ (i < k));//false ^ true
System.out.println((i < j) ^ (i < k));//true ^ true
System.out.println("------------");
//! 结果相反
System.out.println((i > j));//false
System.out.println(!(i > j));//true
}
}
5.3 短路运算符
符号 作用 说明
&& 短路与 作用和&相同,但是有短路效果
|| 短路或 作用和|相同,但是有短路效果
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都 计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式 将不再参与运算。
注意事项:
- 逻辑与&,无论左边真假,右边都要执行。
- 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
- 逻辑或|,无论左边真假,右边都要执行。
- 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
最常用的逻辑运算符: &&,||,!
/*
*短路逻辑运算
*/
public class OperatorDemo07 {
public static void main(String[] args) {
//定义变量
int i= 10;
int j = 20;
int k = 30;
//&& 有false则false
System.out.println((i > j) && (i > k));//false && false
System.out.println((i < j) && (i > k));//true && false
System.out.println((i > j) && (i < k));//false && true
System.out.println((i < j) && (i < k));//true && true
System.out.println("------------");
//|| 有true则true
System.out.println((i > j) || (i > k));//false || false
System.out.println((i < j) || (i > k));//true || false
System.out.println((i > j) || (i < k));//false || true
System.out.println((i < j) || (i < k));//true || true
System.out.println("------------");
//&&和&
// System.out.println((i++ >100 )&(j++ >100));//false& false //输出 false i = 11 j=21
System.out.println((i++ > 100)&& (j++>100));//false && false //输出 false i=11 j=20
System.out.println("i="+i);
System.out.println("j="+j);
}
6 三元运算符
6.1 三元运算符
- 格式 关系表达式?表达式1:表达式2;
- 范例 a>b?a:b;
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
/*
* 三元运算符
*/
public class OperatorDemo08 {
public static void main(String[] args) {
//定义两个变量
int a = 10;
int b = 20;
//获取两个数据中的较大值
int max = a>b?a:b;
//输出结果
System.out.println("max="+max);
}
}
案例两只老虎
1、需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是 否相同。
分析:
1.定义两个变量用于保存两只老虎的体重,单位为kg,这里仅仅体现数值,int weight1=180;
int weight2=200;
2.用三元运算符来实现体重判断,体重相同返回true否则返回false
(weight1 == weight2)?true:false;
3.输出结果
/*
* 两只老虎比较体重动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是 否相同。
*/
public class OperatorTest01 {
public static void main(String[] args) {
//定义两个不同变量,分别代表两只老虎的体重,单位为kg
int weight1 =180;
int weight2 =200;
//三元运算比较;两只老虎的体重,相同true,不同false
boolean b =weight1 == weight2?true:false;
//输出结果
System.out.println("两只老虎比较结果:"+b);
}
}
案例:三个和尚
2、需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个 和尚的最高身高
分析:
1.定义三个变量保存三个和尚的身高
int height1=150;
int height2=210;
int height3=165;
2.用三元运算符获取前两个和尚较高的身高值,并用临时身高变量保存起来,
height1>height2?height1:height2;
3,用三元运算符取临时身高和第三个身高比较,并用最大身高变量保存
tempHeight>height3?tempHeight:height3:
输出结果
/*
* 需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个 和尚的最高身高。
*/
public class OperatorTest02 {
public static void main(String[] args) {
//定义三个不同变量,用来存储三个和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;
//用三元运算符将前两个身高进行比较,并用临时身高值保存较高的那个身高
int temp = height1>height2?height1:height2;
//用三元运算符将保存的临时身高值和第三个和尚进行比较
int max = temp>height3?temp:height3;
//输出结果
System.out.println("三个和尚中最高身高为:"+max);
}
}
数据输入
数据输入概述
Scanner使用的基本步骤
1.导包
import java.util.Scanner;
2.创建Scanner对象
//创建Scanner对象,sc表示变量名,其他均不变
Scanner sc = new Scanner(System.in);
3.接收数据
//表示将键盘录入的值作为int数据返回
int i = sc.nextInt( );
/*
* 数据输入
* 导包
* import java.util.Scanner;
*创建Scanner对象
* //创建Scanner对象,sc表示变量名,其他均不变
* Scanner sc = new Scanner(System.in);
*接收数据
* //表示将键盘录入的值作为int数据返回
* int i = sc.nextInt( );
*/
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
int i = sc.nextInt();
//输出结果
System.out.println("i="+i);
}
}
案例三个和尚升级
需求:一座寺庙里住着三个和尚,他们的身高必须经过测量得出,请用程序实现获取这三个和尚的最高身高
分析
1.身高未知,采用键盘录入实现,首先导包,然后创建对象.
import java.util.Scanner;
Scanner sc = newScanner(System.in);
2.键盘录入三个身高分别赋值给三个变量
int height1 = sc.nextInt();
int height2= sc.nextInt();
int height3 = sc.nextInt();
3.用三元运算符获取前两个和尚较高的身高,并用临时身高变量保存起来
height1 >height2 ?height1:height2;
用三元运算符获取临时身高值第三个和尚身高较高值,并用最大身高变量保存
temp>height3?temp:height3;
/*
* 数据输入 三个和尚升级
*/
import java.util.Scanner;
public class ScannerTest01 {
public static void main(String[] args) {
//创建变量,三个和尚身高
Scanner sc = new Scanner(System.in);
//键盘录入三个身高分别赋值给三个变量
System.out.println("第一个和尚的身高:");
int height1 = sc.nextInt();
System.out.println("第二个和尚的身高:");
int height2 = sc.nextInt();
System.out.println("第三个和尚的身高:");
int height3 = sc.nextInt();
//用三元运算符获取两个和尚的身高
int temp = height1 >height2?height1:height2;
//用三元运算符临时数据和第三比较
int max = temp>height3?temp:height3;
//输出
System.out.println("三个和尚最高的"+max+"cm");
}
}
分支语句
流程控制
流程控制语句分类
- 顺序结构
- 分支结构(if, switch)
- 循环结构(for, while, do…while)
顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
/*
* 顺序结构
*/
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(关系表达式){
语句体;
}
执行流程:
1.首先计算关系表达式的值
2.如果关系表达式的值为true就执行语句体
3.如果关系表达式的值为false就不执行语句体
3.继续执行后面的语句内容
/*
* if语句练习
*/
public class IfDemo01 {
public static void main(String[] args) {
System.out.println("开始");
//定义变量
int a =10;
int b = 20;
//判断ab的两个的值是否相等,如果相等输出a等于b
if(a==b) {
System.out.println("a等于b");
}
//判断ac是否相等
int c =10;
if(a==c) {
System.out.println("a等于c");
}
System.out.println("结束");
}
}
if语句格式2
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
1.首先计算关系表达式的值
2.如果关系表达式的值为true就执行语句体1
3.如果关系表达式的值为false就执行语句体2
4.继续执行后面的内容
/*
* if语句练习2
*
*/
public class IfDemo02 {
public static void main(String[] args) {
//定义两个变量
int a =10;
int b=20;
//if语句判断a与b是否相同,true输出a与b相同,false输出a与b不同
if(a == b) {
System.out.println("a等于b");
}else {
System.out.println("a不等于b");
}
System.out.println("结束");
}
}
案例:奇偶数
需求:任意给出一个整数,请用程序 实现判断整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
分析:
1.为了体现任意给出一个整数,采用键盘录入一个数据
使用键盘录入功能需要导包
import java.util.Scanner;
创建对象
Scanner sc = new Scanner(System.in);
接收数据
int number = sc.nextInt();
2.判断整数是偶数还是奇数要分两种情况进行判断使用ifelse结构
3.判断是否是偶数需要用到取余运算number%2 ==0;
4.根据判定情况,在控制台输出对应内容
/*
* 奇偶数判断
*/
import java.util.Scanner;
public class IfTest01 {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("输入整数判断奇偶数的数据:");
int number = sc.nextInt();
//判断是否为偶数
if(number%2==0) {
System.out.println(number+"输入的是偶数");
}else {
System.out.println(number+"输入的是奇数");
}
}
}
if语句格式3
格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else{
语句体n+1;
}
执行流程:
①首先计算关系表达式1的值
②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
④… ⑤如果没有任何关系表达式为true,就执行语句体n+1。
/*
* if语句格式三
*/
import java.util.Scanner;
public class IfDemo03 {
public static void main(String[] args) {
//需求:键盘录入一个星期数(1,2,3,..7),输出对应的星期
//创建
Scanner sc = new Scanner(System.in);
System.out.println("输入一个星期数");
//接收数据
int week = sc.nextInt();
if(week ==1 ) {
System.out.println("星期一");
}else if(week == 2) {
System.out.println("星期二");
}else if(week ==3) {
System.out.println("星期三");
}else if(week == 4) {
System.out.println("星期四");
}else if(week ==5) {
System.out.println("星期五");
}else if(week == 6) {
System.out.println("星期六");
}else if(week == 7) {
System.out.println("星期日");
}else {
System.out.println("输入错误");
}
}
}
案例:考试奖励
需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明 的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出
分析:
1.
分析
/*
* 考试奖励
* 需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,
* 假如你可以控制小明 的得分,用程序实现小明到底该获得什么样的礼物, 并在控制台输出
* 奖励:
* 95-100 山地自行车
* 90-94 游乐场玩一次
* 80-89 变形金刚一个
* 80以下 胖揍一顿
*/
import java.util.Scanner;
public class IfTest02 {
public static void main(String[] args) {
//小明考试成绩未知,通过键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("输入小明的的成绩");
int score = sc.nextInt();
//奖励判断
if(score>100 || score<0) {
System.out.println("输入成绩错误");
}else if(score>=95 && score<=100) {
System.out.println("奖励山地自行车一辆");
}else if(score>=90 && score<=94) {
System.out.println("奖励游乐场玩一次");
}else if(score>=80 && score<=89) {
System.out.println("奖励变形金刚一个");
}else {
System.out.println("胖揍一顿");
}
}
}