海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020java教程:数组的扩容

未分类
2020-08-04 14:41:43
1822677238@qq.com

手机扫码查看

2020java教程:数组的扩容

数组的扩容

创建数组时,必须显示指定长度,并在创建之后不可更改长度
扩容的思路
创建大于原数组长度的新数组
将原数组的元素依次 复制 到新数组中

数组扩容
old 11 22 33 44 55
new 11 22 33 44 55 0 0 0 0 0

复制的方式
循环将原数组中所有元素逐一赋值给新数组
System.arraycopy(原数组,原数组起始,新数组,新数组起始,长度)
java.util.Arrays.copyOf(原数组,旧数组长度*2);//返回带有原值的新数组,推荐

地址的替换
数组作为引用类型之一,其变量中存储的是数组的地址
完成元素复制后,需将新数组地址,赋值给原变量进行替换

数组类型的参数
public class demo{
public static void main(String[] args){
int[] arr={9,7,3,1,6,4,5,8,2};
printArr(arr);//传入的实参必须与形参类型一致
}
public static void printArr(int[] arr){//形参
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+”\t”);
}
}
}
方法调用,将arr中的地址赋值给printArr函数中的arr,此时二者指向同一个数组

数组类型的返回值以及打印数组元素
public class demo{
public static void main(String[] args){
int[] arr={1,2,3,4,5,6};
int[] arrs=arrscopy(arr);
printArr(arrs);
}
public static int[] arrscopy(int[] arr){
int[] arrs=new int[arr.length*2];
//创建新数组,长度为原数组的2倍

for(int i=0;i<arr.length;i++){
arrs[i]=arr[i];//将旧数组赋值到新数组中
}

return arrs;//新数组中保留旧数组的元素,返回新数组
}

public static void printArr(int[] arr){
//数组循环遍历
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+”\t”);
//依次打印数组中所有的元素
}
}
}

数组的冒泡排序
public class demo{
public static void main(String[] args){
//数组的冒泡排序
//相邻的两个数值比较大小,互换位置
int[] arr={7,9,8,1,3,5,0,4,6,2};
sorts(arr);
printArr(arr);
}
public static void sorts(int[] arr){
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1;j++){
if(arr[j]<arr[j+1]){
int tem=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tem;
}
}
}
}
public static void printArr(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+”\t”);
}
System.out.println();
}
}

数组的选择排序
public class demo{
public static void main(String[] args){
//数组的选择排序
//固定值与其他值依次比较大小,互换位置
int[] arr={7,9,8,1,3,5,0,4,6,2};
sorts(arr);
printArr(arr);
}
public static void sorts(int[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
int tem=arr[i];
arr[i]=arr[j];
arr[j]=tem;
}
}
}
}
public static void printArr(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+”\t”);
}
System.out.println();
}
}

jdk提供升序
import java.util.*;
public class demo{
public static void main(String[] args){
//使用 Arrays.sort(数组名)

int[] arr={7,9,8,1,3,5,0,4,6,2};

Arrays.sort(arr);//jdk提供升序

printArr(arr);
}
public static void printArr(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+”\t”);
}
System.out.println();
}
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注