Java程序设计入门教程 -- 一维数组

news/2024/11/17 3:41:39/

目录

一维数组创建

1.声明数组

2.分配数组内存空间

 3.数组元素访问

数组初始化

1.静态初始化

2.动态初始化

一维数组的拷贝

1.数组元素的拷贝

2.数组名的拷贝


一维数组创建

1.声明数组

       声明一个一维数组的方法很简单,格式如下:

               数据类型名[ ]   数组名;   或    数据类型名  数组名[ ];

       若声明一个数组,即先声明数组的数据类型(可以是基本数据类型或者是引用类型),它决定了数组中的每个元素都是该数据类型,再声明数组的名字。

声明一个整型数组a

int[] a; 或 int a[];Student[] aStudent; 或 Student aStu;

2.分配数组内存空间

       声明一个一维数组之后,就可以通过new关键字为其申请分配内存空间,格式为:

                             new  数组类型[数组大小]

        其中[数组大小]是一个整型常量值,可以通过数组属性length来访问。

int[] intArray = new int[5];

        此处定义一个整型数组intArray,其中包含5个元素,每个元素为int类型,共向系统申请20个字节的内存空间。 

 3.数组元素访问

        对于一个已经定义好的大小为N的一维数组,包含了N个同类型的数组元素,对每个数组元素的访问可采用以下格式:

             数组名[元素下标]

其中,元素下标是元素在数组中的位置,为整型值,元素下标的取值范围是[0, N-1]

int[] a=new int[3];   int s1,s2;
a[1]=1;   a[2]=2;
s1=a[1]+a[2];  // s1值为3
s2=a[0]+a[2];  // s2值为2,a[0]虽然未有明确赋值,但具有默认值0
a[3]=3;  // error, 运行时错误,不存在a[3]元素

数组初始化

        一维数组初始化根据实现方式不同,可以分为静态初始化和动态初始化。数组所需的内存空间是在其初始化的时候由系统分配的。

1.静态初始化

        静态初始化,即在声明数组的时候,直接用数据为其赋值,此时数组的大小由初始化数据的个数决定。

int intArray[]={1,2,3,4}; // intArray数组大小为4
String stringArr[]={"abc", "How", "you"};//stringArr数组大小为3

2.动态初始化

        动态初始化,即通过new 关键字为数组申请内存空间并赋值,其中对于类类型数组需要明确数组结构,并为每个数组元素申请空间。

String stringArray[ ]= new String[2]; //确定数组有2个元素
stringArray[0]= new String("abc");//为第一个数组元素分配空间
stringArray[1]= new String("123");//为第二个数组元素分配空间


一维数组的拷贝

        一维数组拷贝这个问题可以分解为两个子问题:
               一是数组元素的拷贝;   二是数组名的拷贝。

        数组元素的拷贝属于值复制,即把数组元素的值作一个完全的复制。

1.数组元素的拷贝

int[] a={1,2,3};
int x=a[1];  // 变量x具有了数组元素 a[1]的完全备份

2.数组名的拷贝

       数组名的拷贝属于地址复制,即把数组首元素的地址复制过去,而数组的实体(各数组元素的值)没有复制过去,这样处理的结果是,两个数组名管理着同一个数组实体空间。

int[] a={1,2,3};
int[] b=a;  // 把数组a的首地址复制给数组b,结果 数组a和b//管理着同一个数组空间,a[i]即为b[i]
b[2]=5;     //等价于执行了a[2]=5


数组遍历

       数组遍历是数组应用中的最基本操作,指的是每一个数组元素至少被访问一次,每次访问的具体操作可以是读取或修改。

       遍历数组首先要知道数组大小,Java提供了length属性方便获取数组大小,格式:        

                 数组名.length

for循环遍历 

利用for循环与数组长度length属性的结合,可以高效地实现数组的遍历。

int[] a=new int[10];
for(int i=0; i< a.length; i++)    a[i]=i;//为每一个a[i]赋值

foreach循环遍历

        自JDK 1.5.0Java提供了增强型for的新特性,称为foreach循环,格式如下:    for (元素类型  临时变量x : 遍历对象obj)

                     {    访问x的语句;    }

foreach循环常用于数组遍历,简单而高效。

int arr[] = {2, 3, 1}; //数组元素arr[0]~arr[2]  
for (int x : arr)//每次循环读取arr[i]的值,并存入变量x且i自增1 System.out.print(x+“ ”); //依次输出数组元素的值:1 2 3

利用foreach输出数组:


http://www.ppmy.cn/news/163721.html

相关文章

ChatGPT下的网站建设会收到哪些影响?

近日&#xff0c;微软发布了人工智能语言模型 ChatGPT&#xff0c;该模型可以理解人类的语言并生成响应式文本。与其他自然语言处理模型不同&#xff0c; ChatGPT具有出色的语言理解能力&#xff0c;并能够生成自然、流畅的文本。 ChatGPT不仅能够回答用户问题&#xff0c;还能…

idea报错class not found

之前代码运行的好好的&#xff0c;突然启动不起来了。报错Application class not found。 解决方案 这种问题一般就是错乱了&#xff0c;直接重来。 1、新建个文件夹&#xff0c;重新clone代码。 2、检查jdk版本是否正确。 3、检查maven版本是否正确。 4、看项目是否设置了so…

解决vue-admin-template刷新侧边栏数据丢失

使用vue-admin-template时&#xff0c;刷新页面侧边栏消失&#x1f612;&#xff0c;仔细查看代码后找到原因&#xff0c;使用的路由与vuex有关&#xff0c;而在刷新页面时vue会重新加载vue实例&#xff0c;vuex中的数据会被初始化&#xff0c;所以看不到侧边栏是因为数据被重置…

把家用的抽油烟机安装在饭店可以吗?

近来&#xff0c;很多小伙伴都在问&#xff0c;“要怎么去饭店的油烟呢&#xff1f;”把家里用的抽油烟机安装到店里可以吗&#xff1f;。但事实上&#xff0c;“抽油烟机”还是远远不够的&#xff0c;必须安装油烟净化器去净化处理油烟&#xff01; 今天小编就为大家介绍一下油…

c语言四舍五入保留小数

c语言四舍五入保留小数 #include<stdio.h>int main() {double sum 0.0;scanf("%lf",&sum);sum (sum*1005)/100.0;printf("%.1lf\n",sum);return 0; }精华在第7行&#xff0c; 举个例子吧&#xff0c; eq&#xff1a;sum 3.6589 sum sum*100…

油烟净化器和抽油烟机是同一种设备吗?

在关于厨房油烟方面&#xff0c;对于不是从事餐饮行业的来说&#xff0c;很多人首先想到的就是抽油烟机&#xff0c;毕竟当今对于厨房环境和健康的重视&#xff0c;大部分家庭厨房都安装了抽油烟机&#xff0c;但是很多人就疑惑了&#xff0c;抽油烟机和油烟净化器是同一种设备…

更智能的烟灶套装,让厨房免受油烟困扰,云米AI油烟机Wing A1体验

这两年智能家电发展的很快,我之前也用过几款,像是冰箱、洗碗机之类的,用起来确实比普通的家电方便,而且很多国产的智能家电品牌还会针对国内用户的使用习惯做出不少优化。前些天为了能让厨房更加干净一些,新装了一款云米AI油烟机Wing A1,这两天试过之后,感觉用起来确实不…

【C语言】计算器

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是謓泽&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5&#xff5e;2…