Java语言基础学习笔记(五)

这篇博客主要探讨了Java语言中的数组高级特性,包括方法参数的值传递机制,特别是引用数据类型的传递,多维数组的创建和操作,Java 5对数组的支持如增强for循环和可变参数。此外,还讲解了数组相关的算法,如数组拷贝、冒泡排序、选择排序、二分搜索等,并介绍了如何封装和使用数组操作工具类。
摘要由CSDN通过智能技术生成

一、语言基础---5.数组高级

(一)方法参数的值传递机制

097、main方法的数组参数

public class Hello 
{
	/*
	main方法是static修饰的,说明直接使用类名Hello类调用即可
	在底层是JVM通过Hello.main(new String[]{});
	main方法的String数组参数,其实是暴露给程序运行者的,用于给程序传递一个数据信息。
	*/
	public static void main(String[] args) //参数:参数类型String[]   参数名称args
	{
		System.out.println(args.length);
		for (int index = 0; index < args.length ; index ++ )
		{
			System.out.println(args[index]);
		}
	}
}

用法: java [-options(执行类)] class [args...]

 

098、参数的值传递机制-基本数据类型

在栈里面(不需要垃圾回收器),方法调用完毕后就栈帧销毁了,所以调用完change()方法后,change方法的栈帧就移出栈了,main方法的栈帧就到了栈的顶部,继续执行

//参数的值传递机制-基本数据类型
class ParameterDemo 
{
	public static void main(String[] args) 
	{
		int x = 10;
		System.out.println("main方法前,x:" + x); //10
		change(x); //改变x变量
		System.out.println("main方法后,x:" + x); //10
	}
	static void change(int x) //修改变量方法
	{
		System.out.println("change方法前,x:" + x); //10
		x = 50;
		System.out.println("change方法后,x:" + x); //50
	}
}

099、参数的值传递机制-引用数据类型

//参数的值传递机制-引用数据类型
class ParameterDemo1 
{
	public static void main(String[] args) 
	{
		int[] arr = new int[]{10,99};
		printArray(arr); //[10,99]
		swap(arr); //交换第一个和最后一个元素的值
		printArray(arr);
	}
	static void swap(int[] arr)
	{
		int temp = arr[0]; //把第一个元素赋值给temp
		arr[0] = arr[arr.length - 1]; // 把最后一个元素赋值给第一个元素位置
		arr[arr.length - 1] = temp;
	}
	//打印数组的方法
	static void printArray(int[] arr) //String[] arr = null;
	{
		if (arr == null)
		{
			System.out.println("null");
			return; //结束方法
		}
		String ret = "[";
		for (int index = 0; index < arr.length ; index ++ )
		{
			ret = ret + arr[index];
			if (index != arr.length - 1) //如果当前index不是最后一个索引,则拼接“,”
			{
				ret = ret + ",";
			}
		}
		ret = ret +"]";
		System.out.println(ret);
	}
}

(二)多维数组

100、数组中的数组-多维数组

数组的语法:数组元素类型[] 数组名

一维数组:数组中的每一个元素都是一个值(基本类型和引用类型的值)

二维数组:数组中的每一个元素又是一个一维数组

三维数组:数组中的每一个元素又是一个二维数组

严格上说,在java中不存在多维数组的概念,和C语言做区分,一般称之为数组中的数组

int[] arr1 = {1,2,3};
int[] arr2 = {4,5};
int[] arr3 = {6};
//把上述的每一个数组都作为一个元素,那么此时元素的类型为int[]
int[][] arr = new int[][] {arr1,arr2,arr3}; //二维数组    int[][] arr = new int[][] {
  {1,2,3},{4,5},{6}};

101、多维数组的操作

二维数组的初始化操作:

静态初始化: int[][] arr = new int[][] { {1,2,3},{4,5},{6}};

动态初始化:int[][] arr = new int[3][5]; 创建一个长度为3的二维数组,每一个元素(一维数组)的长度为5

class ArrayInArrayDemo 
{
	public static void main(String[] args) 
	{
		int[][] arr = new int[][] {
			{1,2,3},
			{4,5},
			{6}
			};
		System.out.println(arr.length); //3
		for (int i = 0; i < arr.length ; i ++ )
		{
			System.out.println(arr[i]); //打
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值