码迷,mamicode.com
首页 > 编程语言 > 详细

Java之数组

时间:2015-04-22 02:06:27      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:java   数组   

/*

 * 数组的使用

 * 1、数据:相同类型数据的有序结合

 * 2、数组的长度是确定的,一旦被创建将无法更改

 * 3、数组中的每个元素必须相同,不能出现混合类型

 * 4、元素的数据类型可以任意,主要包括基本类型和引用类型

 * 5、数组变量属于引用变量,数组属于对象,所以数组是存放在堆中,每个元素相当于该对象的成员变量。

 * 

 * 注意:数组在声明的时候没有分配堆空间,不需要指定长度;当数组在实例化的时候,JVM会分配堆空间,所以此时需要指定数组长度

 */

import java.util.Arrays;;


public class Array_4_21_01 {

public static void main(String[] args) {

int[] array1; //声明数组变量,不用指定长度

array1 = new int[10];  //数组实例化,需要指定长度

System.out.print("一维数组来啦-> ");

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

array1[i] = i;

System.out.print(array1[i]+" ");

}

System.out.println("");

System.out.println(Arrays.toString(array1));

System.out.println("-------------------------------");

/*

* 元素为引用类型的数组

*/

Man[] mans; //声明一个Man引用类型的数组变量

mans = new Man[5]; //实例化这个Man引用类型的数组

Man m1 = new Man(1, 27);

Man m2 = new Man(2, 28);

mans[0] = m1;

mans[2] = m2;

System.out.println("mans的数组值是 "+Arrays.toString(mans));

//静态初始化

int[] array2 = {2,5,9};

Man[] mans2 = {

new Man(1,29),

new Man(2,30)

};

//动态初始化

int[] array3 = new int[2];

array3[0] = 1;

array3[1] = 2;

System.out.println("array3的数组值是 "+Arrays.toString(array3));

//数组的默认初始化,因为数组的元素相当于类的实例变量,所以数组在被分配空间的时候,每个元素被按照实例变量的方式被隐式初始化

/*

* int[] a = new int[2]; ->初始化为[ 0 , 0 ]

* boolean[] b = new boolean[2] ->初始化为[ false , false ]

* String[] s = new String[2] ->初始化为[ null , null ]

*/

//数组的copy,使用System.arraycopy这个静态方法,System.arraycopy(原数组, 原数组起始位置, 目标数组, 目标数组起始位置, 拷贝多少个元素);

String[] s1 = {"Microsoft","IBM","Sun","Oracle","Apple"};

String[] s2 = new String[5];

System.arraycopy(s1, 0, s2, 0, s1.length);

System.out.println("s2这个数组是 "+Arrays.toString(s2));

//用增强型for循环遍历数组

for (String e : s2) {

System.out.println(e);

}

//数组排序,主要按照元素的应用类型和基本类型分为两种,元素为引用类型的数组排序我们后面结合容器来理解

//二分法查找

int[] array4 = {1,3,232,23,543,12,59};

Arrays.sort(array4); //使用二分法查找之前,必须先对数组排序

System.out.println("该元素的索引是 "+Arrays.binarySearch(array4,12));

//填充

Arrays.fill(array4, 1, 4,100); //将数组array4从索引位置1开始3位填充为100

System.out.println(Arrays.toString(array4));

//asList(结合容器理解)

/*

* 多维数组,多维数组的声明和初始化是从低维到高维的顺序进行

*/

//二维数组的静态初始化

int[][] array5 = {

{1,2,3},

{3,4},

{2,5,8,9}

};

System.out.println("array5这个二维数组的一维数组值是 "+Arrays.toString(array5[0]));

for (int[] e : array5) {

for (int f : e) {

System.out.println(f);

}

}

//二维数组的动态初始化

int[][] array6 = new int[3][];

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

array6[1] = new int[]{3,4};

array6[2] = new int[]{2,5,8,9};

System.out.println("array6这个数组[2][3]的值是 "+array6[2][3]);

//获取二维数组的第一维数组长度是 array6.length  ;  array6[0].length是获取二维数组第一个数组的长度

  }

}


class Man {

private int age;

private int id;

public Man (int id,int age) {

super(); //

this.age = age;

this.id = id;

}

}



/*思考问题

 * 1、为什么需要数组这个概念?

 * 

 * 2、说出数组的三种初始化方式。

 * 

 * 3、数组的长度可变吗?

 * 

 * 4、数组的复制使用哪个类的方法实现较好?

 * 

 * 5、说说Arrays类的用法

 * 

 */



本文出自 “影魔登场” 博客,请务必保留此出处http://woodywoodpecker.blog.51cto.com/4820467/1636698

Java之数组

标签:java   数组   

原文地址:http://woodywoodpecker.blog.51cto.com/4820467/1636698

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!