2022-07-14 第二小组 张宁杰 Java基础(2)
今日重点
引用数据类型(String)、如何使用if...else语句、如何定义数组、如何使用循环、break和continue的使用
学习心得
今日的Java SE课程难度提高了,通过今天的学习,我掌握了如何使用for循环、break和continue的使用方法,通过计算器案例我学会了如何根据一个项目的需求和逻辑书写代码
学习内容
1.引用数据类型
除了基本数据类型,其他都是引用数据类型。String类也是一种引用数据类型,Java中的字符串只能用双引号,没有范围。
String s1 = "String";
System.out.println(s1);
//练习使用字符串拼接
System.out.println("早上好!" + s1 + "!");
2.Java的键盘输入
包的命名规则:
1.尽量使用全小写
2.包名当中尽量不要出现_&123
3.一般情况下,使用站点名的逆序
www.baidu.com-->com.xxx.模块名(com.baidu.controller(架构名).功能)
"."代表一级
1.png
如何通过键盘输入?
Scanner in = new Scanner(System.in);
//开始输入
String s = in.next();
System.out.println("你输入了:" + s);
案例分析
需求:
- 如果第一个数是8,并且第二个是9,就打印两数和
- 如果其中一个是8,另一个是9,就打印两数差
- 如果两个数中既没有8也没有9,就分别打印两个数
- 多重if:每个if之间没有联系,这些if有可能都执行
Scanner s1 = new Scanner(System.in);
int i1 = s1.nextInt();
int i2 = s1.nextInt();
if (i1 == 8 && i2 == 9){
System.out.println("和是:" + (i1 + i2));
}else if(i1 == 8 || i2 == 8 || i1 ==9 || i2 ==9){
System.out.println("差是:" + (i1 - i2));
}else if(i1 != 8 && i2 != 8 && i1 !=9 && i2 !=9){
System.out.println(i1);
System.out.println(i2);
}
if...else...和if...else
if...else...都有互斥的功能,一套结构中就至多走一个;要注意条件的顺序!!!
int a = 10; if(a > -2){ xxxxx }else if(a > 0){ xxxxx }
应该把小范围在前面
如果情况比较多,判断情况比较复杂,最后一种情况不建议直接写else(必须有100%把握)
3.数组
一维数组
int [] a1 = {1,2,3,4,5};
int [] a2 = new int[5];
int [] a3 = new int[]{1,2,3,4,5};
System.out.println(a3[100]);
System.out.println(a3.length);
二维数组
开发中最多用到二维
int[] [] a5 = new int[5][];
System.out.println(a2[0]);
取出第一个一维数组的第二个元素
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
//获取二维数组的元素
System.out.println(arr[i][j]+",");
}
}
//数组的长度是属性,不是方法,下标一旦越界,一定会报错,当程序抛出异常时,出现异常的位置后面的代码是不会执行的
访问数组元素通过下标(索引),索引从0开始
数据类型的初始值:
byte、short、int、long:0
float、double:0.0
char:\u0000=>' '
boolean:false
String:null
int[]:null
4.循环
for循环
初始化条件:可以是任何类型,大部分情况使用int
判断条件 循环体 循环条件
for (int i = 0 ; i < 10 ;i++){
System.out.println("i");
}
for嵌套循环执行流程
执行流程:
1.i=0外层的for循环启动
2.执行外层的for循环的循环体
4.走里层的for循环想要走完j=0---j=4打印了5次*号 5.里层的for循环走完以后,相当于外层循环启动
6.i++
7.里层循环再开始
foreach循环
foreach:增强for循环,使用for循环遍历数组
foreach语句(增强for)循环,遍历数组
我们操作的是镜像数据,不是原始数据
foreach的操作更加安全,不影响原始数据
foreach是JDK5以后才有的
for (int i: arr) {
//i就是数组中的元素
System.out.println(i);
}
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.print(anInt + ",");
}
System.out.println();
}
while和do...while
while和do...while的区别
do..while无论如何循环至少执行一次
while循环优先判断执行条件是否符合要求,再执行循环体
int i = 10;
while (i < 100){
System.out.println(i);
i++;
}
do{
System.out.println(i);
i++;
}while (i < 20);
5.break和continue在Java中的使用
break和continue
for (int i = 1; i < 20; i++) {
//需求 数7
//从0到100 尾数是7或者7的倍数
if (i % 7 == 0 || i % 10 == 7){
System.out.println("你数到了" + i +"," + "喝酒吧!");
//终止/跳出循环
break;
//终止当前次循环,开启下一次循环
//continue;
}else{
System.out.println(i);
}
System.out.println("哈哈哈哈");
}
break和continue只能控制最近的循环!!!!
a:for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("j:" + j);
if (i == 3){
//break和continue只能控制最近的循环
break a;
}
System.out.println("hhh");
}
}
终止程序执行的方式
0:安全退出
-1:强制退出
System.exit(-1);
计算器案例
从键盘输入两个数字和一个符号
加减乘除
打印输出计算结果
其中注意:
1.除数不能为0
2.符号输出不对怎么办
3.计算器能不能一直算下去
Scanner sc = new Scanner(System.in);
index:for (; ; ) {
System.out.println("请输入第一个数:");
double num1 = sc.nextDouble();
n2:for(;;){
System.out.println("请输入第二个数:");
double num2 = sc.nextDouble();
System.out.println("请输入运算符号:+-*/");
String sep = sc.next();
fh:for(;;){
switch (sep){
case "+":
System.out.println(num1 + sep + num2 + "=" + (num1+num2));
break;
case "-":
System.out.println(num1 + sep + num2 + "=" + (num1-num2));
break;
case "*":
System.out.println(num1 + sep + num2 + "=" + (num1*num2));
break;
case "/":
if (num2 == 0) {
System.out.println("除数不能为0,请重新输入");
continue n2;
}else {
System.out.println(num1 + sep + num2 + "=" + (num1/num2));
break;
}
default:
System.out.println("符号输入错误,请重新输入...");
continue fh;
}
c:for(;;){
System.out.println("是否继续计算:1.继续 2.退出");
String flag =sc.next();
switch (flag){
case "1":
continue index;
case "2":
System.out.println("计算器即将关闭,谢谢使用!");
break index;
default:
System.out.println("您输入的有误,请重新输入");
continue c;
}
}
}
}
}