JAVA基础06

JAVA基础06

方法

使用方法的目的 : 将方法中的功能可以随时抽出来,方便多次使用,避免写代码时的重复性 .

方法的格式 : 修饰符 返回值 方法名 (参数列表) {

​ 方法体 ;

}

修饰符 : public stiatic

返回值类型 : 分有返回值和无返回值 ; 有返回值时 , 可以是任意基本数据类型 , 包括引用. 无返回值 :void

方法名 : 以小驼峰法命名 , 做到见名知意即可 .

参数列表 : 格式 : 数据类型 变量名 ; 可以有一个 , 也可以有多个(多个参数之间用 , 隔开) , 也可以没有

方法体 : 表示要实现的功能

注意: 方法与方法之间是平级关系 , 不能嵌套定义

​ 有返回值时要用return返回参数列表中设置的所对应的数据类型

​ 方法不调用时不会执行

​ 方法可以在main方法中调用 , 也可以在其他方法中调用

​ 无返回值调用方法(静态)时 , 可直接使用方法名调用 , 在括号中传入对应的参数即可 . 有返回值要调用该方法时,要创建一个与返回值类型相同的变量来接受该返回值 . 并在括号中传入对应的参数 .

import java.util.Scanner;
//方法的调用
public class Demo1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数字");
		int n = sc.nextInt();
		getSum(n);
		get2(100, 200, 300);
		int sum = get3(1, 2, 3);
		System.out.println(sum > 1 ? 10 : sum);
	}
	public static void getSum(int n) { // 单参数无返回值的方法
		int sum = 0;
		for (int i = 1; i <= n; i++) {
			sum += i;
		}
		System.out.println(sum);
		get1(); //在一个方法中调用另一个方法
	}
	public static void get1() {
		System.out.println("你好明天");
	}
	public static void get2(int a, int c, int b) {//多参数无返回值的方法
		int d = a + b + c;
		System.out.println(d);
	}
	public static int get3(int a, int b, int c) { //多参数有返回值的方法
		int d = a + b + c;
		System.out.println(d);
		return d;
	}
}

方法的重载

定义 : 在一个类中可以出现多个方法名相同 , 但必须保证参数个数及参数类型不同的方法 . 与返回值及方法名无关 .

好处:不需要定义过多的方法名 , 可根据带入的参数个数及参数类型来判断 .

//方法的重载
public class Demo2 {
	public static void main(String[] args) {
		test(12.4, 12.1);
		test(4);
	}

public static void test(double a, double b) {
	double c = a - b;
	System.out.println(c);

}

public static void test(double r) {
	double b;
	double a;
	a = 2 * r * 3.14;
	b = r * r * 3.14;
	System.out.println("圆的周长:" + a + ",圆的面积:" + b);
}

public static void test1(double a, int b) {

}

public static void test1(int a, double b) {

}// 不同数据类型做参数时,放入的位置不同,是方法的重载, ******

public static void test2(int a, int b) {

}

public static void test2(int b, int a) {

}// 相同数据类型做参数,变量名不同,不是方法的重载    *******

}

数组

定义:用来储存一组相同数据类型的集合 , 可以是引用数据类型String

注意 : 数组中的元素必须保持统一 .

​ 数组本身是引用数据类型 , 但是里面的元素本身即可以是基本数据类型, 也可以是引用数据类型 .

​ 数组的长度一旦给定就无法改变

声明格式 : 数据类型[] 数组名 ;

​ 数据类型 数组名[];

备注 : main方法中只有两个地方可以变动 . 一个是中括号[]的位置可以变动 , 另一个是args 可以变动

数组的初始化 :

动态初始化:给定数组的长度 , 由系统分配空间和初始化值 , 初始化值即每个数据类型所对应的默认值

格式: 数据类型[] 数组名 = new 数据类型[数组长度];

数组的索引值 : 表示数组中每个元素对应的序号 , 从0-数组长度-1 .

数组的赋值和取值 : 赋值 : 数组名[索引值] = 要赋的值;

​ 取值 : 数组名[索引值] ;

静态初始化 : 给定数组中的元素 , 由系统分配长度并赋值 .

