参考教程

JDK8帮助文档

狂神说Java视频

Scanner对象

通过java.util.Scanner类来获取用户的输入。基本语法:

1
Scanner s = new Scanner(System.in);

获取输入的字符串:next()nextLine()方法

判断是否还有输入的数据:hasNext()hasNextLine()方法

QQ截图20201229111613

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;

public class base {
public static void main(String[] args) {
//创建一个扫描器对象用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
String str = scanner.next();//程序会等待用户输入完毕
System.out.println("输出的内容:"+str);
}


//创建一个扫描器对象用于接收键盘数据
Scanner scanner2 = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断是否还有输入
if (scanner2.hasNextLine()){
String str2 = scanner2.nextLine();//程序会等待用户输入完毕
System.out.println("输出的内容:"+str2);
}


//凡是属于IO流的类如果不关闭会一直占用资源,要养成良好习惯用完就关掉
scanner.close();
scanner2.close();
}
}
  • 进阶:判断小数与整数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;

public class extern {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

//从键盘接收数据
int i = 0;
float f = 0.0f;

System.out.println("请输入整数:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
}else {
System.out.println("输入的不是整数数据");
}

System.out.println("请输入小数:");
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:"+f);
}else {
System.out.println("输入的不是小数数据");
}

scanner.close();
}
}
  • 进阶:输入多个数字求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;

public class count {
public static void main(String[] args) {
//输入多个数字求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);

//和
double sum = 0;
//计算输入了多少个数字
int m = 0;

System.out.println("请输入数据:");

//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;
sum+=x;
System.out.println("你输入了第"+m+"个数,当前总和为:"+sum);
}

System.out.println(m+"个数的和为:"+sum);
System.out.println(m+"个数的平均值为:"+(sum/m));

scanner.close();
}
}

顺序结构

QQ截图20201229153053

选择结构

if选择结构

1
2
3
4
5
6
7
8
9
if(布尔表达式1){
//如果布尔表达式1为true将执行的语句
}else if(布尔表达式2){
//如果布尔表达式2为true将执行的语句
}else if(布尔表达式3){
//如果布尔表达式3为true将执行的语句
}else{
//如果以上布尔表达式都不为true将执行的语句
}

switch选择结构

1
2
3
4
5
6
7
8
9
10
11
switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
//可以有任意数量的case语句
default://可选
//语句
}
  • switch中的变量类型支持byte、short、int、char、String
  • case标签必须为字符串变量或者字面量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Switch {
public static void main(String[] args) {
char grade = 'C';
//case穿透 switch匹配一个具体的值
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
//break;
case 'D':
System.out.println("再接再厉");
//break;
case 'E':
System.out.println("挂科");
//break;
default:
System.out.println("未知等级");
}
}
}

JDK7后新特性:switch表达式可以是String类型变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class SwitchString {
public static void main(String[] args) {
String name = "Messi";
//JDK7后的新特性,switch表达式可以是String类型

switch (name){
case "Messi":
System.out.println("GOAT");
break;
case "Suarez":
System.out.println("Shooter");
break;
default:
System.out.println("Player");
}
}
}

利用IDEA(其实是一个反编译工具)直接打开.class文件,可以看到对应的switch语句switch(name.hashCode())case -1807693272:,说明一切字符的本质还是数字

循环结构

while循环

1
2
3
while(布尔表达式){
//循环内容
}
  • 当布尔表达式为true,循环会一直执行下去
  • 为了让循环停下来,一般需要一个让表达式失效的方式来结束循环
1
2
3
4
5
6
7
8
9
10
public class While {
public static void main(String[] args) {
//输出1-100
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
}
}

do-while循环

1
2
3
do{
//代码语句
}while(布尔表达式)

与while循环的区别:

  • while先判断后执行,do-while先执行后判断
  • do-while总是保证循环体会被至少执行一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class DoWhile {
public static void main(String[] args) {
int i = 0;
int sum = 0;

do{
sum+=i;
i++;
}while (i<=100);

System.out.println(sum);

int a = 0;
do{
System.out.println(a);
a++;
}while (a<0);
}
}

for循环

1
2
3
for(初始化; 布尔表达式; 更新){
//代码语句
}
  • 最先执行初始化步骤。可以声明一种类型, 但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
  • 再次检测布尔表达式。循环执行上面的过程。

死循环:

1
2
3
for(; ; ){

}

Demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class For {
public static void main(String[] args) {
for (int i=1;i<=100;i++){//在IDEA里输入100.for自动生成这一行
System.out.println(i);
}


//计算0-100之间的奇数和偶数的和
int oddSum = 0;
int evenSum = 0;

for (int i = 0; i <= 100; i++) {
if (i%2!=0){
oddSum+=i;
}else {
evenSum+=i;
}
}
System.out.println("奇数的和:"+oddSum);
System.out.println("偶数的和:"+evenSum);


//输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i <= 1000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){//每行
System.out.println();
//System.out.print("\n");
}
}
//println:输出完会换行
//print:输出完不会换行
System.out.println();


//打印九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"×"+i+"="+j*i+'\t');
}
System.out.println();
}
}
}

增强for循环

1
2
3
for(声明语句 : 表达式){
//代码句子
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

主要用于数组或者集合中:

1
2
3
4
5
6
7
8
9
public class ExternFor {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};

for (int x:numbers){
System.out.println(x);
}
}
}

break&continue

  • break:强行退出循环
  • continue:终止某次循环过程,跳过循环体中尚未执行的语句而接着进行下一次循环的判定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class BreakContinue {
public static void main(String[] args) {
int i = 0;
while (i<100){
i++;
System.out.println(i);
if (i==30){
break;
}
}
i = 0;
while (i<100){
i++;
if (i%10==0){
System.out.println();
continue;
}
System.out.println(i);
}
}
}

打印三角形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class PrintTriangle {
public static void main(String[] args) {
//打印三角形 5行
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int k = 1; k <= i; k++) {
System.out.print("*");
}
for (int m = 1; m < i; m++) {
System.out.print("*");
}
System.out.println();
}
}
}