Java基础语法(三)

数组

数组的基本概念

数组:一种存储多个同种数据类型的值的容器。按照一定顺序排列的同种类型元素集合。数组中每一个元素都可以通过数组名和下标(索引)来确定。

数组的地址:数组在容器中的位置

例:[D@5536d9fc

  • [:表示当前是一个数组
  • D:表示数组元素类型为double
  • @:表示一个间隔符号,固定值
  • 5536d9fc:数组的真实地址
数组的定义

方式1

数据类型 [ ] 数组名

int [] array

方式2

数据类型 数组名 []

int array []

数组的初始化

初始化概念:在内存中维数组容器开辟一定空间用于存储数组中元素

静态初始化

利用现有的元素在数组中开辟一个固定的、静态的空间

格式:数据类型 [] 数组名 = new 数据类型[]{元素1,元素2,元素3};

例:int[] array = new int[]{1,2,3};

简化格式:数据类型 [] 数组名 = {元素1,元素2,元素3};

例:int[] array = {1,2,3};

动态初始化

动态初始化是指在初始化的时候只制定数组的长度,由系统为数组分配初始值

格式:数据类型 [] 数组名 = new 数据类型[数组长度];

例:int[] array = new int[3];

数组默认初始化值的规律

整数类型:默认初始化值为0

小数类型:默认初始化值为0.0

字符类型:默认初始化值为‘/u0000’空格

布尔类型:默认初始化值为false

引用数据类型:默认初始化值为null

静态初始化和动态初始化的区别
初始化类型静态初始化动态初始化
指定内容数组元素数组长度
适用范围知道具体元素知道长度不知具体元素
数组的访问

格式:变量名=数组名[索引]

索引就是数组的编号,用来寻找数组中元素,从0开始依次递增

数组的遍历
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}
数组的存储

格式:数组名[索引]=常量/变量

数组变量存储的是数组首元素的地址

int[] arr={1,2,3,4,5,6};
System.out.println(arr);

//输出结果为数组首元素在我的电脑里的十六进制地址
[I@46ac2687
java内存分配
  • 栈:方法运行时使用的内存
  • 堆:存储对象或者数组,new来创建的,都存储在堆内存
  • 方法区:存储可以运行的class文件
  • 本地方法栈:JVM在使用操作系统功能的时候使用,与我们开发无关
  • 寄存器:CPU使用,与我们开发无关
拓展——二维数组相关内容
二维数组的初始化
二维数组的静态初始化

格式:数据类型[] [] 数组名 = new 数据类型[] []{{元素1,元素2,元素3},{元素1,元素2,元素3}};

例:int[] [] array = new int[] []{{1,2,3},{1,2,3}};

简化格式:数据类型[] [] 数组名 = {{元素1,元素2,元素3},{元素1,元素2,元素3}};

例:int[] [] array = {{1,2,3},{1,2,3}};

为了书写美观,我们一般会这样定义二维数组:

int[] [] array = {

​ {1,2,3},

​ {1,2,3}

};

二维数组的动态初始化

动态初始化是指在初始化的时候只制定数组的长度,由系统为数组分配初始值

格式:数据类型[] [] 数组名 = new 数据类型[m] [n];

例:int[] [] array = new int[3] [4];

特殊情况1:定义二维数组行数未定义列数

public static void main(String[] args){
    //创建新二维数组
    int[][] arr=new int[2][];
    //定义两个新一维数组
    int[] arr1={11,22};
    int[] arr2={44,55,66};
    //将二位数组的第一行和第二行分别用两个一维数组替换
    arr[0]=arr1;
    arr[1]=arr2;
}

特殊情况2:定义二维数组时未定义其内容

public static void main(String[] args){
    //创建新二维数组
    int[][] arr=new int[2][3];
    //定义两个新一维数组
    int[] arr1={11,22};
    int[] arr2={44,55,66};
    //将二位数组的第一行和第二行分别用两个一维数组替换
    arr[0]=arr1;
    arr[1]=arr2;
}
数组的操作
求最值
import java.util.Scanner;

public class Practise6_qiuzuizhi {
    public static void main(String[] args){    
        int[] arr=new int[8];
        //向数组中输入数据
        for(int i=0;i<arr.length;i++){
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个整数:");
            arr[i]=sc.nextInt();
        }
        //找出最大的
        int max=arr[0];
        for(int i=1;i<arr.length;i++){
            if(arr[i]>max) max=arr[i];
        }
        System.out.println(max);
    }
}
求和
import java.util.Scanner;

public class Practise7_bainliqiuhe {
    public static void main(String[] args){    
        int[] arr=new int[8];
        //向数组中输入数据
        for(int i=0;i<arr.length;i++){
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个整数:");
            arr[i]=sc.nextInt();
        }
        //遍历求和
        int sum=0;
        for(int i=0;i<arr.length;i++){
            sum+=arr[i];
        }
        System.out.println(sum);
    }
}
交换数据
import java.util.Scanner;

public class Practise8_jiaohuanshuju {
    public static void main(String[] args){    
        int[] arr=new int[8];
        //向数组中输入数据
        for(int i=0;i<arr.length;i++){
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个整数:");
            arr[i]=sc.nextInt();
        }
        //交换数据
        int temp;
        for(int i=0;i<arr.length/2;i++){
            temp=arr[i];
            arr[i]=arr[arr.length-i-1];
            arr[arr.length-i-1]=temp;
        }
        //打印结果
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}
打乱数据
import java.util.Random;
import java.util.Scanner;

public class Practise9_daluanshuju {
    public static void main(String[] args){    
        int[] arr=new int[8];
        //向数组中输入数据
        for(int i=0;i<arr.length;i++){
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个整数:");
            arr[i]=sc.nextInt();
        }
        //打乱数据
        Random r=new Random();
        for(int i=0;i<arr.length;i++){
            //设置一个随机索引,让索引指向的元素与y指向的元素交换
            int randomindex=r.nextInt(arr.length);
            int temp=arr[i];
            arr[i]=arr[randomindex];
            arr[randomindex]=temp;
        }
        //打印结果
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值