12、java数组(基本类型赋值规则,引用类型赋值规则)、数组扩容、数组做为函数参数、数组做返回值类型

1.数组:

1:定义方法:
数据类型[] 数组名 = new 数据类型[长度];
或者:
声明并初始化值[简]
数据类型[] 数组名 = new 数据类型[]{…};
**注意:不支持换行
或者:
换行写法:
数据类型[] 数组名;
数组名 = new 数据类型[]{值1,值2…值n};

//正确:
int [] a=new int[5];
int[] b = new int[]{1,2,3,4,5};
int[] c;
c = new int[]{1,2,3,4,5};
//错误:
int[] a = new int[4]{1,2,3,4,5};//[]和{}冲突了
int[] b;
b = new int[4]{1,2,3,4,5};//[]和{}冲突了

2.(8大)基本类型和引用类型赋值规则

基本类型的变量中存的是值,基本数据类型之间的赋值是值传递,一个变量的值的改变不会影响另外一个 变量的值。

int a = 1;
int b = a;
b++;
System.out.println(a);//1
System.out.println(b);//2

引用类型的变量中存储的是地址,引用数据类型的变量之间的赋值时地址间的传递,一个引用中值的改变会影响指向同一个地址的引用中值的改变。

int[] as = new int[2];
int[] bs = as;//将as中存储的地址赋值给a
as[0] = 100;
as[1] = 200;
System.out.println(bs[0]);//100
System.out.println(bs[1]);//200
bs[0] = 800;
bs[1] = 1000;
System.out.println(as[0]);//800
System.out.println(as[1]);//1000

3.数组的扩容

1.创建一个长度更大的数组,然后将原数组中的元素一一的赋值给新数组中的元素。

int[] a = {10,12,3,9,7};
/*解决思路:
 1申请新数组 注意:长度比原来的大
 2将原数组在中的数据依次的复制到新数组中
*/
int[] b = new int[a.length*2];
for(int i=0;i<a.length;i++){
b[i]=a[i];
}
for(int i=0;i<b.length;i++){
System.out.print(b[i]+"\t");
}
System.out.println();

2.创建一个长度更大的数组,然后利用java.lang.System中的函数arraycopy()实现
arraycopy(原数组名,原数组起始位置,新数组名,新数组起始位置,复制长度);
注意:长度必须小于原数组的长度

int[] a = {10,12,3,9,7};
/*解决思路:
1 申请新数组 注意:长度比原来的大
2 通过java.lang.System类下的函数arraycopy()
arraycopy(原数组名,原数组起始位置,新数组名,新数组的起始位置,复制长度);
*/
int[] b = new int[a.length*2];//10 12 0 0 0 00000
System.arraycopy(a,0,b,0,a.length);
a = b;//将b数组的地址复制给原数组a
//数组中包含了原数组元素,长度为原数组2倍的新数组
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();

3.利用java.util.Arrays.copyOf()实现,返回新数组
copyOf(原数组,新长度);

int[] a = {10,12,3,9,7};
/*解决思路:
java.util.Arrays类中的copyeOf()实现
copyOf(原数组,新长度);
返回值:新数组
*/
//b数组长度为a数组长度的2倍 并且包含a数组中的值
int[] b = Arrays.copyOf(a,a.length/2);
a = b;//将b数组的地址复制给原数组a
//数组中包含了原数组元素,长度为原数组2倍的新数组
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();

4.数组做为函数参数和返回值类型

1. 数组可以作为参数(数组遍历的函数)

//遍历数组的函数 数组可以作为参数传递给函数
public static void Printarr(int[] arr){
	for(int i=0;i<arr.length;i++){
	  System.out.print(arr[i]+"\t");
	}
	System.out.println();
}

2. 数组可以作为返回值(数组扩容的函数)

//数组扩容的函数 数组作为返回值返回
public static int[] expand(int[] arr){
	int[] b = new int[arr.length*2];
	for(int i=0;i<arr.length;i++){
	  b[i] = arr[i];
	}
return b;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值