一、数组概述

数组可以看成是多个相同类型数据组合,对这些数据的统一管理.

数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量.

数组中的元素可以是任意类型,包括基本类型和引用类型,有默认初始值(按照成员变量的规则).

二、一维数组定义

实例:

int[] a= new int[];      //对
int[] b= new int[]{,,}; //对
int[] c={,,}; //对
int[] d=new int[]{,}; //错 int[] a=new int[];
int b=a[]; //对,有默认值
int b=a[]; //运行期错误,编译无问题。 int[]a;
int k = a[]; //编译报错,未初始化,只是开辟了栈内存 Person[] p=new Person[]; p[].age; //运行期空指针异常

三、数组长度

java中每个数组都有一个public final int 的length属性,表示数组的长度,一旦确定就不能改变大小.

四、二维数组定义

二维数组可以看成数组的数组.

实例

int a[][]={{,},{,},{,}}   //对
int a[][]=new a[][]      //二维变长数组
a[]=new int[];
a[]=new int[];
a[]={,};          //报错,此处和一维数组有区别
int a[][]=new a[][];       //错

五、数组实例

/*取最值*/
int[] array = new int[]{,,,,,};
int max=;
for(int i=;i<array.length;i++){
  if(array[max]<array[i]){
    max=i;
  }
}
System.out.println(array[max]); /*选择排序*/
for(int i=;i<array.length-;i++){
  int min=i;
  for(int j=i+;j<array.length;j++){
    if(array[min]>array[j]){
      min=j;
    }
  }
  if(min != i){
    array[i] = array[i]^array[min];
    array[min] = array[i]^array[min];
    array[i] = array[i]^array[min];
  }
} /*冒泡排序法*/
for(int i=;i<array.length-;i++){
  for(int j=;j<array.length-i-;j++){
    if(array[j]>array[j+]){
      array[j]=array[j]^array[j+];
      array[j+]=array[j]^array[j+];
      array[j]=array[j]^array[j+];
    }
  }
} /*反转数组*/
public static void reverseArray(int[] arr){
  for(int start=,end=arr.length-; start<end ; start++,end--){
    int temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
  }
} /*二分查找法*/
public static int getArrayIndex(int target){
  int num=;
  int left=;
  int last=array.length-;
  int middle = (left+last)>>;
  while(array[middle]!=target){
    if(array[middle]>target){
      last=middle-;
    }else{
      left=middle+;
    }  
    middle=(left+last)>>;
    num++;
  }
  return middle;
}

ps:面试题,插入一个数,保持数组排序,插入的位置?

二分查找条件改为:while(array[left]<=array[last]),插入的位置:left+1

六、实际使用数组时,使用java.util.Arrays类和apache.long.ArrayUtils类中提供的数组方法。

ps(常用的数组方法): http://www.iteye.com/news/28296

												

javase(4)_数组的更多相关文章

  1. 选择排序_C语言_数组

    选择排序_C语言_数组 #include <stdio.h> void select_sort(int *); int main(int argc, const char * argv[] ...

  2. 插入排序_C语言_数组

    插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ...

  3. 快速排序_C语言_数组

    快速排序_C语言_数组 #include <stdio.h> void quickSort(int *, int, int); int searchPos(int *, int, int) ...

  4. 冒泡排序_C语言_数组

    冒泡排序_C语言_数组 #include <stdio.h> //冒泡排序 小->大 void sort(int * pArray, int len); int main(int a ...

  5. Net基础篇_学习笔记_第九天_数组_冒泡排序(面试常见题目)

    冒泡排序: 将一个数组中的元素按照从大到小或从小到大的顺序进行排列. for循环的嵌套---专项课题 int[] nums={9,8,7,6,5,4,3,2,1,0}; 0 1 2 3 4 5 6 7 ...

  6. Net基础篇_学习笔记_第九天_数组_三个练习

    练习一: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  7. Net基础篇_学习笔记_第九天_数组

    结构:一次性存储不同类型的变量: 数组:一次性存储相同类型的变量: 数组的语法: 数组类型[ ] 数组名=new 数组类型[数组长度]: int[ ] nums=new int[10]; 数组初值都是 ...

  8. C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》

    说到数组,大家应该都很熟悉,在C.Pascal.Java等语言中,都有数组的概念.在C++中也提供了对数组的支持.数组简单来说就是一堆相同 数据类型对象的集合. 这里要把握住两个要点: 相同的数据类型 ...

  9. 大数计算_BigNum优化_加减乘除乘方取余_带注释_数组

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdlib&g ...

随机推荐

  1. 51nod 1102 【单调栈】

    思路: 对于这个高度往左能延伸最远x,往右能延伸最远y,(x+1+y)*w; 利用单调栈就行了: #include <cstdio> #include <stack> #inc ...

  2. Bloomberg 的一些功能

    FFLO: 查看ETF流动,注意在View点击Contries后选择Asia,查看亚洲流动. 随后对感兴趣的国家点击查看具体股票的流动 关闭Launchpad View之后再次打开: BLP 修改La ...

  3. hoj2188 WordStack

    WordStack My Tags   (Edit)   Source : Mid-Atlantic 2005   Time limit : 5 sec   Memory limit : 32 M S ...

  4. [Xcode 实际操作]二、视图与手势-(5)给图像视图添加圆角效果

    目录:[Swift]Xcode实际操作 本文将演示给矩形图片添加圆角效果 import UIKit class ViewController: UIViewController { override ...

  5. [Xcode 实际操作]二、视图与手势-(8)UIView视图的纹理填充

    目录:[Swift]Xcode实际操作 本文将演示将导入的图片作为纹理,平铺整个屏幕. 往项目中导入一张图片. 点击底部左下角的图标->[Import]->选择需要导入的图片->[O ...

  6. [Xcode 实际操作]九、实用进阶-(15)屏幕截屏:截取当前屏幕上的显示内容

    目录:[Swift]Xcode实际操作 本文将演示如何截取屏幕画面,并将截取图片,存入系统相册. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UI ...

  7. 一篇文章带你搞懂 SpringBoot与Swagger整合

    Swagger使用由于不喜欢csdn的markwoen编辑器,对代码样式支持不好,看着不舒服,对审美要求比较高的同学移步github:https://github.com/itguang/swagge ...

  8. 学习java设计模式的必要性探讨

    1.设计模式是什么:设计模式为我们提供了一套可复用的面向对象技术,再配合重构方法,可以让我们避免简单重复的工作.它使用面向接口编程,而不是面向实现.可以说设计模式是java程序设计的灵魂. 2.为什么 ...

  9. Qt 2D绘图之二:抗锯齿渲染和坐标系统

    一.抗锯齿渲染 1.1 逻辑绘图 图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子. 1.2 物理绘图(默认情况) 在默认的情况下,绘制会产生锯齿,并且 ...

  10. 自己写的Grid组件,第二版

    大体没什么变化,主要是添加了一个方法,getSelectedItems(),返回当前选中的数据项. (function ($) { $.fn.GridView = function (setting) ...