数组是一种用于存储固定大小的相同类型元素的线性数据结构。
格式:
数据类型[] 数组名; // 方括号在类型后
示例:
int[] numbers; // 定义一个整型数组
String[] names; // 定义一个字符串数组
double[] scores; // 定义一个双精度浮点数组
静态初始化就是声明时直接初始化
格式:
// 完整格式
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, ...};
// 简化格式
数据类型[] 数组名 = {元素1, 元素2, ...};
示例:
int[] arr1 = new int[]{2,5,8};
int[] arr2 = {2,5,8};
动态初始化就是先声明,后分配空间和初始化
格式:
数据类型[] 数组名 = new 数据类型[长度];
示例:
int[] arr3 = new int[3]
访问的是数组中的元素
int[] arr = new int[3];
System.out.println("数组的长度:"+arr.length); //3,长度即元素个数
int[] arr = new int[3];
System.out.println("数组的长度:"+arr.length); //3,长度即元素个数
System.out.println("数组第1个元素的值为:"+arr[0]); //0
arr[0] = 100; //给第1个元素赋值为100
arr[1] = 200; //给第2个元素赋值为200
arr[2] = 300; //给第3个元素赋值为300
//arr[3] = 400; //运行时会发生数组下标越界异常
System.out.println(arr[2]); //300,输出最后一个元素的值
System.out.println(arr[arr.length-1]); //300,输出最后一个元素的值
数组遍历是访问数组中每个元素的过程
for(int i = 0; i < array.length; i++) {
// 访问array[i]
System.out.println(array[i]);
}
int[] source = {1, 2, 3, 4, 5};
int[] dest = new int[source.length];
for(int i = 0; i < source.length; i++) {
dest[i] = source[i];
}
int[] source = {1, 2, 3, 4, 5};
int[] dest = new int[source.length];
System.arraycopy(source, 0, dest, 0, source.length);
int[] a = {10,20,30,40,50};
//a:源数组
//b:目标数组
//6:目标数组的长度
// --若目标数组长度>源数组长度,则末尾补默认值
// --若目标数组长度<源数组长度,则将末尾的截掉
int[] b = Arrays.copyOf(a,6);
for(int i=0;i
每种编程语言中都有方法的概念,也称为:函数、过程
作用:用于封装一段特定的业务逻辑功能
建议:方法应该尽可能独立,一个方法只干一件事
方法可以被反复多次使用
好处:可以减少代码重复,有利于代码维护
何时用:只要是一个独立的业务功能,就可以封装到一个方法中
定义方法的五要素:
访问修饰符、返回值类型、方法名、参数列表、方法体
格式:
[访问修饰符] [static] 返回类型 方法名([参数列表]) {
// 方法体
[return 返回值;]
}
补充:
形参:形式参数,定义方法时的参数为形参
实参:实际参数,调用方法时的参数为实参
参数:
//无参无返回值
public static void say(){
System.out.println("大家好,我叫WKJ,今年40岁了");
}
//有参无返回值
public static void sayHi(String name){ //-------------------------形参
System.out.println("大家好,我叫"+name+",今年40岁了");
}
//有参无返回值
public static void sayHello(String name,int age){ //--------------形参
System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
}
返回值:
//生成一个整型数组,填充随机数据并返回
public static int[] generateArray(int len,int max){
Random rand = new Random();
int[] arr = new int[len];
for(int i=0;i
无返回值:方法名(有参传参)
public static void main(String[] args) {
// 调用方法:直接写方法名+()
sayHello(); // 输出:你好!
}
public static void sayHello() {
System.out.println("你好!");
}
有返回值:数据类型 变量 = 方法名(有参传参);
public static void main(String[] args) {
// 调用时传入实际参数
int result = add(5, 3);
System.out.println("5+3=" + result); // 输出:5+3=8
}
public static int add(int a, int b) {
return a + b;
}
return 值
2)返回结果给调用方------------用在有返回值的方法中
/ 定义一个加法方法
public static int add(int a, int b) {
int sum = a + b;
return sum; // 返回计算结果
}
// 调用
int result = add(3, 5); // result得到返回值8
return
结束方法的执行------------------用在无返回值的方法中
public static void checkAge(int age) {
if(age < 0) {
System.out.println("年龄无效");
return; // 提前结束方法
}
System.out.println("你的年龄是:" + age);
}
方法重载(Overload)是指:在同一个类中,允许存在多个同名方法,只要它们的参数列表不同。
方法重载的3个要点:
编译器在编译时会根据方法的签名自动绑定方法
(方法的签名:方法名+参数列表)
public static void main(String[] args) {
say(); //自动绑定无参say
say("zhangsan"); //自动绑定String参的say
say("lisi",25); //自动绑定String+int参的say
//say(3.456); //编译错误,没有double参的say
}
//无参无返回值
public static void say(){
System.out.println("大家好,我叫WKJ,今年39岁了");
}
//有参无返回值
public static void say(String name){ //-----------------形参
System.out.println("大家好,我叫"+name+",今年39岁了");
}
//有参无返回值
public static void say(String name,int age){ //------形参
if(age>=50){ //在某种特定条件下,提前结束方法
return; //结束方法的执行
}
System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
}
public static void say(int age) {} //正确的重载
public static void say(int age,String name){} //正确的重载
//public static int say(){ return 1; } //编译错误,重载与返回值类型无关
//public static void say(String address) { } //编译错误,重载与参数名称无关
基本用法:
double random = Math.random(); // 生成[0.0, 1.0)之间的随机数
生成指定范围随机整数:
int min = 0; //设定最小值
int max = 100; //设定最大值
int num = min + (int) (Math.random() * (max - min+ 1)) //生成[0,100]之间的随机整数
用法类似于Scanner
import java.util.Random;
Random rand = new Random(); // 创建Random对象
int min = 0; //设定最小值
int max = 100; //设定最大值
int num = min + rand.nextInt(max - min + 1) //生成[0,100]之间的随机整数
Debug调试是查找和修复代码错误的关键技能
IDEA调试指南:
byte,short,int,long,char----------0
float,double-------------------------0.0
boolean------------------------------false