中南林业科技大学Java实验报告三:数组的初始化和逻辑运算符的使用

简介: 中南林业科技大学Java实验报告三:数组的初始化和逻辑运算符的使用

实验3:数组的初始化和逻辑运算符的使用

3.1实验目的

  1. 学习数组的定义;
  2. 学习数组的初始化;
  3. 学习对数组的访问;
  4. 掌握整数除法、浮点数除法、混合除法;
  5. 掌握基本的逻辑运算符的用法;

3.2 实验内容

3.2.1 定义两个长度为5的数组,一个采用静态初始化,一个采用动态初始化,分别将其输出。

【前提引入】

数组可以存放多个同一类型的数据。数组也是一种数据类型,是引入类型。即数组就是一组数据。

数组创建以后,如果没有复制,则有默认值:int - 0 ,short - 0 ,double - 0.0,boolean - false 等

  • 静态初始化:已知数组元素个数和具体值
  1. 数据类型[ ] 数组名 = {元素值,元素值,…};
  2. 数据类型 数组名[ ] = {元素值,元素值,…};
  • 动态初始化
  1. 声明数组:此时还未分配内存空间,为null
    数据类型[ ] 数组名;
  2. 创建数组:分配内存空间,可以存放数据
    数组名 = new 数组类型[大小];

【运行流程】

public static void main(String[] args) {
        //动态初始化
        int[] dynamicArray = new int[5];
        //动态初始化的默认值输出
        System.out.println("动态初始化默认值输出:" + Arrays.toString(dynamicArray));
        //静态初始化
        int[] quietArray = new int[]{1, 2, 3, 4, 5};
        System.out.println("静态初始化值输出:" + Arrays.toString(quietArray));
    }

3.2.2 定义一个长度为6的整型数组,采用键盘输入相应的数,并实现数组元素由小到大的排序。

【前提引入】

冒泡排序法,时间复杂度为 O(n 2 n^2n2)

【运行流程】

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] sortArray = new int[6];
        for (int i = 0;i<sortArray.length;i++) {
            sortArray[i] = scanner.nextInt();
        }
        sort(sortArray);
        System.out.println(Arrays.toString(sortArray));
    }
    /**
     * 冒泡排序法
     * @param sortArray 需要排序的数组
     */
    public static void sort(int[] sortArray){
        int temp;
        for (int i = 0; i < sortArray.length - 1; i++) {
            for (int j = 0; j < sortArray.length - 1 - i; j++) {
                if(sortArray[j]>sortArray[j+1]){
                    temp = sortArray[j];
                    sortArray[j] = sortArray[j+1];
                    sortArray[j+1] = temp;
                }
            }
        }
    }

3.2.3 新建Java代码,实现Java的整数除法,浮点数除法和整数与浮点数混合除法。分别计算int a1,b1, c1,为4/5,4.0/5.0,4/5.0的值和当变量为double a2,b2,c2时的值,并输出结果,当出现错误时,采用强制类型转换保证程序的正确性。

3.2.3.1 出错

【前提引入】

数据类型按精度(容量)大小排序规则:

  1. byte -> short -> int -> long -> float -> double
  2. char -> int -> long -> float -> double

注意事项:

  • 数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
  • 当我们把精度(容量)大的数据类型复制给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换

【运行流程】

public static void main(String[] args) {
        int a1 = 4/5;
        int b1 = 4.0/5.0;
        int c1 = 4/5.0;
        double a2 = 4/5;
        double b2 = 4.0/5.0;
        double c2 = 4/5.0;
        System.out.println("a1 = " + a1 + ",b1 = " + b1 + ",c1 = " + c1);
        System.out.println("a2 = " + a2 + ",b2 = " + b2 + ",c2 = " + c2);
    }

3.2.3.2 改进

