当前位置:首页 > 生活百科

java创建数组的几种方式(java编写图形界面程序)

栏目:生活百科日期:2024-12-20浏览:0

数组是具有相同数据类型的一组数据的集合,作为对象允许使用new关键字进行内存分配。首先先来熟悉一下一维数组的创建和使用。

声明一维数组,有下列两种方式:

数组元素类型 数组名字[];

数组元素类型[] 数组名字;

数组元素类型据定了数组的数据类型,它可以是java中任意的数据类型,声明一维数组,如:int arr[]; String str[]; int arr[]是声明int型数组,数组中的每个元素都是int型数值,同理,str[]数组中的每个元素都是String类型。

注:Java语言中声明数组时不能指定其长度(数组中元素的个数),这是因为数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定一个了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。而且由于定义数组仅仅只是定一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。

为数组分配内存空间的语法格式如下:

数组名字=new 数组元素的类型[数组元素的个数];

例如,arr=new int[5];也可以在声明数组的同时为数组分配内存,例如:int arr[]=new int[5];

附:一旦使用new关键字为数组分配了内存空间,每个内存空间存储的内容就是数组元素的值,也就是数组元素就有了初始值,即使这个内存空间存储的内容是空,这个空也是一个值null。也就是说不可能只分配内容空间而不赋初始值,即使自己在创建数组对象(分配内容空间)时没有指定初始值,系统也会自动为其分配。

附:诸如基础数据类型的包装类,其默认的初始化值均为null,因为基础数据类型的包装类创建的数组属于引用数组(对象数组),对象数组默认的初始化值都是null。

理解了一维数组的声明和创建,二维数组的声明和创建大同小异。二维数组的声明,int arr[][];二维数组常用于表示表,第一个下标表示行,第二个下标表示列。直接为二维数组分配内存,方法如下:a=new int[2][4];

为数组分配内存之后,就要学习如何初始化数组了。一维数组的初始化形式有两种:

int arr[]=new int[]{1,2,3,4};

或 int arr[]={1,2,3,4};

二维数组的初始化方法: int myarr[][]={{12,2},{43,45}}; 注意,写成intmyarr[][]={12,2,43,45}是错误的。

接下来,通过两段小的代码来解释如何使用一维数组和二维数组。

第一个例子是使用一维数组将1~12月各月的天数输出。代码如下:

public class shuZu{ public static void main(String&[] args){   int day&[]=new int&[]{31,28,31,30,31,30,31,31,30,31,30,31};   for (int i=0;i&<12;i++){     System.out.println((i+1)+"月有"+ day&[i]+"天");     }       } }

第二个例子是使用二维数组将数组中的元素输出。代码如下:

public class shuZu{public static void main(String args&[]){ int arr&[]&[]=new int&[]&[]{{1},{2,3},{4,5,6}}; for(int i=0;i&<arr.length;i++){   for(int j=0;j&<arr&[i].length;j++){     System.out.print(arr&[i]&[j]);     }     System.out.println();   } } }

简单介绍了一下数组的基本内容,接下来讲解一下经典的数组冒泡排序算法。

冒泡排序原理:相邻的两位数做比较,1和2比较 2和3比较 3和4比较 4和5比较,这样依次比较,如果前面的数小于后面的,不做操作,如果前面的数大于后面的数则调换两个数字的位置,列1&>2 则数字顺序为2 1(注:此时的1 2 3 4 5代表索引而不是数组),所以一层循环能挑出一个当前数组参与比较数字中的最大的数字,并将其排到数组的最末尾。
但是一层循环根本不够用,只能挑选出一个最大数,数组中其他的数字还没有正确排序。
这里遵循一个原理就是数组里面有length个数字,要进行length-1次循环。至于为什么要this.length-i,是因为第一次比较7个数字,第二个只要比较前6个就行了,第7个肯定是最大的了。这里要着重强调为什么会有2个for循环,为什么要用this.length-i。

下面用一个例子来做详细的说明:

