文章目录
一. main方法的参数
![image][main]
二. 参数的值传递机制
- 基本数据类型
新建ParameterDemo1.java
//方法参数的值传递机制-基本数据类型
class ParameterDemo1
{
static void change(int x){
System.out.println(x);
x = 50;
System.out.println(x);
}
public static void main(String[] args)
{
int x = 10;
System.out.println(x);
change(x);
System.out.println(x);
}
}
![image][deliver]
![image][deliver1]
- 引用数据类型
新建ParameterDemo2.java
class ParameterDemo2
{
//打印
static void printArr(int[] arr){
String ret = "[";
for (int i = 0;i < arr.length ;i ++ )
{
ret +=arr[i];
if (i < arr.length -1)
{
ret += ",";
}
}
ret += "]";
System.out.println(ret);
}
//交换第一个和最后一个元素
static void swap(int[] arr){
int temp = arr[0];
arr[0] = arr[arr.length - 1];
arr[arr.length - 1] = temp;
}
public static void main(String[] args)
{
int[] arr = new int[]{10,99};
printArr(arr);
swap(arr);
printArr(arr);
}
}
三. 多维数组
- 严格来说,在Java中不存在多维数组的概念,和C语言做区分,一般称为数组中的数组。
- 一维数组:数组中的每个元素都是一个值(基本类- 型和引用类型的值)。
- 二维数组:数组中的每个元素是一个一维数组。
- 三维数组:数组中的每个元素是一个二维数组。
语法:
int[] [] arr = new int[] [] {
{1,3,5},
{3,5,1,3},
{7,23,46,76,3}
};
四. 二维数组的初始化操作
静态初始化:
int[][] arr = new int[][]{
{1,2,3},
{4,5},
{6},
};
动态初始化:
int[][] arr = new int[3][5];//创建一个长度为3的二维数组。
int[][] arr = new int[][5];//错误,没有声明长度。
一般N维数组需要N个循环遍历,一般首选for
//遍历二维数组
class ArrayInArrayDemo
{
public static void main(String[] args)
{
//定义二维数组
int[][] arr = {
{1,2,3},
{4,5,6,7},
{8,9,10}
};
//遍历二维数组长度
for (int i = 0;i < arr.length;i ++)
{
//遍历一维数组长度
for (int j = 0;j < arr[i].length;j ++)
{
System.out.println(arr[i][j]);
}
}
}
}
五. Java5对数组的支持,增强for循环
不关心索引,更关心数组元素。
for(数组元素类型 变量 : 数组名){
循环体
}
新建ForEachDemo.java
//增强for循环-foreach
class ForEachDemo
{
public static void main(String[] args)
{
int[] arr = new int[]{2,3,5,6,7,8};
for(int i : arr)
{
System.out.print(i + " ");
}
System.out.println();
//定义二维数组
int[][] arr = {
{1,2,3},
{4,5,6,7},
{8,9,10}
};
System.out.println("-----------");
//foreach遍历
for (int[] i : arr)
{
for (int ele : i)
{
System.out.println(ele);
}
}
}
}
通过反编译软件,得到编译后的字节码。
六. Java5-方法的可变参数
一个方法只能有一个可变参数,可变参数必须在后面,不能重载!
新建VarArgsDemo.java
//方法的可变参数
class VarArgsDemo
{
//求数组的和
static double getSum(double[] arr){
double sum = 0.0;
for (double i : arr )
{
sum += i;
}
return sum;
}
//求数组的和,使用java5的方法参数可变性,可变参数必须在后面
static double getCount(double cutoff,double ... arr){
double sum = 0.0;
for (double i : arr )
{
sum += i;
}
return sum * cutoff;
}
public static void main(String[] args)
{
double[] arr = new double[]{10.0,20.0,30.0};
System.out.println(getSum(arr));
System.out.println("-----------");
//System.out.println(getCount(arr));
System.out.println(getCount(10.0,20.0,30.0));
System.out.println(getCount(10.0,20.0,30.0,40.0));
}
}