002-Java基础语法之逻辑运算
1、Scanner 键盘录入
Scanner 键盘录入三部曲
(1).导包 在类上面写 import java.util.Scanner;
(2).创建对象 Scanner sc = new Scanner(System.in);
(3).接收数据
a.整数 int a = sc.nextInt();
b.小数 double b = sc.nextDouble();
c.字符串 String s = sc.next();
d.没有nextChar() 没有nextString();
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//2.创建键盘录入对象 我们在这一步得到一个扫描仪
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
//3.获取键盘输入的数据
int a = sc.nextInt(); //扫描键盘输入整数
System.out.println(a);
}
}
2、算数运算符
算数运算符: + - * / %[取余]
2.1 普通算数运算符
规律:在Java里面,整数和整数相除,结果就是整数,要想得到小数,必须要有小数参与
public static void main(String[] args) {
System.out.println(10 + 4);//14
System.out.println(10 - 4);//6
System.out.println(10 * 4);//40
System.out.println(10 / 4);//2
System.out.println(10 % 4);//2
System.out.println( 10 % 3); //1
System.out.println(10 % 18);//10
System.out.println(10 / 4.0); //2.5
System.out.println(10.0 / 4);//2.5
}
2.2 类型提升
表达式类型提升问题:
(1) 如果一个表达式中,包含多个数据类型,表达式就会提升【自动类型提升】,提升的结果,就是表达式中最高的数据类型。
(2) 整数默认是int类型,所以,低于整数类型的类型[byte short char],都会在运算的过程中,提升为int。【int[] arr1 = {1,2,‘a’};】这个也属于类型转换
byte < short < int < long < float < double
char < int < long < float < double
Java中,整数默认是int类型,浮点数默认是double类型
public static void main(String[] args) {
int a = 10;
double b = 13.14;
double c = a + b + 10 + 13.14; //计算机其实并不是那么智能,它在执行的时候,只能识别一种类型数据。而且一次性只能计算两个数值
int d = 10 / 4 ; // int / int -> int
double e = 10 / 4.0; // int / double -> double
System.out.println("-----------------------------");
byte aa = 10;
byte bb = 20;
int cc = aa + bb;
short dd = 10;
short ee = 20;
int ff = dd + ee;
}
3、字符串 +(加)操作
3.1 字符的 + 运算
原理: 拿这个字符在计算机底层对应的数值来运算【ASCII表】
public static void main(String[] args) {
char ch = 'a';
int cc = ch + 0; // int + int -> int
/*
ch + 0 = 97 -> 'a' => 97
*/
System.out.println(cc); //97
System.out.println('0' + 0); //48
}
3.2 字符串的拼接
规律:串前运算,串后拼接。
public static void main(String[] args) {
System.out.println("北京" + "欢迎你"); //"北京欢迎你"
System.out.println("北京" + 666); //"北京666"
System.out.println("北京" + true); //"北京true"
System.out.println("北京" + 66 + 6); //"北京66" + 6 -> "北京666"
System.out.println(66 + 6 + "北京");//72 + "北京" -> "72北京"
System.out.println(66 + 6 + "北京" + 66 + 6);//72北京666
System.out.println("------------------------------");
int a = 10;
System.out.println("a"); //a
System.out.println(a);//10
System.out.println("a:" + a); // a:10
}
4、运算符
4.1 赋值运算符:
=
+= -= *= /= %=
(1) 拓展的赋值运算符执行流程: 用符号左边的变量 和 符号右边的数值进行运算符,再把结果赋值给左边的变量
(2) 特点: 拓展的赋值运算符,底层隐含了强制类型转换
4.2 自增自减
特点:
自增:++ 变量本身+1 ,单独运算的时候, 放在变量面前和后面 效果一样
自减:-- 变量本身-1 ,单独运算的时候, 放在变量面前和后面 效果一样参与操作:
a++ 先用后加
++a 先加后用
即使是打印字符里面出现a++,++a 都会参与算数运算。
public static void main(String[] args) {
int a = 10;
// a++; // 自增
++a;
System.out.println("a = " + a); //11
int b = 10;
//--b;
b--;
System.out.println("b = " + b); //9
}
面试题:
public static void main(String[] args) {
int a = 10;
int b = a++;
/*
b = a; 10
a++; 11
*/
System.out.println("a = " + a); // 11
System.out.println("b = " + b); // 10
System.out.println("------------------------------");
int c = 10;
int d = ++c;
/*
++c; 11
d = c 11
*/
System.out.println("c = " + c);//11
System.out.println("d = " + d);//11
}
4.3 关系运算符
== != > >= < <=
关系运算符的运行结果是布尔类型
public static void main(String[] args) {
System.out.println(8 == 8); //true
System.out.println(8 == 7); //false
//!=
System.out.println(8 != 8);//false
System.out.println(8 != 7);//true
System.out.println(8 > 7);//true
System.out.println(8 < 7);//false
System.out.println(8 >= 7);//true
System.out.println(8 <= 7);//false
}
4.4 逻辑运算符
逻辑运算符:
逻辑运算符:
作用:连接多个关系表达式
分类:
&& 多个条件需要同时满足。结论,有false 则 false, 短路效应: 如果左边为false 右边就不执行了
|| 多个条件只需要满足其中一个。 结论 有true 则true ,短路效应: 如果左边为true,右边就不执行了
! 取相反的结果
逻辑运算的短路效应:
&& : 有false 则 false, 如果 符号左边为false,右边就不执行了
|| : 有true 则 true,如果 符号的左边为true, 右边就不执行了
打印语句里的自增自减也是参与下列运算的
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a++ > 10 && b++ > 10);//false
// a = 11
// b = 20
System.out.println(a++ > 10 || b++ > 10);//true
System.out.println(!(a > 10));//false
System.out.println(a);//12
System.out.println(b);//20
}
4.5 三元运算符
格式:数据类型 变量名 = 关系表达式 ? 表达式1 : 表达式2;
执行流程:
(1)先执行关系表达式,如果判断结果为true,则返回表达式1的结果。
如果判断结果为false,则返回表达式2的结果。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数");
int a = sc.nextInt();
System.out.println("请输入第二个整数");
int b = sc.nextInt();
int max = a > b ? a : b;
System.out.println(max);
// System.out.println(a > b ? a : b);
}