开发工具IntelliJ IDEA
快捷键
1.psvm + 回车: main方法
2.sout + 回车: 输出语句
3.ctrl + d: 复制当前行
4.ctrl + alt + L: 格式化代码
5.alt + shift + ↑: 向上移动代码
6.alt + shift + ↓: 向下移动代码
7.ctrl + /: 单行注释
8.ctrl + shift + /: 多行注释
9.alt + 回车: 代码修正
10.alt + /: 自动提示
11.ctrl + Y: 删除当前行运算符
关系运算符
关系运算符
1.作用:
用来比较数据之间的大小关系
2.特点:
不管关系表达式多么复杂或者多么简单,返回值一定是布尔类型的结果,要么是true,要么是false
3.分类:
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b,判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于或者等于b,成立为true,不成立为false
< a<b,判断a是否小于b,成立为true,不成立为false
<= a<=b,判断a是否小于或者等于b,成立为true,不成立为false
4.注意:
(1)=: 一个等号是赋值的意思
(2)==: 两个等号是判断是否相同的意思
public class Demo01GuanXi {
public static void main(String[] args) {
int a = 10, b = 20;
boolean result = (a == b);
System.out.println(result);//false
System.out.println(a != b);//10 != 20: true
System.out.println(a > b);//10 > 20: false
System.out.println(a >= b);//10 >= 20: false
System.out.println(a < b);//10 < 20: true
System.out.println(a <= b);//10 <= 20: true
System.out.println(a == b);//10 == 20: false
System.out.println(a = b);//20 把变量b的值赋值给变量a,最后打印变量a的值
}
}逻辑运算符
1.作用:
用来连接多个条件(布尔表达式的: 结果为true/false的式子),最终的结果也必须是一个布尔类型的数据,要么是true,
要么是false
不管逻辑运算符连接的式子有多么简单或者多么复杂,最终结果要么是true,要么是false
2.分类:
(1)&(shift+7): 逻辑与,表示并且的意思,多个条件同时成立的意思,就是只有多个条件都是true,最终的结果才是true
特点:
【有false,则false】: 只要有一个条件不成立(false),结果就是false
(2)|(shift+\): 逻辑或,表示或者的意思,多个条件,只要有一个成立,最终的结果就是true
特点:
【有true,则true】:只要有一个条件是true,结果就是true
(3)^(shift+6): 逻辑异或,相同为false,不同为true ----基本不用
(4)!(shift+1): 逻辑取反,!true 就是false,!false 就是true
public class Demo02LuoJi {
public static void main(String[] args) {
int a = 10,b = 20,c = 30;
System.out.println(a>b & a>c);//10 > 20 & 10 > 30 ==> false & false ==> false
System.out.println(a<b & a<c);//10 < 20 & 10 < 30 ==> true & true ==> true
System.out.println(a>b & a<c);//10 > 20 & 10 < 30 ==> false & true ==> false
System.out.println(a<b & a>c);//10 < 20 & 10 > 30 ==> true & false ==> false
System.out.println("--------------------");
System.out.println(a>b | a>c);//10 > 20 | 10 > 30 ==> false | false ==> false
System.out.println(a<b | a<c);//10 < 20 | 10 < 30 ==> true | true ==> true
System.out.println(a>b | a<c);//10 > 20 | 10 < 30 ==> false | true ==> true
System.out.println(a<b | a>c);//10 < 20 | 10 > 30 ==> true | false ==> true
System.out.println("--------------------");
System.out.println(a>b ^ a>c);//10 > 20 ^ 10 > 30 ==> false ^ false ==> false
System.out.println(a<b ^ a<c);//10 < 20 ^ 10 < 30 ==> true ^ true ==> false
System.out.println(a>b ^ a<c);//10 > 20 ^ 10 < 30 ==> false ^ true ==> true
System.out.println(a<b ^ a>c);//10 < 20 ^ 10 > 30 ==> true ^ false ==> true
System.out.println("--------------------");
System.out.println(!true);//false
System.out.println(!false);//true
}
}逻辑运算符
1.短路的逻辑运算符
(1)短路逻辑与&&: 左侧为false,右边不计算
(2)短路逻辑或||: 左侧为true,右侧不计算
2.特点:
(1)短路逻辑与&&: 和&结果是相同的,但是&&可以提高效率
(2)短路逻辑与||: 和|结果是相同的,但是||可以提高效率
3.建议:
以后开发学习中,全部使用短路与&& 以及 短路或||三元运算符
1.格式:
数据类型 变量名称 = 布尔表达式1 ? 表达式2 : 表达式3;
2.执行流程:
(1)计算布尔表达式1的结果,看是true还是false
(2)如果布尔表达式1的结果为true,就把表达式2的结果赋值给左侧的变量
(3)如果布尔表达式1的结果为false,就把表达式3的结果赋值给左侧的变量数据输入
数据输出: 把程序运行的结果数据输出到控制台,从而显示到屏幕上
数据输入: 获取用户从键盘上录入的数据到程序当中,然后程序根据业务需求,对获取到的数据进行相关处理
思考1:
像数据输入这样的操作使用非常频繁,而且实现起来比较复杂,jdk的开发人员已经把此功能实现好了
jdk中把获取键盘录入数据的功能放到了java.util包的Scanner类中
思考2: 如何使用键盘录入Scanner类呢?
java中的数据类型: 基本数据类型(四类八种)和引用数据类型(类,接口,数组,枚举...)
对于引用类型的使用有固定的使用步骤,而键盘录入Scanner类就是一个引用类型,使用也有固定的步骤
键盘录入Scanner的使用,有固定的3个步骤: ----固定格式,先记住
1.导包(找到我们要使用的东西,告诉jvm我们使用的东西在哪里)
格式:
import 包名.类名;
import java.util.Scanner;
2.创建对象:
格式:
类名 对象名 = new 类名(...);
类名: 就是之前写代码时class关键字后面的名字
Scanner sc = new Scanner(System.in);
注意: System.in是固定写法,后面就业班专门讲解
3.使用:
sc.nextInt(): 获取键盘录入的整数数字
4.练习:
获取键盘录入的一个int数字并输出到控制台
(1)导包: import java.util.Scanner;
(2)创建对象: Scanner sc = new Scanner(System.in);
(3)获取键盘录入的数字: sc.nextInt()
import java.util.Scanner;
public class Demo01Scanner {
public static void main(String[] args) {
//(1)导包: import java.util.Scanner;
//(2)创建对象: Scanner sc = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
//(3)获取键盘录入的数字: sc.nextInt()
System.out.println("哥们,请您输入一个整数数字: ");
int num = sc.nextInt();
System.out.println("您输入的整数数字: "+num);
}
}练习
package com;
import java.util.Scanner;
public class SanYuanYunSuan {
public static void main(String[] arge) {
int tiger1 = 180, tiger2 = 200;
String a = (tiger1 == tiger2) ? "相同" : "不同";
System.out.println("这两头老虎体重相同么? 答:" + a);
int Max = (tiger1 > tiger2) ? tiger1 : tiger2;
System.out.println("这两头老虎体重最大的是多少 答:" + Max);
Scanner SC = new Scanner(System.in);
/* H1.nextInt();
H2.nextInt();
H3.nextInt();
*/
int h1 = SC.nextInt();
int h2 = SC.nextInt();
int h3 = SC.nextInt();
int hMax = (h1 > h2 && h1 > h3) ? h1 : ((h2 > h3) ? h2 : h3);
System.out.println("这三个和尚最高的是多少 答:" + hMax);
}
}package com;
public class Sractice01TF {
public static void main(String[] arge) {
int a = 10;
int b = 20;
int c = 30;
//(10+20)>30
System.out.println((a + b) > c);// 输出 false
//(10-20)<30
System.out.println((a - b) < c);// 输出 true
//(10+20)>=30
System.out.println((a + b) >= c);// 输出 true
//(20+10)<=30
System.out.println((a + b) <= c);// 输出true
System.out.println("===============================");
//(30-10)!=20
System.out.println((c-a)!=b); //结果等于20 所以为false
//(10-20)>30
System.out.println((a-b)>c); //结果小于30 所以结果为false
//(30-20)<10
System.out.println((c-b)<a); //结果等于10 所以结果为fales
//(10+20)==30
System.out.println((a+b)==c); //结果等于30 所以结果为true
//(10+20)=30 属于赋值操作
//System.out.println((a+b)=c);
//(a+b)不能接收 c 赋予的值,因为(a+b) 不是变量名
System.out.println("===逻辑运算&&短路(true && true):true 其余都是false ===");
//(10>20)&&(10>30) 左边已经为 false 则不会运行右边
System.out.println((a>b)&&(a>c)); // false 不会运行右边
//
System.out.println((a<b)&&(a<c)); // true 会运行左边
//
System.out.println((a>b)&&(a<c)); // false 不会运行右边
//
System.out.println((a<b)&&(a>c)); // false 会运行右边
System.out.println("===逻辑运算||短路(false && false):false 其余都是true ===");
System.out.println((a>b)||(a>c));// false 两边都运行
System.out.println((a<b)||(a<c));// true
System.out.println((a>b)||(a<c));// true
System.out.println((a<b)||(a>c));// true
}
}package com;
public class Srctice01S3Y {
public static void main(String[] arge) {
int a = 3;
int b = 5;
int result = a > b ? a : b;
System.out.println(result);//5
/*
请问,在控制台输出的结果是什么?
A:2
B:8
C:3
D:5
*/
int aa = 10;
int bb = 20;
int cc = 30;
int temp = aa>bb?aa:bb;
int result1 = temp>cc?temp:cc;
System.out.println(result1);//a
/*
请问,在控制台输出的结果是什么?
A:30
B:10
C:20
D:60
*/
}
}总结
能够知道&&和&的区别
&&: 短路与,左边为flase,右边不进行计算 效率高
&: 不管左边是true还是false,右边都进行计算 效率低
但是: &&和&的结果是相同的
能够使用三元运算符完成获取两个数中较大值
int a = 10, b = 20;
int max = (b>a) ? b : a;
能够使用键盘录入数据并完成两个数据求和
导包: import java.util.Scanner;
创建: Scanner sc = new Scanner(System.in);
使用:
int a = sc.nextInt();
int b = sc.nextInt();
int sum = a + b;
sout("sum="+sum);
能够知道IDEA的项目结构
知道运算符的逻辑关系
能够使用IDEA完成模块的导入
能够熟练使用 Scanner类
遇到的问题:
1:注意 :导入的文件 不会在当前源文件中
2:使用 Scanner类时 注意接收数据的格式
如int 类型:int a = sc.nextInt();
接收 String 类型 时遇到问题--- String b = sc.toString(); String b = sc.nextLine(); 这是错误的
正确的格式 String b = sc.next();
















