首页 > 编程语言 >Java入门到精通:第八课 数组

Java入门到精通:第八课 数组

时间:2024-07-28 09:27:42浏览次数:15  
标签:arr Java 入门 int System 第八课 数组 println out

一、数组概述

1、数组的解释:可以存储同种数据类型的多个值的一种容器

2、注意:

(1)存储数据时,需要结合隐式转换:

(2)建议:容器的类型,和存储的数据类型保持一致

二、数组的定义

1、格式:

2、数组的静态初始化

3、数组的动态初始化

4、数组的静态初始化和数组的静态初始化的区别:

示例代码:

package com.camellia.demo1.ArrayDemo;

public class ArrayDemo4 {
    public static void main (String args[]) {
        /*定义一个数组,用来存储班级中50个学生的姓名
         *姓名未知,等学生报道之后,再进行添加。
         */

        //格式:
        //数据类型[] 数组名 = new 数据类型 [数组长度];
        //创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值

        String[] arr1 = new String[50];
        //添加学生
        arr1[0] = "张三";
        arr1[1] = "李四";
        //获取
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);

        //数组,默认初始化值的规律
        //整数类型 :0
        //小数类型 :0.0
        //字符类型 :/u0000 
        //布尔类型 :false
        //引用数据类型 :null
        int[] arr2 = new int[3];
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);

    }
}

运算结果:

5、数组的地址值 :表示数值在内存中的位置

代码:

package com.camellia.demo1.ArrayDemo;

public class ArrayDemo1 {
    public static void main(String[] args) {
        //格式
        //静态初始化
        //完整格式
        //数据类型 [] 数组名  = new 数据类型[]{元素1,元素2,元素3...}
        //简化格式:
        //数据类型 数组名 [] = {元素1,元素2,元素3...}

        //1.定义数组存储5个学生的年龄
        int[] arr1 = new int[]{12,13,14,15,16};
        int[] arr2 = {12,13,14,15,16};
        //2.定义数组存储3个学生的姓名
        String[] arr3 = new String[]{"张三","李四","王五"};
        String[] arr4 = {"张三","李四","王五"};
        //3.定义数组存储4个学生的身高
        double[] arr5 = new double[]{1.93,1.83,1.73,1.63};
        double[] arr6 = {1.93,1.83,1.73,1.63};

        //输出的是数组的地址值!!!
        System.out.println(arr1);
        System.out.println(arr2);
        System.out.println(arr3);
        System.out.println(arr4);
        System.out.println(arr5);
        System.out.println(arr6);

        //解释地址值的格式含义:
        //[I@4eec7777
        //[D@6d311334
        //[:表示当前是一个数组
        //D:元素是double类型;L:元素是int类型;
        //@: 间隔符号。(固定格式)
        //4eec7777;6d311334: 才是数组真正的地址值。(十六进制)

    }
}

运算:

三、数组的常见操作

1、数组元素的访问:

(1)索引:

(2)访问格式:

代码:

package com.camellia.demo1.ArrayDemo;

public class ArrayDemo2 {
    public static void main(String[] args) {
        //利用索引对数组中的元素进行访问
        //1.获取数组里的元素
        // 格式:数组名[索引]

        int[] arr = {1,2,3,4};
        //获取数组第一个元素 = 0索引对应的元素
        int number = arr[0];
        System.out.println(number);//1

        //获取数组中1索引对应的数据,并直接打印出来
        System.out.println(arr[1]);//2

        //2.把数据存储到数组中
        //格式: 数组名[索引] = 具体数据/变量;

        arr[0] = 100;

        System.out.println(arr[0]);

    }
}

运算:

2、数组的遍历

(1)定义;

(2)练习题

示例代码:

package com.camellia.demo1.ArrayDemo;

public class ArrayDemo3 {
    public static void main(String[] args) {
        //方法一:
        //1.定义数组
        int[] arr1 = {1,2,3,4,5};
        //2.获取数组里面所有的元素
        //格式:数组名[索引]
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        System.out.println(arr1[3]);
        System.out.println(arr1[4]);

        //方法二:
        //利用循环:
        //开始条件:0
        //结束条件:数组长度 - 1 [最大索引]
        //1.定义数组
        int[] arr2 = {1,2,3,4,5,6,7,8,9,0};
        //2.获取数组里面所有的元素
        for (int i = 0;i<=10;i++) {
            System.out.println(arr2[i]);
        }

        //方法三:
        //在Java当中,关于数组的一个长度属性,length
        //调用方式:数组名.length
        //System.out.println(arr.length);
        //1.定义数组
        int[] arr3 = {1,2,3,4,5,6,7,8,9,0};
        //2.获取数组里面所有的元素
        for (int j : arr3) {
            System.out.println(j);
        }

        //拓展:
        //自动快速生成数组的遍历方式
        //idea提供的
        //数组名.fori

    }
}

运算结果:

3、常见问题:

四、常见应用场景

1、求最值

例题:已知数组元素为{33,5,22,44,55},找出数组最大值并打印在控制台

代码:

package com.camellia.demo1.ArrayDemo;

