Java筑基之路:数组的深入了解学习!

news2024/9/22 3:29:36

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥇博主昵称:小菜元

🍟博客主页:小菜元

🥗感谢点赞👍评论🃌

⚇很方便的在线编辑器:Lightly

让我们一起在写作中记录学习吧!

目录

数组的概念

数组的创建步骤

不同维度数组的表达方式以及初始化

单一维度的数组

两维及以上维度数组

创建数组对象,new语句执行步骤

元素赋值方式

数组的遍历

数组的排序

多维数组

第一种方式

第二种方式

第三种方式


数组的概念

数组:是一种数据结构,用来储存同一类型的集合。通过整型索引(index或称为下标)可以访问数组中的每一个值

数组的创建步骤

  1. 声明一个数组类型的引用变量(数组变量)
  2. 使用new语句构造实例并分配内存赋予默认值
  3. 初始化(即设定每一个元素的值)

不同维度数组的表达方式以及初始化

PS:每个数组创建之后的默认值皆为0

单一维度的数组
public class Test {
    public static void main(String[] args){
       int[] arr;       //创建单一的数组并声明类型为int
       arr = new int[3];   //为数组变量arr创建实例,并标明数组的元素有3个
        //也可以将表达方式结合在一起 int[] arr = new int[3];(两种表达方式意思相同)
        int[] ar = {1,2,3}; //int[] ar = new int[]{1,2,3};  两种皆为数组的静态初始化!
    }

}

两维及以上维度数组
public class ShuZu {
    public static void main(String[] args){
        int x[][];
        int [][]c;
        int []v[];  //声明数组变量的时候不能定义数组的长度,否则将会编译错误
    }
}

创建数组对象,new语句执行步骤

  1. 在堆区为数组分配内存空间,例如创建为int类型的数组,那么每个数组元素就占用4字节
  2. 不同类型的数组赋予的默认值都是不相同的,int类型的数组的元素默认值是0(单一维度),boolean类型的数组的默认值为false,String类型的数组默认值为null,两维数组以及以上时数组完整时默认为0,否则会有null具体见后文
  3. 数组长度的确定可以在创建数组的时候进行定义,或者是通过变量来确定数组长度(数组的长度可以为0)
  4. 对于Java程序入口方法中的main(String[] args)当没有数组长度时,数组长度默认为0
public class ShuZu {
    public static void main(String[] args){
        int[] arrs = new int[100];
        System.out.println(arrs[0]);    //输出arrs数组的第一个元素默认值

        boolean[] ary = new boolean[100]; 
        System.out.println(ary[0]);

        int[][] ars = new int[100][100];
        System.out.println(arrs[0]);    //输出arrs数组的第一个元素默认值
    }
}
public class ShuZu {
    public static void main(String[] args){
      /*  int[] arrs = new int[100];
        System.out.println(arrs[0]);    //输出arrs数组的第一个元素默认值

        boolean[] ary = new boolean[100]; 
        System.out.println(ary[0]);

        int[][] ars = new int[100][100];
        System.out.println(arrs[0]);    //输出arrs数组的第一个元素默认值 */
        System.out.println(args.length);    //通过length方法获得数组长度
    }
}
public class Test {
    public static void main(String[] args){
       int[] arr;       //创建单一的数组并声明类型为int
       arr = new int[3];   //为数组变量arr创建实例,并标明数组的元素有3个
       int[] x = arr;
       arr = new int[4];
       System.out.println(x[3]);    //将会报错,因为这时数组arr的元素有4个
    }

}
数据类型初始化值数据类型初始化值
byte、short、int、long0booleanfalse
float、double0.0引用数据类型null
char空字符 '/u0000'

元素赋值方式

public class Test {
    public static void main(String[] args){
       int[] arr;       //创建单一的数组并声明类型为int
       arr = new int[]{1,2,3,4};   //表达方式1
       int[] arra = {2,3,4,};   //表达方式2
    }

}

数组的遍历

遍历数组我们可以通过for循环来实现这个功能

public class Test {
    public static void main(String[] args){
       int[] arr;       //创建单一的数组并声明类型为int
       arr = new int[]{1,2,3,4,5};   
       for (int i=0;i<arr.length;i++){
           System.out.println(arr[i]);
       }
    }

}

数组的排序

在进行数组的排序时,我们要用到我们平常最常用的---冒泡排序,他的方法就是将前后的数值进行比较,将大的数值放到后面,以保证从后往前是逐渐变小的!

