1.算术运算符
1).+、-、*、/、%(做除法,取余数)
2).示例代码:
public class Demo02 {
public static void main(String[] args) {
int a = 10;
int b = 5;
System.out.println(a + b);//15
System.out.println(a - b);//5
System.out.println(a * b);//50
System.out.println(a / b);//2
System.out.println(a % b);//0
}
}
3).其它说明:
1).如果整数除法,如果不能整除,只取整数的"商"
System.out.println(10 / 5);//2
System.out.println(10 / 3);//3
System.out.println(10.0 / 3);//3.333333333
System.out.println(10 / 20);//0
System.out.println(10 % 20);//10
2).%表示:做除法,取余数:
System.out.println(10 % 5);//0
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1
3).短整型(byte、short、char)在运算时,会自动提升为int:
byte a = 10;
byte b = 20;
byte c = a + b;//编译错误,结果必须是int类型,需要写成:int c = a + b;
类似于:a + b:表达式中有"变量"的,叫:变量表达式
但:
byte c = 10 + 20;//OK的,编译后就是:byte c = 30;
类似于:10 + 20:表达式中没有"变量"的,都是"常量",叫:常量表达式。
4).一个运算表达式中如果有多种类型,而且都大于int类型,结果必须是这个表达式中"最大的类型"
byte a = 10;
int b = 20;
long c = 30;
long result = a + b + c;
5).字符类型的运算:
char c = 'a';//底层存储的就是'a'字符的编码值:97
int x = c + 2;
System.out.println(x);//99
System.out.println((char)x);//'c'
6)."字符串"也可以使用"+"符号:做字符串连接
String s = "呵呵";
int n = 250;
System.out.println(s + n);
注意:字符串可以和"任何类型"做字符串拼接。
7).如果是混合运算也是先乘除,后加减,可以使用()改变运算顺序
System.out.println(10 + 20 / 5 - 20 * 2);
System.out.println((10 + 20) / (5 - 20) * 2);
2.赋值运算符:
/*
赋值运算符:作用:更改变量的值的。
1).=:
int a = 10;//从右向左执行
int b = 2 + 5;//int b = 7;
2).+=
3).-=
4).*=
5)./=
6).%=
*/
public class Demo03 {
public static void main(String[] args) {
//1.=
int a = 10;
int b = 2 + 5;
int c = a + 20;
//2.+=
int x = 10;
x += 20;//相当于:x = x + 20;
//注意:
byte b1 = 10;
// b1 = b1 + 20;//编译错误,b1 + 20结果必须是int类型
b1 += 20;//OK的,b1 = (byte)(b1 + 20);
byte b2 = 10;
b2 *= 2 + 5;//b2 = (byte)(b2 * (2 + 5));
System.out.println("b2 = " + b2);
}
}
3.自增、自减运算符:++、–,作用:更改变量的值,只增加/减少1
public class Demo04 {
public static void main(String[] args) {
int a = 10;
a++;//加1
++a;//再加1
System.out.println(a);//12
a–;//减1
–a;//再减1
System.out.println(a);//10
//注意:如果表达式只做一件事——只自增/自减,++/--写在变量的前面或者后面都可以。
//但是:如果表达式做多件事,++/--在变量的前面、后面会影响最终的结果。
int m = 10;
int n = m++;//1.先将m赋给n;2.将m自增1
System.out.println(n);//10
int x = 10;
int y = ++x;//1.先将x自增1;2.将x的值赋给y
System.out.println(y);//11
}
}
============================================================================================================================
4.关系运算符(比较运算符):用做两个数的比较,结果是一个boolean类型(true/false)
/*
关系运算符(比较运算符)
1).>:大于
2).<:小于
3).>=:大于或者等于
4).<=:小于或者等于
5).==:是否相等
6).!=:是否不相等
*/
public class Demo05 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 10;
System.out.println(a > b);//false
System.out.println(a < b);//true
System.out.println(a >= c);//true
System.out.println(a <= c);//true
System.out.println(a == c);//true
System.out.println(a != c);//false
char ch = 'a';
System.out.println(ch > a);//true
System.out.println(++ch == 'b');//true
}
}
5.逻辑运算符:
1).&&:逻辑与,语义上"并且",左右两边都为true,结果才为:true。
2).||:逻辑或,语义上"或者",左右两边有一个为true,结果为:true。
3).!:逻辑非,语义上"不是…"
public class Demo06 {
public static void main(String[] args) {
//1.&&:男孩子找女朋友:
//要求:1).身高1.60以上,并且,年龄20以上
Scanner sc = new Scanner(System.in);
/*System.out.println("请输入女孩子的身高:");
double height = sc.nextDouble();
System.out.println("请输入女孩子的年龄:");
int age = sc.nextInt();
System.out.println(height >= 1.60 && age >= 20);
*/
//2.||,女孩子找男朋友
//要求:1).身高:1.85以上,或者,月薪:20000以上
System.out.println("请输入男孩子的身高:");
double height = sc.nextDouble();
System.out.println("请输入男孩子的月薪:");
int salary = sc.nextInt();
System.out.println("是否符合石趁心的意愿:" + (height >= 1.85 || salary >= 20000));
//3.!,非
System.out.println(!true);//false
System.out.println(!false);//true
}
}
//判断是否在某个范围。
public class Demo06_2 {
public static void main(String[] args) {
int age = 28;
//判断年龄:是否在20-25之间
System.out.println(20 <= age && age <= 25);
//判断年龄:是否不在20-25之间
System.out.println(!(20 <= age && age <= 25));
//或者
System.out.println(age < 20 || age > 25);
}
}
//&&和||的短路行为:
public class demo06_3 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//&&的短路:当左边为false,短路,不执行右边
/*System.out.println(a > 20 && ++b == 20);//false
System.out.println(b);//20*/
//||的短路:当左边为true,短路,不执行右边
System.out.println(a == 10 || ++b > 50);//true
System.out.println(b);
}
}
========================================================================================================================
6.三元运算符:
布尔表达式 ? 返回值1 : 返回值2;
应用:计算两个整数的最大值
public class Demo07 {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a > b ? a : b;
System.out.println("最大值:" + c);
String str = a > b ? "第一个数大":"第二个数大";
System.out.println(str);
}
}
========================================================================================================================
7.流程控制语句:
1).选择结构:
1).if语句(三种格式)
A).if(布尔表达式){
//如果"布尔表达式"为true,执行这里
}
=======================================================
/*
if语句格式1:一个判断一个选择
if(布尔表达式){
//如果"布尔表达式"为true,执行这里
}
*/
public class Demo08 {
public static void main(String[] args) {
//从控制台接收一个考试分数,程序要打印这个分数,
//然后要做一个"判断":如果分数是:100分,打印一句:满分哦,非常优秀!!
Scanner sc = new Scanner(System.in);
System.out.println(“请输入你的分数:”);
int score = sc.nextInt();
//程序要打印这个分数
System.out.println("你的分数是:" + score);
//判断
if (score == 100) {
System.out.println("满分哦,非常优秀!!");
}
}
}
B).if(布尔表达式){
//如果"布尔表达式"为true,执行这里
}else{
//如果"布尔表达式"为false,执行这里
}
======================================================================================
public class Demo09 {
public static void main(String[] args) {
int score = 40;
if (score >= 60) {
System.out.println("及格");
}else{
System.out.println("不及格!");
}
}
}
C).if(布尔表达式1){
....
}else if(布尔表达式2){
....
}else if(布尔表达式3){
....
}else{
//前面的所有布尔表达式全部为false,执行这里
}
=======================================================================================
public class Demo10 {
public static void main(String[] args) {
//从控制台接收一个考试分数:程序判断
//1.90--100分:优秀
//2.70-89分:良好
//3.60-69分:及格
//4.40-59分:不及格
//5.0-39分:找家长
Scanner sc = new Scanner(System.in);
System.out.println("请输入考试分数:");
int score = sc.nextInt();
if (score >= 90 && score <= 100) {
System.out.println("优秀!");
} else if (score >= 70 && score <= 89) {
System.out.println("良好");
} else if (score >= 60 && score <= 69) {
System.out.println("及格");
} else if (score >= 40 && score <= 59) {
System.out.println("不及格");
} else if (score >= 0 && score <= 39) {
System.out.println("找家长");
}else{
System.out.println("你的分数输入有误!");
}
}
}
2).switch语句:在某种情况下可以代替if语句:
1).对一个变量的多个可能的值的"精确判断";【常用】
2).对一个变量的多个可能的值的"小范围的判断(3个以内)”
格式:
switch(表达式){//结果必须是:byte、short、int、char、String、枚举类型
case 值1:
//代码:
break;
case 值2:
//代码:
break;
case 值3:
//代码:
break;
....
default:
//代码:
break;
}
public class Demo11 {
public static void main(String[] args) {
//从控制台接收一个1-7的值,打印:星期一、星期二、...、星期日
Scanner sc = new Scanner(System.in);
System.out.println("请输入1-7的星期值:");
int week = sc.nextInt();
//用switch语句
switch (week) {
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;
}
}
}
//小范围的判断
public class Demo11_2 {
public static void main(String[] args) {
//从控制台接收一个1-12的月份值,程序要能够打印:春季、夏季、秋季、冬季
Scanner sc = new Scanner(System.in);
System.out.println("请输入1-12的月份:");
int month = sc.nextInt();
//switch
switch (month) {
default:
System.out.println("你的输入有误!");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
}
}
}
==========================================================================
switch语句的注意事项:
1.switch()括号里面必须是:byte、short、int、char、String、枚举
2.case后面必须是"常量/常量表达式",不能是"变量/变量表达式"
3.多个case之间没有"顺序关系"。
4.多个case的值,不能有重复的。
5.case语句和default语句,也没有顺序关系;
int w = 20;
switch(w){
default:
System.out.println("a");
case 1:
System.out.println("b");
case 2:
System.out.println("c");
}
打印:a b c
6.目前我们判断字符串是否相等不要使用==,不好使,但可以使用switch:
1).第一种方式:equals()方法:
String op = sc.next();
if(op.equals("+")){
System.out.println("加");
}
2).第二种方法:switch语句
public class Demo11_3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int n1 = sc.nextInt();
System.out.println("请输入+、-、*、/运算符:");
String op = sc.next();
System.out.println("请输入第二个数:");
int n2 = sc.nextInt();
switch (op) {
case "+":
System.out.println(n1 + n2);
break;
case "-":
System.out.println(n1 - n2);
break;
case "*":
System.out.println(n1 * n2);
break;
case "/":
System.out.println(n1 / n2);
break;
default:
System.out.println("你的输入有误!");
}
}
}