java中的数组_Java中的数组
数组是在内存中存储相同数据类型的连续的空间
声明一个数组就是在内存空间中划出一串连续的空间
数组名代表的是连续空间的首地址
通过首地址可以依次访问数组所有元素
元素在数组中的排序叫做下标从零开始
数组的使用
数组长度一旦声明,不可改变不可追加
声明一个int类型的数组
int[ ] arr; 或int arr[ ]
给数组分配空间
arr=new int[5];
给数组赋值
arr[0]=1; 0代表的是数组的第1个元素 ,元素下标为0
arr[1]=1; 1代表的是数组的第2个元素 ,元素下标为1
访问数组数据 ,使用数组下标访问 c=arr[4];
数组声明缩写
int[ ] arr={12,3,4,8,5,6,6,7,8,8,9,8};int [ ] arr1=new int[ ]{12,3,4,8,5,6,6,4};
new int[ ]的[ ]一定不能放内存大小
使用循环给数组赋值
示例为
int[ ] arr=new int[5];for (int i = 0; i < arr.length; i++) {
System.out.println("数组第"+(i+1)+"个值为"+i);
}
使用循环遍历给数组赋值,输出数组
实例为
int[ ] arr={1,3,6,5,6,7,84,55,5};for (intnum:arr) {
System.out.println(num);
}
显示结果为
数组中常用来排序的两种方法
冒泡排序
例子:
public static void main(String[] args) {
实现学生成绩排序并显示学生成绩列表
int [ ] arr = {78,89,67,98,90,56,88};
①
N个数的数组,需要比较N-1轮
for(int i=0; iarr[j]){int temp =arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
②
冒泡排序 升序排列
for(int i=0; iarr[j+1]){int temp =arr[j];
arr[j]= arr[j+1];
arr[j+1] =temp;
}
}
}
二分法排序
二分法查找
int start = 0; //默认起始坐标
int end = arr.length-1; //默认结尾坐标
int index = -1; //找不到默认index为-1
while(start<=end){int middle = (start+end)/2; //计算中间下标
if(num ==arr[middle]){
index=middle;break;
}if(num >arr[middle]){
start= middle + 1;
}if(num
end= middle - 1;
}
} System.out.println(index);
}
}
下面是一些实例.
① 做一个购物清单,手动输入金额,输出是要显示总金额
Scanner in=newScanner( System.in);double sum=0;double[ ] arr=new double[5];for (int i = 0; i < arr.length; i++) {
System.out.print("请输入第"+(i+1)+"笔购物金额:");
arr[i]=in.nextDouble();
sum+=arr[i];
}
System.out.println("序号\t\t 金额");for (int i = 0; i < arr.length; i++) {
System.out.println((i+1)+"\t\t"+arr[i]);
}
System.out.println("总金额:"+sum );
}
显示结果为
②输入四家店的价格,并找出最小价格
Scanner in=newScanner(System.in);int[] arr=new int[4];
System.out.println("请输入四家店的价格");for (int i = 0; i <4; i++) {
System.out.print("第"+(i+1)+"店的价格为:");
arr[i]=in.nextInt();
}for (int j = 0; j < arr.length-1; j++) {if (arr[j]
arr[j+1]=arr[j];
}else{
arr[j+1]=arr[j+1];
}
}System.out.println("最低价格是:"+arr[3]);
}
显示结果为
③将一个数组从小到大排列
int[] arr={56,45,99,82,91,81};intmax;intm;for (int i = 0; i < arr.length-1; i++) {for (int j = 0; j < arr.length-1-i; j++) {if (arr[j]>arr[j+1]) {int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (int a: arr) {
System.out.println(a);
}
}
}
显示结果为
④输入一个数字,在数组中查找,若有输出下标,若没有输出-1
Scanner in=newScanner(System.in);int[] arr={12,34,46,68,32,35,75,48,25};
System.out.println("输入一个数字");int sz=in.nextInt();for (int i = 0; i < arr.length; i++) {if (sz==arr[i]) {
System.out.println("数字下标为"+i);return;
}
}
System.out.println("-1");
显示结果为
⑤编写JAVA程序,实现两个数组的合并,并按升序排列合并后的数组
假定现有两个数组,分别为:
int[ ] arr1={3, 1, 23};
int[ ] arr2={27, 7, 2};
设计程序,将两个数组合并成一个数组,并按升序排列合并后的数组,输出合并前和合并后的数组信息
int[ ] arr1 = {3, 1, 23};int[ ] arr2 = {27, 7, 2};int[ ] arr = new int[arr1.length+arr2.length]; //1. 声明一个数组,长度等于两个数组的长度和
for(int i=0; i
arr[i] =arr1[i];
}for(int i=0; i
arr[arr1.length+i] =arr2[i];
}for(int i=0; i
for(int j=0; j arr[ j+1]){int temp =arr[ j ];
arr [ j ]= arr[ j+1];
arr[ j+1 ] =temp;
}
}
}
System.out.println(Arrays.toString(arr));
显示结果为
⑥用数组,判断一个数字,是不是回文数。
System.out.print("请输入一个数组:");
Scanner in= newScanner(System.in);long num =in.nextLong();long old = num; //暂存num
int count = 0; //num有几位,定义一个几位的数组。 求出num的位数
while(num>0){
num/= 10;
count++;
}int[] arr = new int[count];
count= 0; //不断取出数字的每一位,依次放入数组中
while(old>0){
arr[count]= (int)old % 10;
old/= 10;
count++;
}for(int i=0,j=arr.length-1; i<=j ; i++,j--){ //依次比较数组的首尾。 有任意一位不相等,就不是回文数
if(arr[i] !=arr[j]){
System.out.println("不是回文数");return;
}
}
System.out.println("是回文数");
显示结果为
⑦ 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
//Scanner in=new Scanner(System.in);//设置输入数组//int [] arr;//System.out.println("输入数组");//for (int i = 0; i < arr.length; i++) {//int arr[i]=in.nextInt();
int [ ] arr = {5,3,7,1,0,6,9,2};int max = arr[0] , maxIndex = 0; //找出最大元素的下标
for(int i=0; i
max=arr[i];
maxIndex=i;
}
}if( maxIndex != 0){int temp = arr[0];
arr[0] =arr[maxIndex];
arr[maxIndex]=temp;
}int min = arr[0] , minIndex = 0; //找出最小元素的下标
for(int i=0; iarr[i]){
min=arr[i];
minIndex=i;
}
}if(minIndex != (arr.length-1)){int temp = arr[arr.length-1];
arr[arr.length-1] =arr[minIndex];
arr[minIndex]=temp;
}
System.out.println(Arrays.toString(arr));
}
显示结果为
java中的数组_Java中的数组相关推荐
- java声明和初始化数组_Java 中初始化数组
数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...
- java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...
java中数组的三种定义方式 java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 [java] view plain copy /** * 数组的三种定义方法 * 1.数组类型[] 数组名 ...
- java中什么是数组_JAVA中关于数组的定义
前些日子,有网友问:在JAVA中 int[] a 这样定义的数组和 int a[] 定义的数组有什么区别? 当时没有细看,直接回复说,在JAVA中,两者是一样的,没有区别. 回头仔细看时,还是稍有区别 ...
- java不等长二维数组_Java中关于二维数组的理解与使用
今天练习的时候遇到一个题目,题目需求是这样的: 需求说明: 根据3个班各5名学生某门课程的成绩,正确使用二维数组计算如图所示3个班各自的总成绩 分析: 要实现这个功能需要存储两个信息: 一个是班级信息 ...
- java 数组对象属性数组_Java中数组的特性
数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间.在C,C++等语言中,数组的定义简洁清晰,而在java中确有一些会让人迷惑的特性. ...
- java 声明数组_Java中的数组简介
对于Java来说,如果需要用一种数据结构来保存若干个同类型的元素,那么可以选择使用数组. 所谓数组就是用来保存若干个同类型的数据元素,在Java中也可以认为数据元素就是对象.也就是说,只要给定了一个数 ...
- java 初始化数组_Java中数组的初始化
一.什么是初始化 在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用 ...
- java 如何初始化数组_java中初始化数组的三种方式分别是什么
三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 3.默认初始化:创建之后若不赋值则会被赋对应数据类型的默认值 (视频教程推荐:java视频) 我们来看一下具体代码:publ ...
- java 定义整数数组_JAVA中数组的正确定义方法是什么?
数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素. §5.1一维数组 一.一维数组的定义 type arrayName[]; 其中类型(type)可以为Java中任 ...
最新文章
- APICloud创始人兼CEO刘鑫:论API经济和企业移动战略
- Redis---持久化
- zend studio安装xdebug调试工具
- c语言中memcpy函数_带有示例的C中的memcpy()函数
- layui图片上传按钮按着没反应_关于layui动态生成文件上传按钮后点击无效的解决办法...
- labview 判断整数_labview教程——如何判断字符串包含的是数字
- u 20ubuntu 安装 postfix_惠普ENVY 13-AQ0011TX(6QT48PA)笔记本安装win10教程图解
- Python3自然语言处理(2)——获得文本语料库和词汇资源
- 极简fseek()函数讲解,一分钟掌握
- js给页面添加随机像素噪声背景
- 12w字超全C语言数据结构考研笔记基础知识大总结!基于王道、严蔚敏相关丛书及网络相关资料、包含案例分析
- TapTap 发布开发者服务:降低开发者研运成本 聚焦创作优质内容
- CSS3可爱的100卡通笑脸动画
- ffmpeg framework
- QQ无法访问个人文件夹,修复失败问题
- 算法度量方法——时间复杂度及空间复杂度
- UNETR 论文精解
- 【分层强化学习】HAC源码解读
- 两个不规则四边形IOU计算方法
- 【深度学习 SS】Selective Search原理剖析