public class Test {
    public static void main(String[] args){
       int[] arr;       //创建单一的数组并声明类型为int
       arr = new int[]{9,8,3,5,2};
       System.out.print("冒泡排序前:");  
       printArray(arr);         //打印数组
       bubbleSort(arr);         //调用排序方法
       System.out.print("冒泡排序后");
       printArray(arr);         //运行结束打印
       }
    //定义打印数组方法
    public static void printArray(int[]arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"");  //打印元素和空格
        }
        System.out.print("\n");
    }
    public static void bubbleSort(int[] arr){
        //外层的循环
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                //比较相邻元素并且交换
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            System.out.print("第"+(i+1)+"排序后:");
            printArray(arr);
        }
        }
    }

多维数组

第一种方式
int[][] arr = new int[3][4];
//高为3,长为4的矩形数组
第二种方式
int[][] arr = new int[3][];
//类似于梯形
第三种方式
int[][] arr = {{1,2},{2,3,4}};

好了今天的数组相关知识学习就到此结束了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科技温柔拥抱梦乡!康姿百德柔压磁性枕舒适与科技的甜蜜邂逅

解锁未来睡眠新姿势&#xff01;康姿百德柔压磁性枕&#xff0c;科技护航每一夜好梦 在现代家居产品的设计中&#xff0c;科技与舒适性的结合越来越受到人们的关注。康姿百德柔压磁性枕正是一款将科技与舒适结合的产品&#xff0c;为现代生活注入了新的活力。 康姿百德柔压磁性…

【发邮件】 在邮件中添加 (mailto:) 链接的返回电子邮件

&#x1f433;打工人给导师发邮件&#xff0c;注意格式中学到的一个东西&#xff0c;记录一下 发送邮件想达到点击这个邮件就能到收件人的位置&#xff0c;不用跳转。 也就是你点击这个邮件 就能直接给你蹦到发送这个人&#xff0c;然后直接发送 只需要在邮件那个位置 加入超…

语言大模型的分布式训练与高效微调指南

最近语言大模型&#xff08;LLM&#xff09;异常火爆&#xff0c;一个非常特别的开源社区正在探索在消费级硬件上微调、提供服务和进行推理的最佳方式。为满足上述需求&#xff0c;出现了许多出色的开源代码库&#xff0c;以HuggingFace生态系统为中心&#xff0c;这些代码库还…

【干货】看看我司消息队列用啥,全网最接地气pulsar教程(含业务解耦demo源码)

前言 &#x1f34a;缘由 消息队列一出手&#xff0c;pulsar就知有没有 &#x1f423;闪亮主角 大家好&#xff0c;我是JavaDog程序狗 今天跟大家分享pulsar&#xff0c;一个分布式的消息发布/订阅传递平台。 本狗以身入局&#xff0c;将pulsar的使用场景&#xff0c;结合实…

【flask框架搭建服务器demo】Python 使用轻量级 Flask 框架搭建 Web 服务器可视化数据库数据demo

本文适合刚入门flask框架用来熟悉项目的开发人员&#xff0c;关于flask框架的组成概念一些用法请参考下面的文章 https://blog.csdn.net/qq_47452807/article/details/122289200 本文主要给出一个可视化sqlite数据库数据的demo&#xff0c;先展示一下效果&#xff1a; 主要的…

前端速通面经八股系列(二)—— HTML篇

HTML高频面经八股目录 1. src和href的区别2. 对HTML语义化的理解3. DOCTYPE(⽂档类型) 的作⽤4. script标签中defer和async的区别5. 常⽤的meta标签有哪些6. HTML5有哪些更新1. 语义化标签2. 媒体标签3. 表单4. 进度条、度量器5.DOM查询操作6. Web存储7. 其他 7. img的srcset属…

Python 图像处理进阶:特征提取与图像分类

特征提取 特征提取是计算机视觉中的一个重要环节&#xff0c;它可以从图像中提取出有助于后续处理的特征&#xff0c;比如用于识别和分类的关键点、纹理等。常见的特征提取方法包括SIFT、SURF和ORB等。 SIFT&#xff08;尺度不变特征变换&#xff09; SIFT是一种用于检测图像…

Web-ssrfme--redis 未授权访问攻击