【前提引入】

  • 强制类型转换是自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型,使用的时候要加上强制类型转换符()
  • 但可能会造成 精度损失 或 数据溢出
  • 强制符号只针对于最近的操作数有效,往往会使用小括号提升优先级

【运行流程】

public static void main(String[] args) {
        int a1 = 4/5;
        int b1 = (int)(4.0/5.0);
        int c1 = (int)(4/5.0);
        double a2 = 4/5;
        double b2 = 4.0/5.0;
        double c2 = 4/5.0;
        System.out.println("a1 = " + a1 + ",b1 = " + b1 + ",c1 = " + c1);
        System.out.println("a2 = " + a2 + ",b2 = " + b2 + ",c2 = " + c2);
    }

3.2.4 新建Java代码,实现Java的逻辑运算。给定布尔变量i, j, k, l,i的值为5>6的比较结果,j为i的非,k为i和j的与,l为i和j的或,最后分别将4个结果输出。

【前提引入】

  • &&||都是短路
  1. &&:全真则真,否则为假
  2. ||:一真为真,否则为假
  • boolean 类型的值只能为 false 或 true ,不能用数字代替,数字也无法表示 true 或 false
  • > < == || && 的结果都是 boolean 类型的数据
  • boolean 类型不参与自动类型转换与强制类型转换

【运行流程】

public static void main(String[] args) {
        boolean i = 5>6;
        boolean j = !i;
        boolean k = i&&j;
        boolean l = i || j;
        System.out.println("i = " + i + ",j = " + j + ",k = " + k + ",l = " + l);
    }


相关文章
|
3月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
4月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
5月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
150 0
|
6月前
|
消息中间件 机器学习/深度学习 Java
java 最新技术驱动的智能教育在线实验室设备管理与实验资源优化实操指南
这是一份基于最新技术的智能教育在线实验室设备管理与实验资源优化的实操指南,涵盖系统搭建、核心功能实现及优化策略。采用Flink实时处理、Kafka消息队列、Elasticsearch搜索分析和Redis缓存等技术栈,结合强化学习动态优化资源调度。指南详细描述了开发环境准备、基础组件部署、数据采集与处理、模型训练、API服务集成及性能调优步骤,支持高并发设备接入与低延迟处理,满足教育机构数字化转型需求。代码已提供下载链接,助力快速构建智能化实验室管理系统。
177 44
|
6月前
|
资源调度 安全 Java
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
166 1
|
7月前
|
存储 人工智能 Java
打乱数组内容引发的问题( Java)
本文介绍了两种实现数组随机打乱的方法,并深入探讨了Java中原始数据类型与对象类型的差异。方法一通过自定义随机数交换数组元素位置,方法二借助`Collections.shuffle()`函数完成数组打乱。同时,文章详细解析了`int`和`Integer`的区别,包括声明方式、内存占用、初始化以及对象特性等,并讲解了自动装箱与拆箱的功能,帮助读者更好地理解Java的基础知识。
123 0
|
8月前
|
存储 Java 数据挖掘
Java 中数组的多种定义方式
本文深入解析了Java中数组的多种定义方式,涵盖基础的`new`关键字创建、直接初始化、动态初始化,到多维数组、`Arrays.fill()`方法以及集合类转换为数组等高级用法。通过理论与实践结合的方式,探讨了每种定义方法的适用场景、优缺点及其背后的原理,帮助开发者掌握高效、灵活的数组操作技巧,从而编写更优质的Java代码。
406 0
|
9月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
607 1
Java 中数组Array和列表List的转换
|
9月前
|
存储 Java 索引
Java 复制数组
本文介绍了Java中数组的基础知识与常用操作,包括数组的概念、创建、访问元素、遍历、复制、排序和搜索等方法。同时详细讲解了数组的五种赋值方式,并通过代码示例演示了求总和平均值、最大最小值、升序降序排序及Arrays类的常用方法。内容深入浅出,适合初学者学习掌握Java数组的核心功能与应用场景。
127 2