var array = &[8,7,9,2,3,5,6,1]; var temp = 0; function sort(arr){    for (var i = 0; i &< arr.length; i++){     //这里的i控制循环比较的次数       for (var j = 0; j &< arr.length - i; j++){      //这里的j控制参与比较的数字个数,因为每比较一次都会产生一个最大的数字,      //那么下次比较的时候就没必要参与比较了,所以每比较一次都会减少一个数字          if (arr&[j] &> arr&[j + 1]){               temp = arr&[j + 1];               arr&[j + 1] = arr&[j];               arr&[j] = temp;                 }    }  } } console.log('before: ' + array);//输出&[8,7,9,2,3,5,6,1] sort(array); console.log(' after: ' + array);//输出&[1,2,3,5,6,7,8,9]
var array = &[8,7,9,2,3,5,6,1]; var temp = 0; function sort(arr){    for (var i = 0; i &< arr.length; i++){     //这里的i控制循环比较的次数       for (var j = 0; j &< arr.length - i; j++){      //这里的j控制参与比较的数字个数,因为每比较一次都会产生一个最大的数字,      //那么下次比较的时候就没必要参与比较了,所以每比较一次都会减少一个数字          if (arr&[j] &> arr&[j + 1]){               temp = arr&[j + 1];               arr&[j + 1] = arr&[j];               arr&[j] = temp;                 }    }  } } console.log('before: ' + array);//输出&[8,7,9,2,3,5,6,1] sort(array); console.log(' after: ' + array);//输出&[1,2,3,5,6,7,8,9]
var array = &[8,7,9,2,3,5,6,1]; var temp = 0; function sort(arr){    for (var i = 0; i &< arr.length; i++){     //这里的i控制循环比较的次数       for (var j = 0; j &< arr.length - i; j++){      //这里的j控制参与比较的数字个数,因为每比较一次都会产生一个最大的数字,      //那么下次比较的时候就没必要参与比较了,所以每比较一次都会减少一个数字          if (arr&[j] &> arr&[j + 1]){               temp = arr&[j + 1];               arr&[j + 1] = arr&[j];               arr&[j] = temp;                 }    }  } } console.log('before: ' + array);//输出&[8,7,9,2,3,5,6,1] sort(array); console.log(' after: ' + array);//输出&[1,2,3,5,6,7,8,9]

“java创建数组的几种方式(java编写图形界面程序)” 的相关文章

B站35岁女副总裁被曝和24岁UP主结婚(身价80亿)

近日,有网友爆料称,B站35岁女副总裁李旎和24岁的UP主“老坛胡说”结婚了,并且已经办了婚礼。据相关资料介绍,“老坛胡说”本名叫谭成锋,今年24周岁,是一位美...

如何做亚马逊站内广告,亚马逊站内广告类型介绍

对于大部分卖家来说,在亚马逊的运营中,站内广告是必不可少的推动产品销量上升和成为爆款的工具。亚马逊在站内广告的投放上有两种投放方式:自动广告和手动广告。有不少卖...

如何做好aso优化,aso优化方案分享

提纲1.什么是ASO优化2.如何做好基础的ASO数据优化—keywords一、ASO优化是什么?1.ASO是什么?如上图,AppStore的分发量主要分布于:推...

seo查询是什么,一文带你快速了解其概念

一、什么是SEOSEO称为搜索引擎优化,其目的是为了提高自己的网站在自然搜索中的排名,同时扩大搜索结果实现更大范围的品牌曝光,为网站提供生态市的自我营销解决方案...

mysql每天自动备份脚本(服务器文件备份到本地)

很多人会问为什么要使用Svn或者是Git,那么我会问:我相信你写的代码很好,但是有一天你修改了很多很多的Bug,但是突然想到以前的代码中有一个比较重要的算法你不...

pdf合并软件哪个好用,pdf分割合并工具排行榜

如何合并多个PDF文件?工作中的项目文件总是多且杂,整理它们的一个简便办法就是将文件合并起来。如果这些文件是PDF格式,你知道该怎么去合并它们吗?PDF文件合并...

亏损财报:新东方在线曲折的中场战事

配图来自Canva近日,被俞敏洪认为是“病树前头万木春”的新东方在线发布了,截止至2020年5月31日的年度业绩报告。只是,在疫情期间就大热的在线教育里,被视为...

微信好友找回方法,教你如何不花钱恢复微信好友

微信好友误删除,一时生气把微信好友删除了,结果又想要找回来,但是又记不得对方微信号和电话号,只能瞪着手机傻傻发呆,内心一阵恶龙咆哮、自我嫌弃。如果自己记得对方微...

屈臣氏值得买33个好货花皙蔻(花皙蔻护肤品体验分享)

这年头,小红书都快成了种草标配。资深修仙党的小编在刷小红书时,意外发现一款熬夜精华居然霸屏了。动则上万的点赞数,加上发布笔记的网友还挺多,并且朱正廷都推过好几次...

公众号数据采集平台,公众号发布数量统计报告分析

运营公众号通常会进行数据分析,但把后台的数据复制粘贴,把那些能人看得到的数据写出来,这样也没什么意义,重要的是挖掘数据背后的信息,从而对运营进行有效的指导。记得...