java基础总结——数组
数组需要掌握的:
1、数组的定义
2、数组的内存分配及特点
3、数组操作常见问题
4、数组常见操作
5、数组中的数组(理解)
数组唯一属性:length,即数组的长度。
1.数组定义
格式一:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式二:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
示例:int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
区别:方式一定义了数组的长度,但是没有给数组赋值,数组有默认值,和数据类型默认值一样;
方式二定义数组,并赋值,默认指定数组的长度。推荐使用方式二
2.数组的内存分配及特点
3、数组常见操作
3.1数组遍历
将数组中的每个数据分别取出,for循环来完成 数组.length数组的长度,也就是存储数据的个数,数组中的最大角标值 = 数组.length - 1
/*
遍历数组,已经用for循环解决掉了
数组越来越多
如何去遍历呢
采用函数的方式,将遍历数组的功能,定义在函数中
直接调用函数的遍历功能就可以了
*/
class ArrayDemo5{
/*
分析步骤:
这个函数就负责遍历数组,并打印在命令行上
1. 有没有运算结果,没,void
2. 有没有未知数参与函数运算,就那数组
*/ /*
printArray函数,就负责遍历数组,打印数组
调用这个函数的时候,传递函数进来
*/
public static void printArray(int[] arr)
{
for(int x = 0; x<arr.length ;x++){
if(x!=arr.length-1){
System.out.print(arr[x]+",");
}
else{
System.out.print(arr[x]);
} }
System.out.println();
}
public static void main(String[] args)
{
int[] arr ={34,435,324,324,3246,63,3};
int[] arr1 ={34,435,324,324,3246,63,3,5};
printArray(arr);
// printArray(arr1);
}
}
3.2数组求最值
遍历数组,对每一个数组中的元素进行比较,并且记录 较大数据的下标 必须定义函数完成
/*
数组中获取最值的操作
最大值,最小值
*/
class ArrayDemo6{
public static void main(String[] args) {
int[] arr = {4,3,2,6,1,0};
int max = getMax(arr); System.out.println("max="+max);
}
/*
定义函数,来获取数组中的最大值
1 明确函数计算后的结果是什么,int
2 未知数据就是数组
*/ public static int getMax(int[] arr){
//定义变量,记录数组中0下标上的数据
int max = 0;//4
//遍历数组,分别进行比较,保留最大值
for(int x = 0 ; x<arr.length;x++){
if(arr[max]<arr[x]){
max = x;
}
}
return arr[max];
} public static int getMin(int[] arr){
int min = 0;//4
//遍历数组,分别进行比较,保留最大值
for(int x = 0 ; x<arr.length;x++){
if(arr[min]>arr[x])
{
min = x;
}
}
return arr[min];
}
}
3.3数组排序
Ÿ 利用原理是:从第0个下标开始进行比较和较大的数进行换位(借用第三方变量)第一次比较完后,从第1个小标开始进行比较和较大的数进行换位(借用第三方变量)
Ÿ 特点:第一次都比较完后,最小的数出现在了0下标位置上嵌套的for来完成
2、冒泡排序
相邻两个数据进行比较,根据结果换位
两种排序示意图
3、代码实例
/*
选择排序的三个步骤
1. 遍历数组,把数组中每个元素分别取出
2. 出去后,进行大小的比较
3. 进行数组的换位置
*/
//选择排序
for (int x = 0; x < arr.length - 1; x++) {
for (int y = x + 1; y < arr.length; y++) {
// x=1 y=1+1=2
if (arr[x] > arr[y])// arr[1]>arr[2]
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
} /*
定义函数实现冒泡排序
1. 确定函数运算后没有返回值
2. 不确定的数据就是数组 说明:
内圈循环,-x是为了比较的次数一次一次在减少
-1是为了防止数组越界异常
希尔排序,公认的效率最高的排序方式
插入形式的排序算法
*/
//冒泡排序
for(int x =0 ;x<arr.length; x++){
for(int y = 0 ; y <arr.length-x-1;y++){
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
4、数组操作常见问题
ArrayIndexOutOfBoundsException 数组下标越界异常
NullPointerException 空指针异常,引用类型中最常见
java基础总结——数组的更多相关文章
- Java基础-反转数组
/** java基础,如何将一个数组反转,思考方法采用使用临时变量的情况下,将第一个元素与第二个元素进行反转,需要定义两个索引,一个记录数组的第一个元素与最后一个元素,将其两两交换* */public ...
- Java基础之 数组详解
前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...
- java基础(十) 数组类型
1. 数组类简介 在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...
- java 基础概念 -- 数组与内存控制
问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...
- Java基础:数组的声明,循环,赋值,拷贝。
数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...
- Java基础总结--数组
---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...
- Java基础之数组类型
对于Java,前面的一些基础概念不是很想写,看了看还是从数组开始写吧(毕竟数组是第一个引用类型,相对复杂一点),我也是学了JAVA不是很久,目前看完了JAVA的基础视频,还有JAVA疯狂讲义这本书的大 ...
- 黑马程序员——JAVA基础之数组
------- android培训.java培训.期待与您交流! ---------- 数组: 数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其 ...
- Java基础从数组到集合之间关键字的区别!!!!
1.&& 和 &区别和联系: 相同点 : 结果是一样的. 不同点 :如果使用双&号判断,如果说条件一为false,不会判断条件二,但是单&号会继续判 ...
随机推荐
- Ant构建与部署Java项目---入门
原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建 ...
- cpm效果介绍
浮层菜单 图片弹窗
- 如何在Protel99se中批量修改元件的封装
有时候需要批量修改元件的封装,可在原理图和PCB中批量修改.本文以批量修改电阻AXIAL0.3 的封装为AXIAL0.4 为例. 1. 在原理图中批量修改1.1. 方法1双击需要修改封装的其中一个元件 ...
- NET分布式缓存Memcached测试体验
原文地址:http://onlyonewt.blog.sohu.com/160168896.html 一直在学习关注大访问量网站的缓存是如何实现,之前看过Memcached的资料,忙于没有时间来真正测 ...
- [转]Jquery中AJAX错误信息调试参考
下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求 ...
- Direct3D 11的流水线
流水线 流水线(Pipeline)是理解D3D必须要掌握的概念. 整个流水线有很多步骤,有的步骤是固定功能,不用怎么配置,有的步骤是要写代码的,也就是所谓的着色器程序(Shader). 一般来说,将流 ...
- 字典树-百度之星-Xor Sum
Xor Sum Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包括了N个正整数,随后 Prometheu ...
- CUGBACM_Summer_Tranning 组队赛解题报告
组队赛解题报告: CUGBACM_Summer_Tranning 6:组队赛第六场 CUGBACM_Summer_Tranning 5:组队赛第五场 CUGBACM_Summer_Tranning 4 ...
- 数据库备份和恢复秩序的关系(周围环境:Microsoft SQL Server 2008 R2)
让我们来看看在备份序列新手 --1.塔建环境(生成测试数据和备份文件) /* 測试环境: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) ...
- Python安装后在CMD命令行下出现“应用程序无法启动.............”问题
问题存在之一:系统是刚刚重做的精简版服务器系统(阉割版) AN就是在阿里云上刚开的Windows Server 2008 系统上碰到的 吓尿了都 症状: 正常安装python环 ...