javase(4)_数组

一、数组概述

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

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

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

二、一维数组定义

实例:

int[] a= new int[2];      //对
int[] b= new int[]{1,2,3};  //对
int[] c={1,2,3};         //对
int[] d=new int[2]{1,2};   //错

int[] a=new int[2];
int b=a[2];            //对,有默认值
int b=a[3];            //运行期错误,编译无问题。

int[]a;
int k = a[2];          //编译报错,未初始化,只是开辟了栈内存

Person[] p=new Person[5];   p[0].age;    //运行期空指针异常

三、数组长度

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

四、二维数组定义

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

实例

int a[][]={{1,2},{2,4},{2,5}}   //对
int a[][]=new a[3][]       //二维变长数组
a[0]=new int[10];
a[1]=new int[2];
a[2]={1,2};             //报错,此处和一维数组有区别
int a[][]=new a[][3];       //错

五、数组实例

/*取最值*/
int[] array = new int[]{2,4,5,1,3,9};
int max=0;
for(int i=1;i<array.length;i++){
  if(array[max]<array[i]){
    max=i;
  }
}
System.out.println(array[max]);

/*选择排序*/
for(int i=0;i<array.length-1;i++){
  int min=i;
  for(int j=i+1;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=0;i<array.length-1;i++){
  for(int j=0;j<array.length-i-1;j++){
    if(array[j]>array[j+1]){
      array[j]=array[j]^array[j+1];
      array[j+1]=array[j]^array[j+1];
      array[j]=array[j]^array[j+1];
    }
  }
}

/*反转数组*/
public static void reverseArray(int[] arr){
  for(int start=0,end=arr.length-1; start<end ; start++,end--){
    int temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
  }
}

/*二分查找法*/
public static int getArrayIndex(int target){
  int num=0;
  int left=0;
  int last=array.length-1;
  int middle = (left+last)>>1;
  while(array[middle]!=target){
    if(array[middle]>target){
      last=middle-1;
    }else{
      left=middle+1;
    }  
    middle=(left+last)>>1;
    num++;
  }
  return middle;
}

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

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

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

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

				
时间: 2024-11-06 13:48:27

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

C语言学习_数组与指针2

数组其实是一种变相的指针,数组名同时也是指针,eg: CODE == &CODE[0]; 数组的加法: #include<stdio.h> #define SIZE 4 int main(void) { shortdates[SIZE]; short* pti; shortindex; doublebills[SIZE]; double* ptf; pti= dates;//把数组地址付给指针 ptf= bills; printf("%23s  %10s\n", &

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

练习一: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace _数组练习01 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string str = null; 14 string[

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

冒泡排序: 将一个数组中的元素按照从大到小或从小到大的顺序进行排列. for循环的嵌套---专项课题 int[] nums={9,8,7,6,5,4,3,2,1,0}; 0 1 2 3 4 5 6 7 8 9第一趟比较:8 7 6 5 4 3 2 1 0 9 交换了9次 i=0 j=nums.Length-1-i第二趟比较:7 6 5 4 3 2 1 0 8 9 交换了8次 i=1 j=nums.Length-1-i第三趟比较:6 5 4 3 2 1 0 7 8 9 交换了7次 i=2 j=nu

Java千百问_06数据结构(013)_数组如何传递

点击进入_更多_Java千百问 1.数组如何传递 在java中,我们可以将数组作为参数传递给方法,方式同传递基本类型参数一致. 了解什么是数组看这里:java中的数组是什么 了解循环数组便利看这里:如何遍历数组 例子: public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } 可以通过传递数组

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

说到数组,大家应该都很熟悉,在C.Pascal.Java等语言中,都有数组的概念.在C++中也提供了对数组的支持.数组简单来说就是一堆相同 数据类型对象的集合. 这里要把握住两个要点: 相同的数据类型.集合. 一.数组 1.定义 数组是由数组存储的对象的类型名.标识符和数组维数组成一种复合数据类型. 类型名规定了可以存储在数组中的对象的类型, 标识符用来标识 数组,用来在程序中引用数组元素, 维数用来规定数组可以存放多少数组元素. 数组的定义如下所示: 类型名 数组标识符[n]; 下面是一些数组

Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别

点击进入_更多_Java千百问 1.数组和普通对象的引用变量有什么区别 了解什么是数组看这里:java中的数组是什么 对于java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用传递给另一数组引用,但仍然不能改变数组长度(仅仅只是调整数组引用指针的指向). 了解数组传递看这里:数组如何传递 public class TestArrayLength { public static void main(String[] args) { int[] numbe

C语言程序设计现代方法_数组(第八章)

C语言不要求检查下标的范围.当下标超出范围时,程序可能会执行不可预知的行为. 看下这个程序: #include <stdio.h> #define N 10 // int main() { int a[N],i; printf("Enter %d numbers: ",N); for(i=0; i<N; i++) scanf("%d",&a[i]); printf("In reverse order:"); for(i=

《Java从入门到放弃》JavaSE篇:数组

数组,就是一组数!!! 之前我们学习的变量只能保存一个数据,如果一个部门有50个员工的姓名要保存,怎么办?如果定义50个变量·················· String name1; String name2; ...... ...... String name49; String name50; ,这画面太美,我不敢看... 就算你保存下来了,现在我要找一个叫"罗大锤"的员工,那代码怎么写呢? if(name1.equals("罗大锤")){ } if(na

04747_Java语言程序设计(一)_第4章_数组和字符串

例4.1小应用程序先声明一个数组a,在方法init()中创建它,指定有5个元素,然后为数组元素逐一赋值.在方法paint()中输出数组各元素的值. import java.applet.*;import java.awt.*; public class Example4_1 extends Applet { int a[];//标识符ua能引用元素类型是int的数组 public void init() { a=new int[5];//创建一个含5个元素的数组,并让a引用它 a[0]=100;