数组需要掌握的:

  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数组排序

1、选择排序

Ÿ 利用原理是:从第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基础总结——数组的更多相关文章

  1. Java基础-反转数组

    /** java基础,如何将一个数组反转,思考方法采用使用临时变量的情况下,将第一个元素与第二个元素进行反转,需要定义两个索引,一个记录数组的第一个元素与最后一个元素,将其两两交换* */public ...

  2. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  3. java基础(十) 数组类型

    1. 数组类简介   在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...

  4. java 基础概念 -- 数组与内存控制

    问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...

  5. Java基础:数组的声明,循环,赋值,拷贝。

    数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...

  6. Java基础总结--数组

    ---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...

  7. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...

  8. Java基础之数组类型

    对于Java,前面的一些基础概念不是很想写,看了看还是从数组开始写吧(毕竟数组是第一个引用类型,相对复杂一点),我也是学了JAVA不是很久,目前看完了JAVA的基础视频,还有JAVA疯狂讲义这本书的大 ...

  9. 黑马程序员——JAVA基础之数组

    ------- android培训.java培训.期待与您交流! ---------- 数组: 数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其 ...

  10. Java基础从数组到集合之间关键字的区别!!!!

    1.&& 和 &区别和联系: 相同点 : 结果是一样的.       不同点 :如果使用双&号判断,如果说条件一为false,不会判断条件二,但是单&号会继续判 ...

随机推荐

  1. 转载的别人的ajax跨域解决方法

    http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id> 放在浏览器地址栏中访问可以得到正确 ...

  2. C++中new和delete的背后( call edx 调用虚表内的第二个函数(析构函数))

    关于 C++中new背后的行为, 以前已经写过一篇了 理解C++中new背后的行为, 但是里面也只是泛泛而谈,没有真凭实据, 下面我们从汇编的角度看C++编译器究竟在背后干了什么?   我们的代码很简 ...

  3. Linux Top使用说明

    运行top后,按P键就按CPU排序,按M键就按内存排序 P – 以 CPU 占用率大小的顺序排列进程列表 M – 以内存占用率大小的顺序排列进程列表 在系统维护的过程中,随时可能有需要查看 CPU 使 ...

  4. H5页面音频自动播放问题

        最近有这么一个需求,需要在手机加载一个页面的时候,自动播放音乐资源.一般情况下,这个问题也就解决了,但是要保证各种手机上表现一致,那就相当困难了,至少要费点儿周折.       下面有三种常规 ...

  5. 一个跨域请求的XSS续

    之前讨论过,在解决post跨域请求时,采用iframe+本域代理页的形式,兼容性(当然是包括IE6啦)是最好的.上次提到,代理页面的作用是:执行本域下的回调函数.就是这个原因,给XSS带来了便利.详细 ...

  6. Maven--多模块依赖实例解析(五)

    <Maven--搭建开发环境(一)> <Maven--构建企业级仓库(二)> <Maven—几个需要补充的问题(三)> <Maven—生命周期和插件(四)&g ...

  7. oracle数据库 ORA-12560: 协议适配器错误

    ORA-12560:  协议适配器错误 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具-- ...

  8. C#工厂模式代码实例

    此处示例为一个简易计算器工厂模式的实现. 创建类库,名为CalcLib,我把计算功能全部放在这个类库中. 首先,创建一个抽象的计算器算法父类,如下: /// <summary> /// 计 ...

  9. Centos7安装Oracle JDK

    查看Linux是否自带的JDK,如有openJDK,则卸载 java -version

  10. WebApi2官网学习记录---异常处理

    HttpResponseException 当WebAPI的控制器抛出一个未捕获的异常时,默认情况下,大多数异常被转为status code为500的http response即服务端错误. Http ...