`
xiaoyjj
  • 浏览: 53227 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java学习小总结——数组

阅读更多

感觉好久没有写总结了似的。~这回的主角是关于一维数组、二维数组和有关数组排序的问题。

首先来总结一下一维数组。

什么是数组呢?。可以把数组理解成为一种容器,这个容器的作用是用来储存数据的,而且那些数据要求都是同一种数据类型的。而且,数组中的数据在内存中的存储是占用一整块连续的内存空间。这些特点使得数组变得十分好用而方便。

 

那么怎样来定义一个数组呢?

最基本的方法应该是这样的:

数据类型 [] 数组名 = new 数据类型[数组长度];

例如我们要建立一个用来存储十个整形数据的数组的定义方式就是: int [] array = new int[10];

这种定义直接定义了数组的长度,并没有给数组的元素赋初值。如果定义的数组是存储int型数据,那么系统会默认给每一个元素的初值为0。

 

另一种定义数组的方法是在定义的时候直接给数组的元素赋值。例如

int [] array = new int[]{1,2,3};

 

还有一种定义一维数组的方法就是先定义一个数组的名字,再给他赋值。在给数组赋值的时候我们经常用的方法是用循环。

int [] array = new int[10];

for(int i = 0;i<array.length;i++){

     int j = 0;

     array[i] = j++;

}

这样就会通过一个循环给array这个数组赋值,从0到9。这个方法中用到了一个length。可以分析出length是数组类中的一个属性,通过查看api也可以查到数组只有length这一个属性,我们通过调用array.length就可以得到数组的长度。

还有一点要注意的是数组中元素的下标是从0开始的。例如一个长度为10的数组,他的元素是array[0]、array[1]、array[2]…………array[9]

 

 

接下来总结一下对数组进行排序的方法。

首先先来用随机数来生成一个无序的整形数的数组。

 

int[] array = new int[length];
Random ran = new Random();
//给数组元素付初始值
for(int i = 0;i<array.length;i++){
	int val = ran.nextInt(100)+100;
	array[i] = val;
	}
//输出数组元素
System.out.print("\t");
for(int i = 0;i<array.length;i++){
	System.out.print(array[i]+"\t");
	}

 

 其中用到了生成的随机数。这里注意一下吧,其中nextInt(100)+100生成的随机数的范围是从100到199。

 

  这样生成的就是一个有10个随机整形数据的数组。然后就是对这个数组的排序。对一维数组的排序的方法有很多,其中大致可以分为:冒泡排序,选择排序,插入排序,希尔排序,快速排序等等多种不同的算法。这里只说一种比较简单的冒泡排序吧。
首先先来了解一下冒泡排序的原理吧:
冒泡排序的大体步骤首先是数组中第一个数据跟后面的每一个数据进行比较,如果是小于的关系则保持原位置不动,若是大于的关系,则调换两个元素,这样经过第一轮的比较就会把这个数组中最小的元素给排到这个数组中的第一个位置。第二轮比较则是将数组中第二个元素依次与后面的进行比较…………就这样每一轮排序都会把最小的筛选出来,最后完成排序。
这就是冒泡排序的代码:


 

//冒泡排序
public static int [] maopao(int[] array){
          for(int i = 0; i<array.length;i++){
                    for(int j = i+1;j<array.length;j++){
                              if(array[i]>array[j]){
                                       int temp = array[i];
                                       array[i] = array[j];
                                       array[j] = temp;
                              }

                     }
          }
          return array
}

 

这样就可以通过调用这个冒泡排序的方法,返回的则是一个排好序的数组了。
 
如果把一维数组弄明白了,那么二维数组也就很简单了。
在java中实际上是没有二维数组的概念的,因为一个数组可以定义成为任意类型,所以如果定义一个一维数组是用来存储一维数组的,那他实际上就是一个二维数组。
例如如果我们这样建立一个二维数组: int x [][] = new int [3][5];  他其实就是一个长度为3的一维数组,而这个一维数组的每一个元素又是一个长度为5的一维数组。
二维数组的使用也比较简单,赋值的时候只要使用一个双层循环就可以了。还有一点就是二维数组中length的使用,这是与普通的一维数组不同的。

例如我们想知道这个二维数组第3行有多少列,那样就是: x[2].length;

我们要是想知道这个二维数组一共有多少行,那就是: x.length;

 

那~~对数组的一个小总结就到这里。~有更新还会补充~~#^_^

 

0
2
分享到:
评论
4 楼 xiaoyjj 2012-10-19  
ZaneLee007 写道
java有现成的借口,何必非要自己做?
java.util.Arrays.fill(int[] arr, 0, arr.length, 0);
java.util.Arrays.sort(T[]),优化后的二分查找

。~那个。我刚开始学没多久的。还没接触那么多的。。也谢谢指教啦。!!
3 楼 xiaoyjj 2012-10-19  
chinahker 写道
哥,你冒泡排序都没写对还说了这么多。第二重循环j = i+1,数组越界。

哥~那个木有错吧。第二重循环j= i+1;之后要是j比length大那就不进行循环了a
2 楼 chinahker 2012-10-18  
哥,你冒泡排序都没写对还说了这么多。第二重循环j = i+1,数组越界。
1 楼 ZaneLee007 2012-10-17  
java有现成的借口,何必非要自己做?
java.util.Arrays.fill(int[] arr, 0, arr.length, 0);
java.util.Arrays.sort(T[]),优化后的二分查找

相关推荐

    动力节点老杜Java基础入门学习教程分享——数组

    ### 动力节点老杜Java基础入门学习教程分享——数组 #### 数组概要 数组是一种重要的数据结构,被广泛应用于各种编程语言中,包括Java。数组是一种引用数据类型,用于存储固定数量的同类型元素。在内存中,数组是...

    java——数组.xmind

    一维数组概念:一组连续的存储空间,存储多个相同数据类型的值。数组的创建。数组的组成。数组的遍历。数组的默认值。

    java基础——数组及其应用(csdn)————程序.pdf

    总之,数组是Java编程中的基础元素,理解其原理和使用方法对于学习和使用Java至关重要。数组提供了高效的数据存储和访问方式,但其固定的长度和对类型的要求也限制了其在某些特定场景下的灵活性。

    第10章成绩统计——数组与字符串.ppt

    本章总结了数组的相关知识,包括声明、创建、访问、操作以及使用数组进行成绩统计的方法。 10.10 实训 10:最大最小值与成绩统计 实训旨在实际操作中应用所学知识,找出数组中的最大值、最小值,并计算平均成绩。 ...

    《Java数据结构和算法》学习笔记(1)——数组 二分法 大O表示法

    本文将深入探讨《Java数据结构和算法》学习笔记的第一部分,主要聚焦于数组、二分法以及大O表示法。这些基础知识对于提升代码性能和优化解决方案具有决定性的作用。 **数组**是编程中最基本的数据结构之一,它在...

    Java语言程序设计讲义——数组与字符串

    这一款整理发布的Java语言程序设计讲义——数组与字符串,适用于日常学习、参考、借鉴Java语言...该文档为Java语言程序设计讲义——数组与字符串,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看

    java代码-使用java增强for循环 string数组赋值的源代码

    java代码-使用java增强for循环 string数组赋值的源代码 ——学习参考资料:仅用于个人学习使用!

    JAVA基础知识学习——方法与数组

    自我学习的总结

    Java程序设计基础:数组的概念.pptx

    采用另一种变量结构,能存放批量数据——数组。 数组的基本概念 数组是一种数据结构,在内存中连续存放。 用来存放相同数据类型的批量数据。 a 0 1 2 3 4 5 6 7 8 9 数组的基本概念 数组是一组名字相同下标不同,...

    Java自学之路——超仔细含练习项目及源码 Java知识体系最强总结————含各个阶段的面试题

    ### Java自学之路——超详细含练习项目及源码 #### Java知识体系最强总结 本篇文章旨在根据提供的文件信息,深入解读Java自学之路的关键知识点,并针对其中提到的学习资源进行详细的解析,帮助初学者更好地掌握...

    java数组排序

    在Java编程语言中,数组排序是一项基础且重要的任务。它涉及到不同的算法,这些算法通过比较和交换元素来达到数组元素的有序状态。本篇将详细探讨几种常见的排序算法及其在Java中的实现。 首先,让我们从最简单的...

    java代码-使用java解决回文二维数组的源代码

    java代码-使用java解决回文二维数组的源代码 ——学习参考资料:仅用于个人学习使用!

    java基础——————试题库

    这份“java基础——————试题库”资源旨在帮助学习者系统地复习和深入理解Java的基础知识,确保他们能够全方位地掌握这一强大的编程工具。下面将详细阐述Java的基础知识点。 1. **Java简介** - Java是由Sun ...

    Java数组,Java数组,多线程编程

    3. **守护线程和用户线程**:Java区分两种类型的线程——用户线程(非守护线程)和守护线程。守护线程不阻止程序退出,而用户线程则会。 4. **线程同步**:为了防止多线程环境中的数据竞争,Java提供了`...

    java 数据结构 数组 向量 字符串

    本文将深入探讨三种基本的数据结构——数组、向量和字符串,它们在Java开发中占据着核心地位。 #### 一、数组 数组是Java中最基础的数据结构之一,用于存储固定大小的同类型元素集合。数组可以在一维或多维中定义...

    java程序控制与数组 详解 java实例20

    本文将深入探讨这两个主题,并通过一个具体的实例——"java程序控制与数组 详解 java实例20"来进一步阐述。 首先,让我们了解程序控制。在计算机科学中,程序控制指的是如何决定代码的执行流程。它包括三大基本结构...

    JAVA入门到精通——30天学通JAVA

    通过《JAVA入门到精通——30天学通JAVA》的学习,你将系统地掌握Java编程的基础,为进一步的进阶学习和实际项目开发打下坚实的基础。这本书涵盖了从基础知识到实践应用的全面内容,相信无论是对编程感兴趣的初学者,...

    java课程设计实例——java源代码

    在这个“java课程设计实例——java源代码”压缩包中,我们很可能会找到一系列的Java源码文件,这些文件可能涵盖了各种Java编程的基础到高级概念。 首先,"ch01"这个文件名可能是章节的标识,暗示了这个压缩包可能...

    javascript从入门到跑路—–小文的js学习笔记(10)——数组(一维数组、二维数组以及三维数组)和冒泡排序

    javascript从入门到跑路—–小文的js学习笔记(1)———script、alert、document。write() 和 console.log 标签 … … javascript从入门到跑路—–小文的js学习笔记目录 ** 含义: 使用单独的变量名来存储一系列的...

Global site tag (gtag.js) - Google Analytics