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");
        }

    }
}
相关推荐
寒笙LED5 分钟前
C++详细笔记(六)string库
开发语言·c++·笔记
码上有前12 分钟前
解析后端框架学习:从单体应用到微服务架构的进阶之路
学习·微服务·架构
天天扭码34 分钟前
五天SpringCloud计划——DAY1之mybatis-plus的使用
java·spring cloud·mybatis
岳不谢38 分钟前
VPN技术-VPN简介学习笔记
网络·笔记·学习·华为
程序猿小柒40 分钟前
leetcode hot100【LeetCode 4.寻找两个正序数组的中位数】java实现
java·算法·leetcode
海害嗨1 小时前
阿里巴巴官方「SpringCloudAlibaba全彩学习手册」限时开源!
学习·开源
雨中rain1 小时前
贪心算法(1)
算法·贪心算法
不爱学习的YY酱1 小时前
【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)
java·linux·前端·算法·操作系统
丁总学Java1 小时前
Maven项目打包,com.sun.tools.javac.processing
java·maven
平头哥在等你1 小时前
求一个3*3矩阵对角线元素之和
c语言·算法·矩阵