方法:
主方法
public static void main(String[] args){}
修饰符 + 返回值类型 + 方法名 + (方法参数) + {方法体}
访问修饰词: public static
返回值的类型: void /char/int/boolean/String/int[]
方法名: main / 随意 -> 可读性好
方法的参数(临时变量):
1. 类型 + 变量名
2.可以放引用数据类型和基本数据类型
3.参数可以不放,可以有多个,类型不限
{}: 方法体
方法的使用:
1)有返回值的方法,必须使用return返回
2)return表示方法结束,没有返回值类型的也可以使用return
方法参数:
基本数据类型作为参数: 值传递
引用数据类型作为参数: 传递的是引用 - 地址值
猜字母游戏
随机5个字母: qwert
用户猜字母: awecb
比较: 字母正确个数:2 位置正确:2
常用API - 都是类
Scanner
nextInt()
nextDouble()
next(): 获取字符串,遇到空格或者回车结束
nextLine():获取一行字符串,遇到回车结束
System
print(): 打印,不换行
println() 换行打印
Math
Math.random(): 获得[0,1)的随机值
Math.pow(double d1, double d2): 获得d1 的d2次幂
String
str.charAt(index); 获得index索引对应的字符
Arrays
Arrays.toString():读取数组
Arrays.sort():数组的排序
数组的排序
选择排序: 每一轮都会选出一个最大的,放在最后面
冒泡排序: 每一轮都比较相邻的两个元素,小的放前面,大的放后面
插入排序: 把数组分成两部分, 前一部分已经排好的, 另一部分挨个访问,把访问到的元素插入到前一部分的合适的位置
1234 8590
冒泡排序原理分析:
数组:[9, 7, 3, 6, 1] length = 5
i: int i = 0; i < length - 1; i++
j: int j = 0; j < length - 1 - i; j++
第一轮: i = 0 arr[j] > arr[j+1]
7, 9, 3, 6, 1 j = 0 arr[0] arr[1] 交换
7, 3, 9, 6, 1 j = 1 arr[1] arr[2]
7, 3, 6, 9, 1 j = 2 arr[2] arr[3]
7, 3, 6, 1, 9 j = 3 arr[3] arr[4]
第二轮: i = 1
3, 7, 6, 1, 9 j = 0
3, 6, 7, 1, 9 j = 1
3, 6, 1, 7, 9 j = 2
第三轮: i = 2
3, 6, 1, 7, 9 j = 0
3, 1, 6, 7, 9 j = 1
第四轮: i = 3
1, 3, 6, 7, 9 j = 0
选择排序: 每一轮都会选出一个最大的,放在最后面
数组:[9, 7, 3, 6, 1] length = 5
第一轮: 1, 7, 3, 6, 9
int index = 0;
1: 比较 arr[1] 和 arr[index] ,记录下标最大值 index = 0
2: 比较 arr[2] 和 arr[index],如果arr[2]大进行替换,记录下标最大值 index = 0
3: 比较 arr[3] 和 arr[index],如果arr[3]大进行替换,记录下标最大值 index = 0
4: 比较 arr[4] 和 arr[index],如果arr[4]大进行替换,记录下标最大值 index = 0
index 和当前最后一位(length - 1)进行交换
i:0
j: 1 ~ 4
第二轮: 1, 6, 3, 7, 9
1: 比较arr[0] 和 arr[1] ,记录下标最大值 index = 1
2: 比较 arr[2] 和 arr[index],如果arr[2]大进行替换,记录下标最大值 index = 1
3: 比较 arr[3] 和 arr[index],如果arr[3]大进行替换,记录下标最大值 index = 1
index 和 当前最后一位(length -1 -1)进行交换
i: 1
j: 1 ~ 3
第三轮: 1, 3, 6, 7, 9
1: 比较arr[0] 和 arr[1] ,记录下标最大值 index = 1
2: 比较 arr[2] 和 arr[index],如果arr[2]大进行替换,记录下标最大值 index = 1
index 和 当前最后一位(length -1 -2) 进行交换
i: 2
j: 1 ~ 2
第四轮: 1, 3, 6, 7, 9
1: 比较arr[0] 和 arr[1] ,记录下标最大值 index = 1
index 和 当前最后一位(length -1 -3)进行交换
i: 3
j: 1
i: int i = 0; i < legth - 1; i++
j: int j = 1; j < length - i; j++
当前最后一位:length - 1 -i
eg1:
package day04.method;
/*
-
方法的定义/声明, 方法的调用/使用
*/
public class Method01Demo {
public static void main(String[] args) {
洗衣服();String 饭 = 做饭(); System.out.println(饭); String 工具 = "棍子"; 打架(工具);
}
/*
- 方式一:
/
public static void 洗衣服() {
System.out.println(“把脏衣服丢洗衣机”);
System.out.println(“关上洗衣机”);
System.out.println(“放洗衣液”);
System.out.println(“开始洗衣服”);
System.out.println(“旋转”);
System.out.println(“脱水”);
System.out.println(“晾衣服”);
//return;//标记方法结束,并返回
}
/ - 方式二:
- 返回值: 方法调用者可以得到的结果
*/
public static String 做饭() {
System.out.println(“买菜”);
System.out.println(“洗菜”);
System.out.println(“切菜”);
System.out.println(“煮菜”);
System.out.println(“放调料”);
System.out.println(“做好了”);
return “蛋炒饭”;//返回结果
}
/*
- 带参数
*/
public static void 打架(String 工具) {
System.out.println(“吵一架”);
System.out.println(“抄起” + 工具);
System.out.println(“打完了”);
System.out.println(“不打了”);
}
/*
- 计算两个整数的和,并返回
*/
- 方式一:
}
eg2:
package day04.method;
import java.util.Arrays;
/*
-
计算两个整数的和,并返回
*/
public class Mathod02Demo {
public static void main(String[] args) {
int a = 4;
int b = 6;
int sum1 = sum(a, b);
System.out.println(sum1);char[] aa = {'q','w','e','r'}; char[] bb = {'a','s','d','f'}; method(aa,bb); System.out.println(Arrays.toString(aa)); System.out.println(Arrays.toString(bb));
}
/*- 基本数据类型作为方法参数
*/
public static int sum(int a, int b) {
a++;
int sum = a + b;
return sum;
}
/*
- 数组作为方法参数
*/
public static void method(char[] a, char[] b) {
a[0] = ‘p’;
b[3] = ‘k’;
}
} - 基本数据类型作为方法参数
eg3:
package day04.api;
/*
-
System类
*/
public class Demo01System {
public static void main(String[] args) {
// 换行打印 - 可以不用输入
System.out.println();
// 打印 - 不换行 - 一定要放参数
System.out.print("/r");/* * 转义字符: * /n - 回车 /r - 换行 /t // * /n/r */
}
}
eg4:
package day04.api;
/*
-
Math类 - 数学类
*/
public class Demo02Math {
public static void main(String[] args) {
// Math.random() 范围: [0,1)
double random = Math.random();
System.out.println(random);//[0,20) random = Math.random() * 20; System.out.println(random); //整数[0,65) int random1 = (int)(Math.random() * 65); System.out.println(random1); //整数[65,90] //A = 65 Z = 90 ASCII码 random1 = (int)(Math.random() * 26 + 65); System.out.println(random1); //A = 65 Z = 90 ASCII码 //a = 97 char c = (char)(Math.random() * 26 + 65); char c1 = (char)(Math.random() * 26 + 'a'); System.out.println(c); System.out.println(c1); //计算 一个的几次方 //Math.pow(double底数, double指数) int d = (int)Math.pow(2, 10); System.out.println(d);
}
}
eg5:
package day04.api;
import java.util.Arrays;
/*
-
String类 - 字符串类
*/
public class Demo03String {
public static void main(String[] args) {
String str = “qwert”;//获取字符串中的单个字符 char c = str.charAt(1); System.out.println(c); char[] arr = new char[5]; for(int i = 0; i < arr.length; i++) { arr[i]= str.charAt(i); } System.out.println(Arrays.toString(arr));
}
}
eg6:
package day04.game;
import java.util.Arrays;
import java.util.Scanner;
/*
-
1.随机生成5个字母 -> 字符数组
-
2.用户猜字母 -> 控制台猜 -> 字符数组
-
3.两个字符数组比较 , 字母正确个数,位置正确个数
-
4.用户猜不对,重复 2 和 3
*/
public class GuessGame01Demo {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
//1.随机生成5个字母
char[] charArr = randomChars();
System.out.println(Arrays.toString(charArr));
//4.用户猜不对,重复 2 和 3
while(true) {
//2.用户猜字母
System.out.println(“请输入:”);
String str = console.next();
char[] guess = parseChars(str);
//3. 比较 charArr 和 guess 字符数组
int[] res = compare(charArr,guess);
System.out.print(“字母正确个数:” + res[0]);
System.out.println(“位置正确个数:” + res[1]);
//5.全猜对
if(res[1] == 5) {
System.out.println(“全对了!”);
break;
}
}}
/*
- 目的: 比较两个字符数组
*/
public static int[] compare(char[] answer, char[] guess) {
// result[0]表示 字母正确 result[1]表示 位置正确
int[] result = new int[2];
for(int i = 0; i < answer.length; i++) {
for(int j = 0; j < guess.length; j++) {
//判断字母正确个数
if(answer[i] == guess[j]) {
//如果字母正确 + 1
result[0]++;
//判断位置正确个数
if(i == j) {
//如果位置正确 + 1
result[1]++;
}
}
}
}
return result;
}
/*
- 目的: 为了把字符串转换成字符数组
*/
public static char[] parseChars(String str) {
char[] charArr = new char[5];
for(int i = 0; i < charArr.length; i++) {
charArr[i]= str.charAt(i);
}
return charArr;
}
/*
- 目的: 为了得到长度为5的随机字符数组
*/
public static char[] randomChars() {
char[] chars = new char[5];
for(int i = 0; i < chars.length; i++) {
chars[i] = (char)(Math.random() * 26 + ‘A’);
for(int j = 0; j < i; j++) {
//判断 i位置上的字符 和 i位置之前的所有字符相比较
if(chars[j] == chars[i]) {
i–;//回到原来位置上重新随机生成字符
break;//如果相同,就结束
}
}
}
return chars;
}
- 目的: 比较两个字符数组
}
eg7:
package day04.sort;
import java.util.Arrays;
/*
-
冒泡排序
*/
public class sort1 {
public static void main(String[] args) {
int[] arr = {9, 7, 3, 6, 1};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}public static void bubbleSort(int[] arr) {
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
//交换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
eg8:
package day04.sort;
import java.util.Arrays;
/*
-
选择排序
*/
public class sort2 {public static void main(String[] args) {
int[] arr = {9,7,3,6,1};
selectSort(arr);
System.out.println(Arrays.toString(arr));}
public static void selectSort(int[] arr) {
for(int i = 0; i < arr.length - 1; i++) {
int index = 0;//标记下标最大值
for(int j = 1; j < arr.length - i; j++) {
if(arr[j] > arr[index]) {
index = j;
}
//index 和 最后一个位置进行交换
int temp = arr[index];
arr[index] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
}
}