Java学习——数组

前言:上篇我们讲到了Java语言中的循环语句,今天在将数组之前我们来做一个关于循环语句的一个小练习。

目录

一、练习

二、数组

1、格式

2、初始化方式

1.动态初始化

2.静态初始化

3、变量访问方式

4、内部保存的数据的访问方式

索引

5、多个数组指向相同

6、遍历

练习

7、数组操作中的两个常见小问题

三、Java中的内存分配

1.栈内存

2.堆内存

四、Random

五、结束语


一、练习

如何用for循环语句实现用户在控制台输入一个整数,系统输出一个菱形?

在这个问题中,我们可以将利用for循环嵌套来实现。首先我们可以先利用循环嵌套输出一个等腰三角形。 

代码示例

        Scanner sc = new Scanner(System.in);
        System.out.println("请用户输入行数:");
        int line = sc.nextInt();
        for (int i = 1; i <= line; i++) {
            for (int j = 1; j <= line - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }

这个就是菱形的上半部分,其次,我们可以再次利用for循环嵌套来输出菱形的下半部分。

代码示例

        for (int i = line - 1; i >= 1; i--) {
            for (int j = 1; j <= 5 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }

最后,我们将两段代码合到一块,就可以完成本次练习。

完整代码

import java.util.Scanner;

//菱形
public class Test04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请用户输入行数:");
        int line = sc.nextInt();
        for (int i = 1; i <= line; i++) {
            for (int j = 1; j <= line - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
        for (int i = line - 1; i >= 1; i--) {
            for (int j = 1; j <= 5 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

讲完这个小练习,我们就要开始本篇内容的学习。

二、数组

1、格式

格式一:数据类型[] 变量名     

    范例:int[] arr

              定义了一个int类型的数组,数组名为arr。(推荐)

格式二:数据类型 变量名

    范例:int arr[]

              定义了一个int类型的变量,变量名是arr数组。 

2、初始化方式

数组共有两种初始化方式,动态初始化和和静态初始化

1.动态初始化

初始化只指定数组长度,由系统为数组分配初始值

格式:数据类型[] 变量名 = new 数据类型[数据长度] 

范例:

int[] arr = new int[3];

2.静态初始化

初始化时指定每个数组元素的始值,由系统决定数组长度

格式:数据类型[] 变量名 = new 数据类型{数据1,数据2,数据3,......}

范例:

int[] arr = new int[]{1, 2, 3};

简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,......}

       范例:

int[] arr = {1, 2, 3};

3、变量访问方式

格式:

int[] arr = new int[3];
arr;

4、内部保存的数据的访问方式

在将数组内部保存的数据的访问方式前,我们先将一个知识点,那就是索引。

索引

索引是数组中数据的编号方式

作用:索引用于访问数组中的数据使用,数组名[索引名]等同于变量名,是一种特殊的变量名。

特征

  1. 索引从0开始
  2. 索引是连续的
  3. 索引是连续增加的,每次加1

接下来我们再来讲数组内部保存的数据的访问方式

格式:数组名[索引]

代码示例

int[] arr = new int[3];
System.out.println(arr[0]);

5、多个数组指向相同

废话不多说,直接上代码。

public class Demo02 {
    public static void main(String[] args) {
        int[] arr = new int[2];
        arr[0] = 100;
        arr[1] = 200;
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        int[] arr2 = arr;
        arr2[0] = 111;
        arr2[1] = 222;
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
    }
}

在该代码中我们可以看出,再将arr数组的地址吗赋值给arr2后,arr和arr2的地址名相同,但是,在arr2中,我们将数组的元素100和200分别改为了111和222,这使得在最后的输出结果上arr数组输出100和200,arr2数组输出111和222。

6、遍历

获取数组元素数量

格式:变量名.length

代码示例

        int[] arr = {11, 22, 33, 44, 55};
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);
        }

练习

求数组中的最大值。

代码示例

        int[] arr = {12, 23, 60, 24, 34};
        int max = arr[0];
        for (int x = 1; x < arr.length; x++) {
            if (arr[x] > max) {
                max = arr[x];
            }
        }
        System.out.println("max:" + max);

7、数组操作中的两个常见小问题

索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题。

ArrayIndexOutOfBoundsException

空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。

NullPointerException

null:空值,引用数据类型的默认值,表示不指向任何有效对象。

三、Java中的内存分配

Java中的内存分配分为栈内存和堆内存

1.栈内存

栈内存:存储局部变量

定义在方法中的变量,例如:arr

使用完毕,立即消失。

2.堆内存

堆内存:存储new出来的新内容(实体,对象)数组在初始化时,会为存储空间添加默认值。

数据类型初始值:

  • 整数:0
  • 浮点数:0.0
  • 布尔:false
  • 字符:空字符
  • 引用数据类型:null

每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收。

四、Random

Random的作用和使用步骤

作用:用于产生一个随机数

使用步骤

  1. 导包:import java.util.Random
  2. 创建对象 :Random r = new Random();
  3. 获取随机数 :int number = r.nexInt(10);

代码示例

import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {
        Random r = new Random();
        for (int i = 0; i < 10; i++) {
            int number = r.nextInt(10);
            System.out.println("number:" + number);
        }
        int x = r.nextInt(10) + 1;
        System.out.println(x);
    }
}

五、结束语

本篇内容首先回忆了上篇所讲到的相关知识点,其次主要讲解了Java语言中的数组。我相信通过本篇的学习,小伙伴们肯定会对数组这一知识点有了一个初步的了解,并能在代码中熟练运用数组来完成相关练习。好了,本篇的讲解就到这里了。

 创作不易,期待你的一键三连!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlwaysBeMyself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值