目录 1、题目源码 2、测试ssrf 3、发现主机 4、发现服务 5、redis 未授权访问攻击 6&#xff0c;拿flag 1、题目源码 <?php highlight_file(__file__); function curl($url){ $ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER…

用Maven开发Spring Boot 项目

一、初识 Spring Boot Spring Boot框架是一 套开源的后台开发框架&#xff0c; 继承了Spring MVC框架的前辈SSM框架的优秀特性&#xff0c;通过注解大幅减少程序员写配置的工作量。从企业开发角度来看&#xff0c;它提供了自动化配置&#xff0c;内嵌容器和兼容Maven等核心功…

银河麒麟桌面操作系统V10:如何快速将应用固定到任务栏?

银河麒麟桌面操作系统V10&#xff1a;如何快速将应用固定到任务栏&#xff1f; 1、图形界面方法2、命令行方法2.1 固定应用2.2 取消固定 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟V10中&#xff0c;/usr/share/applications…

Vue 绘制圆形 上下左右

效果图 代码&#xff1a; <div style"transform: rotate(45deg)"><div id"top"><div id"top-left" click"addformData(true, form.lat, 0.000003, lat)"><ArrowUpBold style"height: 25px; width: 25px; tr…

winform 实现优美的进度条 包含百分比

winform 原生控件中包含进度条控件 ProgressBar。 但这个控件并没有告诉我们如何在上面实现 显示百分比进度的方式&#xff0c;或者说根本就不支持。但没 有百分比显示的进度条是没有灵魂的&#xff0c;可能是有点让人一头雾水的。 还好我们可以通过实现 ProgressBar 的 OnP…

海康VisionMaster使用学习笔记18-常见问题排查

常见问题排查思路 常见问题排查方法-安装阶段 常见问题排查方法-启动阶段 常见问题排查方法-使用阶段 常见问题排查方法-相关资料

outlook在“对我发送的邮件应用规则”时只能移动邮件副本的问题和解决方案

outlook在“对我发送的邮件应用规则时”只能移动邮件副本的问题 问题描述问题的解决方案第一步第二步 其他说明参考 问题描述 如果我们想对自己发送的邮件进行分类&#xff0c;可以使用规则将已发送的邮件移动到指定文件夹中&#xff0c;但是。当操作对象为“自己发送的邮件时…

运维学习————LVS集群和Keepalived+LVS高可用

目录 官网&#xff1a;LVS中文官网 一、概念 二、组成及软件工作层次图 ​编辑 三、整体架构 四、名词解释 五、三种工作模式 1、LVS-NAT 2、LVS-TUN 3、LVS-DR 六、DR模式的实现 1、克隆出LVS&#xff0c;配置虚拟IP 2、配置Nginx的虚拟IP Nginx1的配置 Nginx2…

Linux的一些实例

# 1.编写脚本&#xff0c;让用户输入firstname和lastname&#xff0c;最后在屏幕上显示your full name is&#xff1a; #!/bin/bash read -p "please input firstname:" var1 read -p "please input lastname:" var2 echo "your full name is:$var1…

【机器学习】线性回归的概念以及如何从最小二乘法推导到正规方程和实际线性回归实例(含python代码)

引言 线性回归是一种广泛应用于统计分析、经济预测、机器学习等领域的建模方法。它旨在通过自变量&#xff08;解释变量&#xff09;来预测因变量&#xff08;响应变量&#xff09;的值 文章目录 引言一、线性回归的概念1.1 线性回归的基本概念1.2 最小二乘法1.2.1 最小二乘法的…

来了!!!来了!!!--我需要在Docker中运行Java应用程序,但是没有Docker经验,你能给我一个简单的入门指南吗?

在Docker中运行Java应用程序的简单入门指南&#xff1a; 1.安装Docker 首先&#xff0c;确保你的系统上安装了Docker。你可以从Docker官网下载并安装适合你操作系统的Docker版本。 Windows10 安装 Docker&#xff0c;每个步骤作者亲测&#xff0c;细节记录最全教程 2. 编写D…

Sublime Text 配置 Terminal (CMD)

1. 安装package 按住 【ctrlshiftp】 , 在弹出的输入框中输入“install”&#xff0c;选择“install package”,回车,等待20秒左右 2. 安装terminal 按住 【ctrlshiftp】 , 在弹出的输入框中输入“install”&#xff0c;选择“install package”,回车,等待新弹窗出来&#…