Java基础第三天(实训学习整理资料(三)(数组))

一、数组

1、定义

具有相同类型的数据集合

2、如何创建数组
(一)一维数组:

(1)情况一:数组的每个元素都确定

type[] arrName = {值1,值2,值3···};

案例:定义一个整型数组22,33,44

int[] arr = {22,33,44};

(2)情况二:以对象形式创建(每个元素都确定)

type[] arrName = new type[] {值1,值2,值3···};

(3)情况三:对存储的值不清楚,但是知道元素的个数

type[] arrName = new type[num];

int[] arr =new int[3];

访问数组中的元素:数组的下标是从0开始

数组名[下标]

例如:

String[] names = new String[]{"张三","李四","王五"};

访问:

names[1]

如果访问超过了数组范围的元素,会抛出ArrayIndexOutOfBoundsException(数组下标越界异常)

(二)二维数组:

一堆数组中的每个元素也是一个数组

(1)方法一:

java 复制代码
type[][] arr = {{值1-1,值2-2···},{值1-1,值1-2···},···}
int[][] nums = {{1,2,3},{4,5,6},{7,8}};

(2)方法二:

java 复制代码
type[][] arr = new type[2][];
int[][] arr1 = new int[3][];
arr[0] = new int[]{1,2}
arr[1] = new int[6]
3、如何遍历数组

在数组对象中有一个属性:arr.length,返回数组的元素个数

for循环:

java 复制代码
for(int i=0;i<names.length;i++){
    System.out.println(names[i]);
}

foreach循环:利用迭代器实现数组的遍历

for(类型 变量 : 序列){

//循环体

}

例如:

java 复制代码
       String[] names = new String[]{"张三","李四","王五"}; 
        for (String name:names) {
            System.out.println(name);
        }
4、数组的工具类

Arrays工具类中提供了多种操作数组的方法:

toString() //将数组转为字符串

java 复制代码
 System.out.println(Arrays.toString(names));
5、数组的扩缩容

(1)System

//将原数组src复制到新数组dest

public static native void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

说明:

native:本地方法,功能不是由java代码实现。

static:静态成员,可以直接通过类进行访问。

数组扩容案例:

java 复制代码
//数组的扩缩容
String[] names = new String[]{"张三","李四","王五"};

        String[] newNames = new String[5];
		//添加新元素
newNames[3] = "人才";
newNames[4] = "计划";
System.out.println(Arrays.toString(newNames));

数组的缩容案例:

java 复制代码
        String[] names = new String[]{"张三","李四","王五","小樱"};

        String[] newNames = new String[2];
        //数组缩容
        System.arraycopy(names,0,newNames,0,newNames.length );
   
        System.out.println(Arrays.toString(newNames));

练习:利用冒泡排序算法将数组{12,4,6,2,1}按照从小到大排序。

java 复制代码
        int[] nums ={12,4,6,2,1};
        for (int i = 1;i <= nums.length-1;i++){
            for (int j = 0;j <= 5 -1-i;j++){
                if (nums[j] > nums[j + 1]){
                 /*   int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1]=temp;
                  */
                    nums[j] = nums[j]^nums[j+1];
                    nums[j+1] = nums[j]^nums[j+1];
                    nums[j] =nums[j]^nums[j+1];
                }
            }
        }
        for (int i = 0;i<nums.length;i++){
            System.out.println(nums[i]+"\t");
        }


    }
}

练习:杨辉三角,使用扫描器输入一个整数表示三角的层: 5

java 复制代码
public class Demo02work {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数用来表示三角的层数:");
        int n= sc.nextInt();
        if (n<=0){
            System.out.println("请重新输入一个正确的层数!");
        }
        int[][] a=new int[n][];
        for(int i=0;i<n;i++){
            a[i]=new int[i+1];
            for(int j=0;j<=i;j++){
                if(j==0||j==i){
                    a[i][j]=1;
                }
                else {
                    a[i][j]=a[i-1][j]+a[i-1][j-1];
                }
            }
            System.out.println(Arrays.toString(a[i])+"\t");
        }

    }
}
相关推荐
胡西风_foxww8 分钟前
【es6复习笔记】rest参数(7)
前端·笔记·es6·参数·rest
黑胡子大叔的小屋26 分钟前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark29 分钟前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
火星机器人life1 小时前
基于ceres优化的3d激光雷达开源算法
算法·3d
Web阿成1 小时前
3.学习webpack配置 尝试打包ts文件
前端·学习·webpack·typescript
虽千万人 吾往矣1 小时前
golang LeetCode 热题 100(动态规划)-更新中
算法·leetcode·动态规划
雷神乐乐1 小时前
Spring学习(一)——Sping-XML
java·学习·spring
李雨非-19期-河北工职大2 小时前
思考: 与人交际
学习
哦哦~9212 小时前
深度学习驱动的油气开发技术与应用
大数据·人工智能·深度学习·学习