本文共 3025 字,大约阅读时间需要 10 分钟。
package com.javasm.array;import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;import java.util.Arrays;/** * @author: JAVASM * @classNAME: ArrayDemo05 * @description: * @date: 2021/3/29 9:25 * @version:0.1 * @since:1.8 */public class ArrayDemo05 { //将两个数组合并为一个数组,如果第二个数组的长度不够,创建新数组存储 public static void main(String[] args) { String[] str1={ "1","2","3"}; String[] str2=new String[8]; str2[0]="a"; str2[1]="b"; str2[2]="c"; str2[3]="d"; System.out.println("第一个数组为:"+Arrays.toString(str1)); System.out.println("第二个数组为:"+Arrays.toString(str2)); int len1=str1.length; int len2=str2.length; int index; for (index = 0; index < len2; index++) { //判断数组元素是否为null可以直接用== if(str2[index]==null){ //此处不应该用return,return直接退出方法体了,流程控制应该用break或者continue来结束循环 break; } } int remainSpace=len2-index; System.out.println("第二个数组的有效长度为:"+index); System.out.println("第二个数组的剩余长度为:"+remainSpace); if(remainSpacelen1){ for (String b:str1) { //此处应该是数组2的有效长度++ str2[index++]=b; } } System.out.println("合并后的数组为:"+Arrays.toString(str2)); }}程序输出结果如下:第一个数组为:[1, 2, 3]第二个数组为:[a, b, c, d, null, null, null, null]第二个数组的有效长度为:4第二个数组的剩余长度为:4合并后的数组为:[a, b, c, d, 1, 2, 3, null]Process finished with exit code 0
native修饰的是本地方法栈,java语言没有能力操作内存,所以底层通过C语言来操作内存
截断:将一个数组在某个位置截断。
利用foreach和Array工具类来扩容数组创建新数组,合并数组,优化上面的代码package com.javasm.array;import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;import java.util.Arrays;/** * @author: JAVASM * @classNAME: ArrayDemo05 * @description: * @date: 2021/3/29 9:25 * @version:0.1 * @since:1.8 */public class ArrayDemo05 { //将两个数组合并为一个数组,如果第二个数组的长度不够,创建新数组存储 public static void main(String[] args) { String[] str1={ "1","2","3"}; String[] str2=new String[5]; str2[0]="a"; str2[1]="b"; str2[2]="c"; str2[3]="d"; System.out.println("第一个数组为:"+Arrays.toString(str1)); System.out.println("第二个数组为:"+Arrays.toString(str2)); int len1=str1.length; int len2=str2.length; int index; for (index = 0; index < len2; index++) { //判断数组元素是否为null可以直接用== if(str2[index]==null){ //此处不应该用return,return直接退出方法体了,流程控制应该用break或者continue来结束循环 break; } } int remainSpace=len2-index; System.out.println("第二个数组的有效长度为:"+index); System.out.println("第二个数组的剩余长度为:"+remainSpace); if(remainSpacelen1){ for (String b:str1) { //此处应该是数组2的有效长度++ str2[index++]=b; } } System.out.println("合并后的数组为:"+Arrays.toString(str2)); }}
优化后和上面代码输出一致
转载地址:http://bknwi.baihongyu.com/