复习
顺序
条件分支
if
if - else
if - else if - else
switch/case -> 判断变量是否相等
循环
for(初始值;循环条件;步长){循环体}
知道次数,有规律可循
while(循环条件){循环}
do - while(循环条件)
不知道次数,无规律可循
JVM内存空间:
方法区:类相关信息
栈:局部变量/临时变量
堆:引用类型的真正数据,对象
类加载:将字节码(class文件)中的类相关信息读取到JVM的方法区中
方法
各种语言都有方法的概念(有的语言称其为函数或过程);
方法用于封装一段特定的逻辑功能,如:执行计算或操作;
方法可以在程序中反复被调用;可以减少代码重复,便于程序的维护。
⽅法的定义和调⽤
public class Method_Demo1 {
public static void main(String[] args) {
print();
}
private static void print() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 8; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
定义⽅法的格式
修饰符 返回值类型 ⽅法名(参数列表) {
// 代码省略...
return 结果;
}
修饰符 + 返回值类型 + 方法名 + 方法参数 + 方法体
修饰符:public static
返回值类型:
void: 没有返回值
基本数据类型: 8种
引用数据类型: 数组 -> int[] char[]
方法名:随意
方法参数:
String[] args -> 类型 + 引用名
int a -> 类型 + 变量
方法参数可以有多个,使用 ',' 隔开
方法的返回值:
有返回值类型的方法,必须添加return返回值,没有返回值类型的方法也可以使用return,return表示方法结束.
方法名的命名规则:
1.首字母小写,第二个单词首字母大写 -> 驼峰命名法
2.可读性要好
调⽤⽅法的流程图解
猜字母游戏
游戏需求:
随机生成5个不同的大写字母 AFCHE
用户猜字母 ABDCE
提示: 3个字母正确,其中位置正确的有2个
步骤:
1.随机生成5个不同字符 -> 字符数组
2.控制台输入 -> Stirng -> 拆解 -> 字符数组
3.两个字符数组相对比
4.如果不相等,重复2和3
import java.util.Scanner;
import java.util.Arrays;
public class d3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] letter=new char[5];
System.arraycopy(spawn(),0,letter,0,5);
System.out.println(Arrays.toString(letter));
while(true) {
String str = sc.nextLine();
int[] result=compare(change(str),letter);
System.out.println("字符相同:"+result[0]);
System.out.println("位置相同:"+result[1]);
if(result[1]==5) {
System.out.println("结束");
break;
}
}
}
public static char[] spawn() {
char[] arr =new char[5];
int[] arr1 = new int[5];
for(int i=0;i<arr1.length;i++) {
arr1[i] = (int)(Math.random()*26);
for(int j=0;j<i;j++) {
if(arr1[i]==arr1[j]) {
i--;
break;
}
}
}
for(int i=0;i<arr.length;i++) {
arr[i]=(char) ('A'+arr1[i]);
}
return arr;
}
public static char[] change(String str) {
char[] arr=new char[5];
for(int i=0;i<arr.length;i++) {
arr[i] = str.charAt(i);
}
return arr;
}
public static int[] compare(char[] reply,char[] truth) {
int n=0,m=0;
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
if(reply[i]==truth[j]) {
n++;
if(i==j) {m++;}
}
}
}
int[] arr= {n,m};
return arr;
}
}
常用类:
1)Scanner
int nextInt():获取控制台内容,并且转换成int值返回
double nextDouble(): 获取控制台内容,并且转换成double返回
String next(): 获取控制台字符串, 并返回(遇到回车或者空格读取结束)
String nextLine(): 获取控制台一整行字符串,并返回(遇到回车结束)
2)System
print(内容) -> 打印,不换行
println(空/内容) -> 打印完,换行
3)Math
double random(): 返回一个[0,1)随机数
double pow(double d1,double d2): 返回 d1 的 d2 次幂
4)String
char charAt(int index): 返回index索引位置对应的字符
5)Arrays:
String toString(数组): 将数组变成字符串格式返回
6)常见转义字符
\n:回车
\r:换行
\t:制表符
\\:\本身