Java开发入门-数组和方法以及补充

标题目录

  • 数组
    • 数组的定义
    • 数组的初始化
      • 静态初始化
      • 动态初始化
    • 数组的访问
    • 数组的遍历 / 迭代
    • 数组的复制
      • 使用循环手动复制(最基础)
      • 使用System.arraycopy()(高效推荐)
      • 使用Arrays.copyOf()
  • 方法
    • 方法的意义
    • 方法的定义
    • 方法的调用
    • return
    • 方法的重载(overloading)
  • 补充
    • 随机数的生成方式
      • Math.random()方法(最基础)
      • Random类(最常用)
    • Debug调试工具
    • 默认值

数组

数组的定义

数组是一种用于存储固定大小的相同类型元素的线性数据结构。

格式:

数据类型[] 数组名;  // 方括号在类型后

示例:

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]

数组的访问

访问的是数组中的元素

  • 通过(数组名.length)可以获取数组的长度(元素个数)
int[] arr = new int[3];
System.out.println("数组的长度:"+arr.length); //3,长度即元素个数
  • 通过下标/索引来访问元素,下标从0开始,最大到(数组的长度-1)
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];
}

使用System.arraycopy()(高效推荐)

int[] source = {1, 2, 3, 4, 5};
int[] dest = new int[source.length];

System.arraycopy(source, 0, dest, 0, source.length);

使用Arrays.copyOf()

int[] a = {10,20,30,40,50};
//a:源数组
//b:目标数组
//6:目标数组的长度
// --若目标数组长度>源数组长度,则末尾补默认值
// --若目标数组长度<源数组长度,则将末尾的截掉
int[] b = Arrays.copyOf(a,6);
for(int i=0;i

方法

方法的意义

每种编程语言中都有方法的概念,也称为:函数、过程
作用:用于封装一段特定的业务逻辑功能
建议:方法应该尽可能独立,一个方法只干一件事
方法可以被反复多次使用
好处:可以减少代码重复,有利于代码维护
何时用:只要是一个独立的业务功能,就可以封装到一个方法中

方法的定义

定义方法的五要素:
访问修饰符、返回值类型、方法名、参数列表、方法体

格式:

[访问修饰符] [static] 返回类型 方法名([参数列表]) {
    // 方法体
    [return 返回值;]
}
  1. 访问修饰符:控制方法的可见性(public、private等)
  2. static:可选,表示是否为静态方法
  3. 返回类型:方法返回值的数据类型(void表示无返回值)
  4. 方法名:方法的标识符,遵循驼峰命名法
  5. 参数列表:方法接收的输入参数,可以为空
  6. 方法体:包含具体执行的代码
  7. return语句:返回方法结果(void方法可以省略)

补充:
形参:形式参数,定义方法时的参数为形参
实参:实际参数,调用方法时的参数为实参

参数:

//无参无返回值
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

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);
}

方法的重载(overloading)

方法重载(Overload)是指:在同一个类中,允许存在多个同名方法,只要它们的参数列表不同。

方法重载的3个要点:

  1. 方法名必须相同
  2. 参数列表必须不同(满足以下任意一条):
    • 参数类型不同
    • 参数个数不同
    • 参数顺序不同
  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) { } //编译错误,重载与参数名称无关

补充

随机数的生成方式

Math.random()方法(最基础)

基本用法:

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]之间的随机整数

Random类(最常用)

用法类似于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调试工具

Debug调试是查找和修复代码错误的关键技能

IDEA调试指南:

  1. 设置断点:在代码行号右侧点击(出现红点)
  2. 启动调试:Debug运行程序,程序会自动进入第1个断点处,暂停
  3. 常用快捷键:
    • F7:逐步调试(会进入到方法中)
    • F8:逐过程调试(不会进入到方法中)
    • F9:直接跳到下一个断点处,若后面没有断点了,则调试结束

默认值

byte,short,int,long,char----------0
float,double-------------------------0.0
boolean------------------------------false

你可能感兴趣的:(java,开发语言)