首页 > 编程语言 > 详细

0005 数组(array)的静态和动态声明、最大值最小值二分法

时间:2020-07-10 01:39:48      阅读:85      评论:0      收藏:0      [点我收藏+]

public class test05{
public static void main(String []args){
/*
数组(array):
简单的说,就是一组数
当一组数据的数据类型,意义是一样的时候,那么为了方便的统一的管理它们,我们需要
用新的数据的存储结构来进行存储。例如:数组
所谓数组(Array),就是相同数据类型的元素按一定顺序排列的集合,
就是把有限个类型相同的变量用一个名字命名,以便统一管理他们,
然后用编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。
组成数组的各个变量称为数组的元素(element)。数组中元素的个数称为数组的长度(length)。
int[] scores = new int[7];
scores[0] = 89;
数组名:例如:scores
下标:范围:[0,长度-1]
例如:[0]
元素:数组名[下标]
例如:scores[0]
数组的长度:元素的总个数,可以这么表示: 数组名.length
*/
//实例
/*
要存储本组学员的成绩,例如:第1组,有7个同学
*/
/*
int score1 = 89;
int score2 = 89;
int score3 = 67;
int score4 = 99;
int score5 = 89;
int score6 = 34;
int score7 = 89;
//用7个变量存储没问题,但是如果涉及到对数据的管理:例如,求最值,排序等,就非常麻烦
*/
//所以使用数组
/*
int[]scores=new int[7];
scores[0] = 89;
scores[1] = 89;
scores[2] = 67;
scores[3] = 99;
scores[4] = 89;
scores[5] = 34;
scores[6] = 89;
System.out.println(scores.length);*/
//----------------------------------------------------
/*
原则:先声明后使用
1、声明一个数组?
语法格式;
元素的数据类型[] 数组名;
例如:
存储几个学员的成绩:int[] scores;
存储几个学员的体重:double[] weights;
存储几个学员的姓名:String[] names;

2、 数组的初始化?
需要完成两件事:
(1)确定数组的长度
(2)确定数组的元素的值

方式一:静态初始化
数组名 = new 元素的数据类型[]{元素的值列表};

说明:如果数组的声明与静态初始化合成一句时
元素的数据类型[] 数组名 = new 元素的数据类型[]{元素的值列表};
甚至还可以简化:当且仅当,声明与静态初始化在一句时,才能这么简化
元素的数据类型[] 数组名 = {元素的值列表};
方式二:动态初始化

3、如何表示一个数组的元素
数组名[下标]
下标的范围:[0,长度-1]

4、如何表示数组的长度
数组名.length

5、遍历/访问数组中的元素
for(int i=0; i<数组名.length; i++){
Ssytem.out.println(数组名[i]);
}

回忆:
变量的声明与使用
(1)变量的声明
数据类型 变量名;
(2)变量的初始化
变量名 = 变量值;

声明和初始化合成一句
数据类型 变量名 = 变量初始值;
*/
int[]socres = {60,65,70,90,80};
//输出数组的长度,已经遍历数组
System.out.println(socres.length);
for(int i=0;i<socres.length;i++){
System.out.println(socres[i]);
}
技术分享图片

//-------------------------------------------------------

/*
数组的存储:
1、数组下标为什么从0开始?
下标表示的是这个元素的位置距离首地址的偏移量
2、数组名中存储的是什么
数组名中存储的是数组在堆中一整块区域的首地址
3、数组的元素如何存储
在堆中,依次连续的存储的
说明:
数组名,其实也是变量。
回忆:
变量的声明和初始化
数据类型 变量名 = 变量值;
现在:
int[] array = {1,3,5,7,9};
其中的 int[]也是一种数据类型,数组类型,它是一种引用数据类型

引用,表示引用一个“对象”,引用堆中的一块内存
Java程序是在JVM中运行,JVM中的内存最最主要的两块区域:栈和堆
其中的栈就是存储我们的局部变量(现在见到的变量都是局部变量),
堆中存储的是对象
*/

//实例
int [] array=new int[]{1,3,5,7,9};
System.out.println(array);//打印数组名
////结果只打印出了:[I@15db9742
//这个值是,数组对象的类型@对象的hasCode编码值
//其中[I,表示int[]类型
//15db9742是这个数组对象的hashCode编码值,类似于每个人都有一个身份证号

//----数组中求最大值、最小值、平均值-----------------------------------------------------
int[] array = {4,2,6,8,9};
//最大值[特别注意]需要一个temp 变量来存储最大值

//方式1
int max=-1;
for(int i=0;i<array.length-1;i++ ){
if(array[i]>array[i+1]){
max=array[i];
}else{
max=array[i+1];
}
}
System.out.println(max);

//方式2

//在数组中找最大值
//类似于:猴子掰玉米
//先假设第一个最大,然后与后面的元素一一比较,如果有比手上还大,就修改手上的玉米
//(1)//先假设第一个元素最大
int max = array[0];
//(2)用max中的值,与后面的元素一一比较,如果有比max的值还大,就修改max的值
//这里i=1的原因,max与[1,长度-1]的元素比较就可以了,不用再与[0]元素进行比较
for(int i=1; i<array.length; i++){
if(array[i] > max){
max = array[i];
}
}
System.out.println("最大值是:" + max);

int[] array = {4,2,-7,8,1,9};
//最小值及其下标
//(1)假设第一个元素最小
int minIndex = 0;//array[minIndex]就是最小值

//(2)用min与后面的元素一一比较
for(int i=1; i<array.length; i++){
if(array[i] < array[minIndex]){
minIndex = i;
}
}
System.out.println("最小值是:" + array[minIndex]);
System.out.println("最小值的下标是:" + minIndex);

技术分享图片

 

 
























}
}

0005 数组(array)的静态和动态声明、最大值最小值二分法

原文:https://www.cnblogs.com/liliang07/p/13277100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!