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

    }
}
相关推荐
正在走向自律3 分钟前
Java连接电科金仓数据库(KingbaseES)实战指南
java·数据库·oracle·国产数据库·kingbase
SccTsAxR4 分钟前
[C语言]常见排序算法①
c语言·开发语言·经验分享·笔记·其他·排序算法
xiaoye37089 分钟前
Java 事务失效场景全解析
java
努力学习的小廉11 分钟前
我爱学算法之—— 位运算(上)
c++·算法
weixin_4365250724 分钟前
Spring Boot 集成 EasyExcel 的最佳实践:优雅实现 Excel 导入导出
java·spring boot·后端
ChinaRainbowSea27 分钟前
9. LangChain4j + 整合 Spring Boot
java·人工智能·spring boot·后端·spring·langchain·ai编程
ゞ 正在缓冲99%…29 分钟前
leetcode35.搜索插入位置
java·算法·leetcode·二分查找
武昌库里写JAVA37 分钟前
Mac下Python3安装
java·vue.js·spring boot·sql·学习
lifallen40 分钟前
字节跳动Redis变种Abase:无主多写架构如何解决高可用难题
数据结构·redis·分布式·算法·缓存
程序员清风1 小时前
滴滴三面:ZGC垃圾收集器了解吗?
java·后端·面试