20220714_第七小组_张红睿_学习笔记
Java基础第二天
1. 了解
1.1 IDEA首页
- Project 项目
- Remote Development 远程开发
- Customize 常规主题
- Plugins 插件
- Learn IntelliJ IDEA 学习
1.2 项目中的JDK
< 11 >是Jdk版本,该目录下就是项目所需JDK的所在,内部都是以.class形式的文件,而不是.java。因为在项目运行时,如果是.java那么还需要再将这些文件进行编译,是不需要的。而且IDE提供了反编译的功能,可将.java编译后的.class文件重新反编译成.java呈现出来。
2. 掌握
2.1 包的命名规则
-
尽量不要出现_&123
-
尽量使用全小写字母
-
一般情况下,使用站点名的逆序www.baidu.com
-
包名com.baidu.模块名
-
包名com.baidu.架构名
-
根据实际情况com.baidu.模块.架构.功能.xxx
-
2.2 使用import导入工具
import java.util.Scanner;
2.3 键盘输入
// 构建一个工具,键盘输入
Scanner in = new Scanner(System.in);
// 开始输入
String input = in.next();
System.out.println("你输入了: " + input);
2.3.1 问题1:输入字符串中有空格
如上图所示,当输入字符串中含有空格时,输出结果不包含空格后的字符串,因为在Scanner中,空格是next()函数的一个默认结束标记,导致字符串被截断,同样next()还有一个默认结束标记为换行符"\n"。
解决方法
使用Scanner的public Scanner useDelimiter(Pattern pattern)方法将默认分隔符更换
...
// 更换默认分隔符
in.useDelimiter("\n");
...
2.4 数据类型初始值/默认值
基本数据类型 | byte | (byte)0 |
short | (short)0 | |
int | 0 | |
long | 0L | |
float | 0.0F | |
double | 0.0 | |
char | '\u0000' -> '' | |
boolean | false | |
引用数据类型 | ~~~ | null |
3. 重点
3.1 引用数据类型
3.1.1 String
1. Java中的字符串只能用双引号
String str1 = "Hello World";
2. 字符串拼接,使用“+”类似C++的运算符重载
System.out.println("早上好: " + str1 + ", 吃饭了吗?");
3.2 数组
3.2.1 一维数组
1. 初始化:
int[] a1 = { 1, 2, 3, 4, 5 }; // 不推荐
int[] a2 = new int[5]; // 推荐
int[] a3 = new int[]{1, 2, 3, 4}; // 推荐
int[] a4;
a4 = new int[]{1, 2, 3, 4};
3.2.2 二维数组
1. 初始化
// 二维数组
int[][] a5 = new int[5][];
3.3 条件语句
3.3.1 if-else
if (条件表达式){
代码块
} else if (条件表达式) {
代码块
}else{
代码块
}
3.3.2 switch
switch (表达式){
case 取值1:
代码块;
(break;)
case 取值2:
代码块;
(break;)
...
default:
默认执行代码块;
}
3.4 循环语句
3.4.1 while
while (条件表达式){
代码块
}
3.4.2 do-while
do {
代码块(相较于while,该代码块至少执行一次)
}while (条件表达式)
3.4.3 for
for (初始化表达式; 条件表达式; i++) {
代码块
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print('*');
}
System.out.print('\n');
}
3.4.4 foreach
foreach语句(增强for循环)遍历数组
- 可以理解为把数组中的元素通过镜像数据
- foreach的操作更加的安全,不影响原始数据
- foreach是JDK5以后才有的
int[] arr = new int[]{1, 2, 3, 4, 5};
for (int value: arr) {
System.out.print(value + " ");
}
3.4.5 死循环
- while(true){}
- do{}while(true)
- for(;😉
死循环被执行后,程序将一直处于运行状态。也可利用死循环达成一些目的,只需要适时改变死循环的条件为false或者使用break跳出、return返回,也可以利用程序退出方式。
3.5 关键字break/continue
break:
结果:
continue:
结果:
4. 注意
4.1 if-else 与 多重if
if-else只走第一次满足条件的代码块,而多重if的所有条件都要判断一遍,可能走多个代码块。
所以在编程中避免使用多重if。
4.2 退出方式
- return:退出函数。
- System.exit(0):退出程序。
- break:跳出循环。
- continue:跳出本次循环。
5.案例
5.1 打印图案
请打印出以下2N+1*N的小图案:
点击查看代码
/*
#####*#####
####***####
###*****###
##*******##
#*********#
*/
public static void main(String[] args) {
int row = 5;
for (int i = 0; i < row; i++) {
for (int j = row - i; j > 0; j--)
System.out.print("#"); // 打印左边的#
for (int j = 0; j < (2 * i + 1); j++)
System.out.print("*"); // 打印中间的*
for (int j = row - i; j > 0; j--)
System.out.print("#"); // 打印右边的#
System.out.println(); //换行
}
}
5.2 猜数字
设置一个整数,然后通过返回大小的方式进行猜数字。
点击查看代码
public static void main(String[] args) {
int keyNum = 67;
int count = 0;
Scanner input = new Scanner(System.in);
while (true){
System.out.println("请输入你想要猜的数: ");
int guessNum = input.nextInt();
count++;
if (guessNum > keyNum){
System.out.println("大了");
} else if (guessNum < keyNum) {
System.out.println("小了");
}else{
System.out.println("恭喜你猜对了! 总次数: " + count + "。");
break;
}
}
}
5.3 简易计算器
点击查看代码
public class Calculator {
public static boolean isValid(String str){
try{
Double.parseDouble(str);
}catch (NumberFormatException exp){
return false;
}
return true;
}
public static boolean isDouble(String str){
if (!isValid(str)){
return false;
}
// 如果输入的字符串中只有一个".", 则为小数, 不包含或有两个及以上都不是小数
if (str.contains(".")){
String new_str = str.replace(".", "");
if (str.length() - new_str.length() == 1)
return true;
}
return false;
}
public static boolean isInteger(String str){
// 输入的数要么不合法,要么是小数,要么就是整数
if (isDouble(str) || !isValid(str))
return false;
return true;
}
public static boolean isOperator(String str){
if(str.length() != 1)
return false;
switch (str.charAt(0)){
case '+':
case '-':
case '*':
case '/':
return true;
default:
return false;
}
}
public static void main(String[] args) {
// 简易计算器
Scanner input = new Scanner(System.in);
String num1, num2, operator;
// 循环进行计算直到手动输入"2"退出
while(true) {
// 判断第一个数是否合法
while (true) {
System.out.println("请输入第一个数: ");
num1 = input.next();
if (isValid(num1))
break;
System.out.println("输入不合法,请重新输入!");
}
// 判断除数是否为零
while (true) {
// 判断第二个数是否合法
while (true) {
System.out.println("请输入第二个数: ");
num2 = input.next();
if (isValid(num2))
break;
System.out.println("输入不合法,请重新输入!");
}
// 判断运算符是否合法
while (true) {
System.out.println("请输入运算符: ");
operator = input.next();
if (isOperator(operator))
break;
System.out.println("输入的不是运算符,请重新输入: + - * /");
}
if (!num2.equals("0") || !operator.equals("/"))
break;
System.out.println("除数不能为零! 请重新输入第二个数: ");
}
// 进行计算
switch (operator.charAt(0)) {
case '+':
if (isInteger(num1) && isInteger(num2))
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Integer.parseInt(num1) + Integer.parseInt(num2))));
else
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Double.parseDouble(num1) + Double.parseDouble(num2))));
break;
case '-':
if (isInteger(num1) && isInteger(num2))
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Integer.parseInt(num1) - Integer.parseInt(num2))));
else
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Double.parseDouble(num1) - Double.parseDouble(num2))));
break;
case '*':
if (isInteger(num1) && isInteger(num2))
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Integer.parseInt(num1) * Integer.parseInt(num2))));
else
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Double.parseDouble(num1) * Double.parseDouble(num2))));
break;
case '/':
if (isInteger(num1) && isInteger(num2))
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Integer.parseInt(num1) / Integer.parseInt(num2))));
else
System.out.println("计算结果为: " + num1 + operator + num2 +
" = " + ((Double.parseDouble(num1) / Double.parseDouble(num2))));
break;
}
// 判断是否结束计算
while (true) {
System.out.println("是否继续运算:1.是 2.否");
String goOn = input.next();
if (Objects.equals(goOn, "1")) {
break;
} else if (Objects.equals(goOn, "2")) {
System.out.println("程序即将退出,感谢使用...");
return;
} else
System.out.println("输入不合法,请重新输入!");
}
}
}
}