Java基础整理02
Exercise
Test02
方法
方法的定义和调用
修饰符 返回值类型 方法名称(参数列表){
程序语句;
return表达式;//普通方法如果有返回值的话必须有return,return也可以用来终止方法。如果没有返回值,返回值类型则写成void
}
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
规则:①方法名必须相同
②参数列表必须不同(个数、类型、参数排列顺序不同等)
③方法的返回值类型可以相同也可以不同
重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写多个函数名或方法名的重复步骤。
命令行传参(拓展)
package com.weibo02.exercise;
public class Test3 {
public static void main(String[] args) {
for (int i = 0;i < args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}
}
编译:javac
运行:java(直接运行class文件需要找到其包的路径,执行并传参)

可变参数(了解)
在方法声明中,在指定参数类型后加一个省略号(...)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class Test4 {
public static void main(String[] args) {
Test4 test4 = new Test4();
test4.test(1,2,3,4,5,6);
}
public void test(int x,int ...i){
System.out.println(i[0]);
}
}

递归(掌握思想,尽量避免使用)
结构:递归头(什么时候不调用自身方法。没有头会陷入死循环)
递归体:什么时候需要调用自身方法
案例:5的阶乘
public class Test5 {
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if (n == 1){
return 1;
}else {
return n*f(n-1);
}
}
}
数组
数组的声明和创建
数组类型 数组名[] = new 数据类型[长度]
//声明一个元素个数为10的整型数组score,同时开辟一块内存空间供其使用
int[] score = new int[10];


三种初始化
int[] arrays = {1,2,3,4}; //静态初始化
int[] b = new int [10]; //动态初始化
b[0] = 10; //给第一个元素赋值,未被赋值的默认是0即默认初始化
int类型默认值是0,布尔类型默认值是false,字符串默认值是null
数组下标越界的话会出现异常:ArrayIndexOutOfBoundsException
数组的使用
普通的For循环
For-Each循环
数组作方法入参
数组作为返回值
eg.没有下标的循环遍历(增强型for循环)
for(int array:arrays){ //把arrays赋值给array(arrays是上一步声明创建的数组)
System.out.println(array);
}
eg.反转数组
public class ArrayDemo1 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
int[] reverse = reverse(arrays);
printArray(reverse);
}
public static void printArray(int[] arrays){ //打印数组元素
for (int i = 0;i < arrays.length;i++){
System.out.print(arrays[i]+" ");
}
}
public static int[] reverse(int[] arrays){ //反转数组
int[] result = new int[arrays.length];
for (int i = 0,j = result.length-1;i < arrays.length;i++,j--){
result[j] = arrays[i];
}
return result;
}
}

二维数组
int [][]a = new int[2][5];
Arrays类(自行查找jdk帮助文档)
Arrays类都是static修饰的静态方法,可以直接通过类名调用
常见功能:
给数组赋值:通过fill方法
对数组排序:通过sort方法,升序
比较数组:通过equals方法比较数组中元素值是否相等
查找数组元素:通过binarySearch方法能对排好序的数组进行二分查找
package com.weibo02.exercise;
import java.util.Arrays; //idea可以自动导包
public class ArrayDemo2 {
public static void main(String[] args) {
int [] a = {12,1,56,89,45,58,122};
System.out.println(a); //直接打印a是hashcold
System.out.println(Arrays.toString(a)); //toString是把数组以字符串形式表现出来
Arrays.sort(a); //排序(升序)
System.out.println(Arrays.toString(a));
Arrays.fill(a,2,4,0); //左闭右开区间:[2,4)被填充为0
System.out.println(Arrays.toString(a));
}
}

★冒泡排序
比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换他们的位置。
每一次比较都会产生一个最大或最小的数字。
下一轮比较则少一次排序。
依次循环直到结束
时间复杂度O(n^2)
package com.weibo02.exercise;
import java.util.Arrays;
public class ArrayDemo3 {
public static void main(String[] args) {
int[]a = {2,6,7,8,9,4,5,45,85,12};
int[] rank = rank(a); //调用完自己写的方法后,返回一个排序后的数组
System.out.println(Arrays.toString(rank));
}
public static int[] rank(int[] array){
int temp;
//外层循环,判断比较次数
for (int i = 0;i < array.length-1;i++){
boolean flag = false; //通过flag标识位减少没有意义的比较
//内层循环:比较两个数并交换
for (int j = 0;j < array.length-1;j++){
if (array[j+1] > array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if (flag == false){
break;
}
}
return array;
}
}

运用Debug自行调试加深理解
本文来自博客园,by:{rubp},转载请注明原文链接:https://www.cnblogs.com/RRubp/p/16837262.html
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术