格式 : 数据类型[] 数组名 = new 数据类型[]{1,2,3};

简写 : 数据类型[] 数组名 = {1,2,3} ;

注意 : 简写形式 ,只有在定义第一次数组的时候才能使用 . 重写赋值的适合不能简写 .

​ 不能在定义数组的时候又给定长度 , 又给定值 .

动态数组的赋值与取值:

String[] arr7=new String[4];
	arr7[0]="春天";
	arr7[1]="夏天";
	arr7[2]="秋天";
	arr7[3]="冬天";
	System.out.println(arr7[0]);
	System.out.println(arr7[1]);
	System.out.println(arr7[2]);
	System.out.println(arr7[3]);

数组长度的获取 : 数组名.length

数组的内存分析 :

栈 : 局部变量和方法的执行区 , 没有初始值 , 方法执行完毕后消失 , 局部变量也会跟着消失 .

堆 : new 出来的东西 , 有初始值 , 堆内存空间很大 , 每new一下就会开辟一块空间 , 栈内存空间很小 , 所有用完后就会消失 .

在堆内存中的初始值 : 基本数据类型就是他们的默认值 , 引用数量类型是null

注意 : 如果堆内存中new的那片空间没有变量指向它时,就会变成垃圾,会在一定时机内被gc自动回收

数组常见的异常:

1 . 空指针异常 : 产生原因为,使用null调用堆内存中的内容 , 要注意的是 , 如果一个变量的赋值为null , 直接打印那个变量整体是不会报错的 , 会打印出null , 但调用该数组中的的某一个值时 , 会报空指针异常 .

int[] arr = null ; //不会报错但不会在堆内存中开辟一块空间 .

syso (arr) ; // 打印结果为null

syso (arr[0]) ; //报空指针异常

空数组 : int [] arr ={} ; //直接打印数组名 ,为地址值

数组为null : int[] arr = null ; //直接打印数组名,为null

2.数组脚表越界 :产生原因为,调用数组时,填入的数组的索引值,超出了它本身索引值的最大范围 .

数组的案例

****重要案例 ******:



- ```
  /*把一个数组赋值给另一个数组,会将它的地址值赋值过去,
  • 如 : arr2=arr1会将arr2的地址值也变成arr1的地址值
  • 即arr1和arr2的地址值一致,且共享arr1内存区的数组
  • arr2原始内存区的数组就被抛弃了,会在一定时间被gc回收
    */
    public class Demo4 {
    public static void main(String[] args) {
    int[] arr1=new int[3];
    arr1[0]=10;
    System.out.println(arr1[0]); //10
    int[] arr2=new int[4];
    arr2[0] = 20;
    System.out.println(arr2[0]); //20
    arr2=arr1;
    System.out.println(arr2[0]); //20
    System.out.println(arr2[3]); //报错,因为arr2已经变成了只有3个长度的arr1
    }
    }



点名系统:

import java.util.Random;
//点名系统
public class Demo5 {
public static void main(String[] args) {
String[] arr = new String[] { “a”, “b”, “c”, “d”, “e”, “f” };
Random r = new Random(); //调随机数
int i = r.nextInt(arr.length - 1); //将随机数赋值给i
System.out.println(arr[i]);
}
}





 数组的遍历:

//将一个数组由中括号加逗号的形式打印出来,并封装成方法
public class ArrayUtil {
String[] arr = new String[] { “hello”, “world”, “hello”, “china” };
public static void arrpaixu(int arr[]) {
for (int i = 0; i < arr.length; i++) {
// 对一个元素的数组做单独处理
if (arr.length == 1) {
System.out.println("[" + arr[0] + “]”);
}
// 2. 如果是第一个元素:打印 [元素,
else if (i == 0) {
System.out.print("[" + arr[i] + “,”);// 注意不换行
} else if (i == arr.length - 1) {
// 3. 最后一个元素: 元素]
System.out.println(arr[i] + “]”);// 可以换行
} else {
// 4.其余元素: 元素,
System.out.print(arr[i] + “,”);// 不换行
}
}

}
}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值