public class ArrayDemo5 {
    public static void main(String[] args) {
        //定义数组求最大值: 33,5,22,44,55


        //1.定义数组来存储5个值
        int[] arr = {33, 5, 22, 44, 55};
        //2.定义一个变量max用来存储最大值
        //max的初始化一定是数组中的值
        //临时认为0索引的数据是最大的
        int max = arr[0];
        //3.循环取数组中每一个元素
        //拿着每一个元素和max进行比较
        for (int i = 0; i < arr.length; i++) {
            //i 索引 arr[i]元素
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        //4.循环结束之后,max记录的数据是数组中的最大值
        System.out.println(max);
    }
}

运算结果:

2、求和

例题:生成10个1~100之间的随机数存入数组

1)求出所有数据和

2)求所有数据的平均数

3)统计有多少个数据比平均值小

代码:

package com.camellia.demo1.ArrayDemo;

import java.util.Random;

public class ArrayDemo6 {
    public static void main(String[] args) {
        /*1)求出所有数据和
         *2)求所有数据的平均数
         *3)统计有多少个数据比平均值小
         */

        //1.定义数组
        int[] arr = new int[10];
        //2.把随机数存入数组中
        Random r = new Random();

        for (int i = 0; i < arr.length; i++) {
            //每一次循环,就会产生一个新的随机数
            int number = r.nextInt(100) + 1;
            //把生成的随机数存入数组
            //数组名称[索引] = 数据;
            arr[i] = number;
        }


        //求和:
        //定义求和变量
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            //循环得到每一个元素
            //并把元素累加到sum中

            sum = sum + arr[i];
        }
        System.out.println("数组中所有的数据的和为:" + sum);


        //求所有数据的平均数
        int avg = sum / arr.length;
        System.out.println("数组中的平均数为:" + avg);


        //有多少个数据比平均数小
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] < avg) {
                count++;
            }
        }
        System.out.println("在数组中,一共有" + count + "个数据,比平均数小");


        //遍历数组来验证
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + " ");
        }
    }
}

运算结果:

3、交换数据

例题:定义一个数组,存入1,,3,4,5.按照要求交换索引对应的元素

交换前:1,2,3,4,5

交换后:5,2,3,4,1

代码:

package com.camellia.demo1.ArrayDemo;

public class ArrayDemo7 {
    public static void main(String[] args) {
        /*定义两个变量,交换两个变量记录的值*/

        int a = 10;
        int b = 20;

        //方法一:
        a = b;
        b = a;

        System.out.println(a);
        System.out.println(b);


        //方法二:
        //定义临时第三方变量
        int temp = a;
        a = b;
        b = temp;

        System.out.println(a);
        System.out.println(b);
        //




    }
}

运算结果:

4、打乱数据

标签:arr,Java,入门,int,System,第八课,数组,println,out
From: https://blog.csdn.net/2301_76997868/article/details/140633076

相关文章

  • 【免费领源码】Java/Mysql数据库+SSM校园兼职网站 25557,计算机毕业设计项目推荐上万套
    摘 要当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动正在向网络化发展。兼职......
  • 【免费领源码】Java/Mysql数据库+springboot驾校预约管理系统 25540,计算机毕业设计项
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于驾校预约管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了驾校预约管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • 当我尝试使用 HTMLSession 渲染 JavaScript 时,出现错误
    我尝试使用HTMLSession渲染JavaScript,但是当我尝试时它给了我一个错误。>>>r.html.render()Futureexceptionwasneverretrievedfuture:<Futurefinishedexception=NetworkError('ProtocolerrorTarget.detachFromTarget:Targetclosed.')>pyppeteer.error......
  • JavaEE 初阶(8)——多线程6之线程安全下-->volatile
    之前,我们在 JavaEE初阶(6) 这篇文章中,谈到过引起线程不安全的原因,初步了解了 “可见性” “Java内存模型” “指令重排序”,本章讲解volatile会涉及到这三个知识点,详细内容可以参考  JavaEE初阶(6) 这篇文章。目录一. 引入二.volatile关键字 a.保证“可......
  • JavaEE 初阶(7)——多线程5之线程安全中 -->“死锁”
    目录一.什么是“死锁”二.产生死锁的场景  场景1:一个线程连续加锁 场景2:两个线程两把锁场景3:N个线程M把锁 三.产生死锁的四个必要条件(缺一不可)四. Java标准库中的线程安全类一.什么是“死锁”并非是synchronized就一定线程安全,还要看代码具体咋写。到底......
  • JavaEE 初阶(9)——多线程7之 wait 和 notify
    目录一.监视器锁与监视器二.wait()  三.notify()和notifyAll()3.1notify() 3.2notifyAll()3.3wait等待 和sleep休眠的对比(面试题)wait(等待)/notify(通知)由于线程在操作系统上是“随机调度,抢占式执行”的,因此线程之间执行的先后顺序难以预知。但是......
  • 每日一知识点 - Java常用关键字
    目录......
  • vscode-react-javascript-snippets
    SnippetsSnippetsinfoEveryspaceinside {} and () meansthatthisispushedintonextline:) $ representeachstepafter tab.TypeScript hasowncomponentsandownsnippets.Usesearchorjusttype ts beforeeverycomponentsnippet.I.E. t......
  • 基于 Java 的推箱子游戏设计与实现
    点击下载链接基于Java的推箱子游戏设计与实现摘要社会在进步,人们生活质量也在日益提高。高强度的压力也接踵而来。社会中急需出现新的有效方式来缓解人们的压力。此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣。具有操作简单,易于上手的特点......
  • 基于Java的模拟写字板的设计与实现
    点击下载链接基于Java的模拟写字板的设计与实现摘要:目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并且涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。此简易JAVA写字板程序,使用Java程序编写,能够进行输入文......