Java——数组

一:数组

(1)数组的定义(声明):

数据类型 [ ]         数组名

int [ ]   a (比较规范) ;         int    [ ] a   ;         int      a [ ] (我个人常用);

(2)数组的初始化:

静态初始化:

        int [ ]   array = new int [ ]{ 11,13,16,27,39 } ; // new 关键字开辟一段 int 类型的地址空间 ;

        int [ ]   array = { 11,14,15,19,34 } ;// 当然 由于等号左边已经声明一个 int 类型的数组,名字为array,等号右边的 new int 可以省略;

动态初始化:

        有长度,无元素(其实有元素,是该数据类型的默认值);

        如 int [ ] a = new int [4] ; 

(3)异常—运行时

ImputMisMatchException                      输入类型不匹配;

ArrayIdexOutOfBoundsException          数组索引越界;

NegativeArraySizeException                 数组长度异常;
 

(4)增强/加强 for 循环

for ( 定义的变量(接受数组元素 ) :   遍历的数组名  ){                } ;

class StrongerFor{
    public static void main(String [] args){
        int[] array={11,14,15,99,43,9};
        for(int s:array){
            System.out.println(s);
        }
    }
}

普通 for 循环与加强 for 循环的比较:

普通 for 循环:

        优点:既可以取值也存值;可以根据 索引 找到特定位置的元素;

        缺点:循环条件三个,比较麻烦;

增强 for 循环:

        优点:循环条件简单,只有 定义的接受数组元素的变量 和 遍历的数组名;

        缺点:只能取值,不能存值;不能 根据索引 找到特定位置的元素;
 

(5)引用类型 与 基本类型 存储 与 传递 的区别

下面 通过举例 进行说明 :

基本类型:

