首页 > 编程语言 >Java基础----数组

Java基础----数组

时间:2022-11-06 16:11:07浏览次数:68  
标签:Java Arrays 元素 ---- 循环 数组 类型 排序

什么是数组

数组就是一串数字,一下子可以定义多个值

格式:数组类型  变量名称 = 变量值(可能不对 具体看代码)

平时总要int i = 0.....有了数组可以直接int[ ] b = new int[10]

数组类型

数组后面要加上“[ ]”这个符号 什么类型就在类型后面加上这个符号 例如: int[]  double[]

数组是从0开始 第一个数的位置为0 不要直接拿1 1是第二个值了

 

 

小问题:拿上面的值计算所有元素的和

 

 

静态初始化

静态数组是直接在变量名字后面赋值 (创建+初始化)

 

 

动态初始化

 

 

 

 

内存分析:如下图:

 

 数组的四个基本特点

1.长度是确定的 一旦创建不能改变

2.元素必须相同类型,不允许出现混合类型

3.数组中的元素可以是任何数据类型,包括基本类型和引用类型

4.数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

   数组本身就是对象,java中的对象是在堆中的,因此数组无论保存原始类型还是其他对象类型

 

数组的使用

1.打印全部的数组元素

2.计算所有元素的和

3.查找最大数

 

 

二维数组

二维数组就是在一个数组中再创建一些数组 可以一直重复下去

二维就是例如array[0] 在这个数组里面可以分为array[0][0],array[0][1] 这样再array[0]里面就有两对数组

这就被称为二维数组 可以以此内推

 

 

 

 

Arrays类

为什么要有这些类呢 主要是为了不要重复造轮子 可以直接调用就不用手写逻辑了

1.arrays打印数组元素可以直接这样写

sout(Arrays.toString(a))

2.数组排序

Arrays.sort(a);//这里让他进行排序

sout(Arrays.toString(a));

Array类中有很多可以使用不止于打印与排序

冒泡排序 

 

第一个for循环决定判断总排序次数

数组长度-1 判断总循环次数

外层循环的作用是:

提取出目前未排序数组中最大的数,放置于已排数据的左边。也就是说我们第一次外层循环,是把最大数的位置交换到数组的最右边,第二次外层循环是把次大数交换到数组的次右边,依次类推。

为什么外层循环判断条件是i<n-1呢?

n 个数字总共需要 n-1 趟排序,i < n-1,外层循环变量 i 从 0 到 n-1 前一位 正好是 n-1 次。

 

第二个for循环为一次循环换位置次数

一次排序中的换位置次数 ( <n-1-i)  

内层循环的作用是:

实现我们想要的大数下沉的过程。每次比较的是相邻两个数据,所以数组的长度n,我们只需要做 n-1 次的比较,就可以实现大数下沉,而 之前循环已经沉淀的大数并不需要再进行 排序了。

为什么内层循环判断条件是j < n-i-1呢?

这要从冒泡排序原理说起:冒泡排序每循环排序一次,就把最大的一个数排在了最右边(默认升序排),每一次排序都是在上一次排序的基础上再排序,(比如)第2次排序之后,i已经成2了,第三次排序是要在第二次的基础上在进行排序,而第二次排序后就已经把两个最大的数已经放到最后了,所以第三次排序就不需要在去比他俩,就得把这个“2“减掉,只需要循环n-i次(此时的i是2);为什么-i之后还要-1呢? 这是因为在内层循环的判断中是把当前值和后面一个值做比较的。如果不减1,则当循环到最后一个值的时候,再取下一个值就取不到,就需要额外的操作,或者抛出数组下标越界的异常。

 

标签:Java,Arrays,元素,----,循环,数组,类型,排序
From: https://www.cnblogs.com/wmyk/p/16849530.html

相关文章

  • Caused by java.io.EOFException SSL peer shut down incorrectly
    错误信息:javax.net.ssl.SSLHandshakeException:Remotehostclosedconnectionduringhandshakeatsun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1......
  • linux部署项目,日志显示发布成功却无法访问的问题
    1.排查是否主程序是否运行成功,可以telnet一下tomact的ip+端口,如果telnet成功就说明成功运行,获取tomcat端口的方法1.首先通过命令:ps-ef|greptomcat获得进程号2.再通过......
  • 机器学习环境的搭建
    一.安装python,anaconda,vscode1.安装python(1)安装python进入Python的官网,http://www.python.org/download/,选择合适的python版本进行安装我安装的是python3.8.8,可......
  • 000005 PHP 算术运算符
    <?phpheader('Content-Type:text/html;charset=utf-8');include'./assets/php/head.php';//算术运算符/***+$a:标识;根据情况将$a转化为int或float。*-$a:取反;$......
  • Java订单号生成,唯一订单号(日均千万级别不重复)
    参考声明:https://www.bbsmax.com/A/pRdBBLWGdn/java订单号生成,唯一订单号相信大家都可以搜索到很多的订单的生成方式,不懂的直接百度。。1.订单号需要具备以下几个特......
  • Linux 配置Tomcat
    参考声明:https://blog.csdn.net/qq_57389269/article/details/1262392611、下载并上传Tomcat压缩包官网:ApacheTomcat®-Welcome!2、解压至/usr/local/tomcat下......
  • argoCD 部署及常用功能和原理
    argoCD应用官方参考链接:https://artifacthub.io/packages/helm/argo/argo-cdhttps://argo-cd.readthedocs.io/en/stable/k8s集群版本v1.23.5部署方式根据官方的的部......
  • 正方形
    方法一:n=int((input(“请输入数字:”)))print("*"*n)foriinrenge(n-2)print("*"+" "*(n-2)+“*”)print(“*”*n)方法二:n=5foriinrange(n):......
  • 题解 [ABC259Ex] Yet Another Path Counting
    首先,每种颜色互不干扰,因此考虑对每种颜色统计答案。有两种解法:枚举起始格子\((x,y)\)和结尾格子\((z,w)\),由组合数易知共有\(\binom{z-x+w-y}{z-x}\)种路径。时间......
  • 第六周总结
    第六周总结面向对象与类面向对象概述面向对象可以说是一种编程思想,我们之前所学习的变成可以称之为面向过程编程,就是按照流程一步一来,但是面向对象不是。首先面向对象在......