数组需要掌握的:

  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. windows进程间通讯的方法

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正.   1.使用共享内存 代码如下: void FileMapp ...

  2. MySQL常用Json函数

    官方文档:JSON Functions Name Description JSON_APPEND() Append data to JSON document JSON_ARRAY() Create ...

  3. MySQL的SQL_CALC_FOUND_ROWS真的很慢么?

    分页程序一般由两条SQL组成: SELECT COUNT(*) FROM ... WHERE .... SELECT ... FROM ... WHERE LIMIT ... 如果使用SQL_CALC ...

  4. 【剑指offer】面试题41:和为 s 的两个数字 VS 和为 s 的连续正数序列

    题目: 输出所有和为S的连续正数序列.序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 思路: small代表序列最小数字,large代表序列最大数字.初始化small为1,large为2. ...

  5. 掌握 Java 8 Lambda 表达式

    Lambda 表达式 是 Java8 中最重要的功能之一.使用 Lambda 表达式 可以替代只有一个函数的接口实现,告别匿名内部类,代码看起来更简洁易懂.Lambda 表达式 同时还提升了对 集合 ...

  6. 万恶DevExpress

    公司需要,开始了DevExpress的学习之旅,说它万恶也只是在不了解它的情况下,熟悉之后能很方便的实现很多想要的功能 这里简单写一下要整理的内容,也就是大纲,以后再慢慢添加 一.控件和组件 date ...

  7. c语言编程之sglib库的简单使用

    说实话自从大学毕业后已经很久没有用c语言写过程序了,一般都是使用c++,c++的stl和boost等,这些代码库大大简化了我们的编程复杂度.由于最近某种原因在次开始用c写程序.我是个比较懒的人,比较喜 ...

  8. [Regular Expressions] Introduction

    var str = "Is this This?"; //var regex = new RegExp("is", "gi"); var r ...

  9. WAS集群系列(6):集群搭建:步骤4:安装WAS升级软件

    逐步点击"下一步",注意一处流程,例如以下列举: "升级软件"安装的路径设置,建议与之前的WAS及IHS安装的绝对路径同样,例如以下所看到的: 逐步点击,完毕安 ...

  10. FileZilla简单介绍及运用

    一.FileZilla简介 FileZilla是一款免费开源的FTP客户端软件,并且还提供了服务器版本.虽然它是免费软件,可性能却一点也不含糊,比起那些共享软件来有过之而无不及,具备大多数的FTP软件 ...