class Distinct{
    public static void main(String [] args){
            int a=99;
            int b=a;
            b=100;
            System.out.println(b);
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14451:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.DistinctBasic
100

引用类型:

class DistinctCite{
    public static void main(String [] args){
        int[] a={10,20,30,60};
        int[] y=a;
        y[0]=100;
        System.out.println(y[0]);
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14389:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.DistinctCite
100

Process finished with exit code 0

  下面我们来详细解释:

对于基本数据类型:

        int a=99;在栈内存开辟一个int 类型的空间,命名为 a,再将常量池中的99复制到a中;

        int b=a;在栈内存开辟一个int类型的空间,命名为b,再将a中的内容复制给b;

        b=100,将常量池中的100赋值给b,由于变量中只能容纳一个数据,因此,100替换掉a;

对于基本引用类型:

        int[ ]  a = { 10,20,30,60 } :再栈内存中开辟一个int类型的空间,命名为 a,由于只能存放一个数据,需要在堆内存中开辟一组连续的空间存放 10,20,30,60,这时只需要将首元素的地址复制到数组 a 中即可,即 数组 a 中存放的是首元素的地址;

        int [ ]  y = a :在栈内存中开辟一个 int 类型的空间,命名为 b,将 数组 a 中的内容,即首元素地址复制给 b 即可,b 通过首元素地址就可以找到其他元素;将常量池中的 100 复制到 y[0] 中,替换掉原来的 10 ;

总结:

        变量都存储在栈内存中;

        变量可以存储基本数据类型,也可以存储引用数据类型;

        存储基本数据类型时,一个变量的值发生改变,另一个变量的值不会发生改变;

        存储引用数据类型是,一个变量的值发生改变,另一个变量的值也会发生改变;

(6)案例:

创建一个长度为 50 的数组,存储 1~100 以内的偶数并输出;

class StockArray{
    public static void main(String [] args){
        int[] array=new int[50];            //动态初始化创建数组
        int s=0;                            //变量标记

        for(int a=0;a<array.length;a++){    //存储数据
            array[a]=a*2+2;
        }

        for(int output:array){              //增强for循环输出
            System.out.print(output+"\t");
            s++;
            if(s==5){                       //控制输出格式
                System.out.println("\n");
                s=0;
            }
        }
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=2498:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.StockArray
2	4	6	8	10	

12	14	16	18	20	

22	24	26	28	30	

32	34	36	38	40	

42	44	46	48	50	

52	54	56	58	60	

62	64	66	68	70	

72	74	76	78	80	

82	84	86	88	90	

92	94	96	98	100	


Process finished with exit code 0

好了,今天就分享到这里了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(4)传输层

1.TCP/UDP区别 2.TCP流量控制P60 3.TCP拥塞控制P61 实际曲线尽量接近理想曲线 4.TCP超时重传时间的选择P62 5.TCP可靠传输的实现P63 6.TCP连接管理 建立 释放 7.TCP报文段的首部格式P66

LeetCode题练习与总结:柱状图中最大的矩形--84

一、题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a…

【分布式系统】FLP、CAP、BASE、ACID理论简介

分布式系统一致性模型 在说FLP&#xff0c;CAP&#xff0c;BASE&#xff0c;ACID理论前&#xff0c;必须先说说分布式系统的一致性模型&#xff0c;它是其他理论的基础知识。 依次介绍几个相关的概念&#xff1a; 分布式系统是由多个不同的服务节点组成&#xff0c;节点与节…

Java将文件目录转成树结构

在实际开发中经常会遇到返回树形结构的场景&#xff0c;特别是在处理文件系统或者是文件管理系统中。下面就介绍一下怎么将文件路径转成需要的树形结构。 在Java中&#xff0c;将List<String>转换成树状结构&#xff0c;需要定义一个树节点类&#xff08;TreeNode&#…

【linux】初步认识文件系统

初步认识文件系统 前置知识的简单了解简单回顾C语言的文件操作stdin&stdout&stderr 系统文件IOopen函数的返回值文件描述符fd打开文件背后的操作文件描述符的分配规则 前置知识的简单了解 文件包括了文件内容和文件属性两个部分(文件内容顾名思义就是文件里面的数据等…

VBA 读取sheet页中的指定区域数据,生成CSV文件

⏹待生成数据的sheet页 ⏹VBA代码 CreateObject("ADODB.Stream")&#xff1a;Microsoft ActiveX Data Objects (ADO) 库中的一个对象&#xff0c;用来处理文件的读写操作。Application.PathSeparator&#xff1a;系统默认的分隔符。Const startRowNum 4&#xff1a…

OpenCV(四)—— 车牌号识别

本节是车牌识别的最后一部分 —— 车牌字符识别&#xff0c;从一个完整的车牌图片到识别出车牌上的字符大致需要如下几步&#xff1a; 预处理&#xff1a;将车牌图片灰度化、二值化&#xff0c;并去除识别时的干扰因素&#xff0c;比如车牌铆钉字符分割&#xff1a;将整个车牌…

for循环赋值

在for循环内将i赋值给j的问题 for(int i0,ji1;i<5;i){//此时j只会等于1cout<<"i-"<<i<<" j-"<<j<<endl; }如图&#xff1a; 将j放入循环体后没问题 for(int i0;i<5;i){int j i1; cout<<"i-"<<…

关于一个error C2664错误代码的解析

具体错误信息如下所示&#xff1a; error C2664: “osgEarth::UID osgEarth::Util::ShaderFactory::addPreProcessorCallback(osg::Referenced *,std::function<void (std::string &,osg::Referenced *)>)”: 无法将参数 2 从“osgEarth::Util::PbrLightEffect::att…

40 生产者消费者模型

生产者消费者模型 概念 为何要使用生产者消费者模型&#xff0c;这个是用过一个容器解决生产者和消费的强耦合问题。生产者和消费者之间不需要通讯&#xff0c;通过阻塞队列通讯&#xff0c;所以生产者生产完数据之后不用等待消费者处理&#xff0c;直接扔给阻塞队列&#xf…

41.WEB渗透测试-信息收集-域名、指纹收集(3)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;40.WEB渗透测试-信息收集-域名、指纹收集&#xff08;2&#xff09; 关于oneforall的安装…

DRF视图源码分析

DRF视图源码分析 1 APIView class GenericAPIView(APIView):pass # 10功能class GenericViewSet(xxxx.View-2个功能, GenericAPIView):pass # 5功能能class UserView(GenericViewSet):def get(self,request):passAPIView是drf中 “顶层” 的视图类&#xff0c;在他的内部主要…

SpringBoot+阿里云实现验证码登录注册及重置密码

开通阿里云短信服务 阿里云官网 创建API的Key 可以使用手机号或者刷脸来进行创建Key 创建成功 开通完成以后接下来实现代码请求阶段 配置maven依赖 <!-- 阿里云 oss 短信 依赖--><dependency><groupId>com.aliyun</groupId><artifactId>dysm…

Python的使用

1、打印&#xff1a;print&#xff08;‘hello’&#xff09; 2、Python的除法是数学意义上的除法 print&#xff08;2/3&#xff09; 输出&#xff1a;0.6666... 3、a18 a‘hello’ print(a) 可以直接输出 4、**2 表示2的平方 5、打印类型 print&#xff08;type&am…

【深度学习】第二门课 改善深层神经网络 Week 1 深度学习的实践层面

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;深度学习 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对…

R语言学习—6—多元相关与回归分析

1、引子 xc(171,175,159,155,152,158,154,164,168,166,159,164) #身高 yc(57,64,41,38,35,44,41,51,57,49,47,46) #体重 par(marc(5,4,2,1)) #设定图距离画布边缘的距离&#xff1a;下5&#xff0c;左4&#xff0c;上2&#xff0c;右1 plot(x,y) 2、相关…

【华为 ICT HCIA eNSP 习题汇总】——题目集20

1、&#xff08;多选&#xff09;若两个虚拟机能够互相ping通&#xff0c;则通讯过程中会使用&#xff08;&#xff09;。 A、虚拟网卡 B、物理网卡 C、物理交换机 D、分布式虚拟交换机 考点&#xff1a;数据通信 解析&#xff1a;&#xff08;AD&#xff09; 物理网卡是硬件设…

webpack 常用插件

clean-webpack-plugin 这个插件的主要作用是清除构建目录中的旧文件&#xff0c;以确保每次构建时都能得到一个干净的环境。 var { CleanWebpackPlugin } require("clean-webpack-plugin") const path require("path");module.exports {mode: "de…

docker 基础命令

docker 安装 更新系统 sudo apt update sudo apt -y dist-upgrade安装docker sudo apt-get -y install ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/…

数据结构——链表(精简易懂版)

文章目录 链表概述链表的实现链表的节点&#xff08;单个积木&#xff09;链表的构建直接构建尾插法构建头插法构建 链表的插入 总结 链表概述 1&#xff0c;链表&#xff08;Linked List&#xff09;是一种常见的数据结构&#xff0c;用于存储一系列元素。它由一系列节点&…