您的位置:首页 > 编程语言 > Java开发

JAVA数组

2016-03-16 11:11 267 查看
一,

/*
* 演示数组的定义 初始化 使用
* 1,数组也有类型,即:type[] 类型。
*    比如定义数组 String[] str; 含义为:定义一个 String[] 类型的对象 str。
*    对,数组是引用类型。
* 2,Java 中数组必须先初始化才能使用。
*    所谓初始化就是为数组元素分配内存并赋初值。
*    数组的初始化方式有两种,分别是静态初始化与动态初始化。
*    静态初始化是指由程序员显式指定每个数组元素的值,由系统决定数组长度;
*    动态初始化则是由系统决定每个数组元素的值,而由程序员指定数组的长度。
*    注意,不能既显式指定每个数组元素的值又给出数组的长度,否则编译时会报错。
* 3,动态初始化时由程序员指定数组长度,值则由系统分配。具体如下:
*    byte short int long 0
*    float double 0.0
*    char '\u0000'
*    类 接口 数组 等 引用类型 null
* 4,对于数组的使用,可以凭借索引对元素赋值以及取出元素。
*    一旦取出元素后,对元素的使用就如同对普通变量的使用一样。
* 5,数组中提供了 length 属性(更加说明了数组是引用类型)表示数组的长度。
*/

public class Ex02
{
public static void main(String[] args)
{
// 定义数组
int[] a;

// 定义数组时使用简单静态初始化
// int[] a = {1, 2, 3};
// 简单静态初始化只能在定义数组时配合使用,即,单独写:a = {1, 2, 3}; 编译时出错

// 静态初始化
a = new int[] { 1, 2, 3 };
// foreach 语句
for (int b : a)
{
System.out.print(b + " ");
}
System.out.println();

int[] c;
// 动态初始化 系统为每个元素赋值为0
c = new int[4];
for (int b : c)
{
System.out.print(b + " ");
}
System.out.println();
}
}


/**
* 二维数组定义:
* 相当于:
* int[] d;
* 其中d为int类型的一维数组
* 即d中的每个元素所存放的都是基本数据类型int型的数据
* 把type替换为int[] 即:int[][] d;
* 定义d中每个元素所存放的是int[]类型的数据
* 即d中所存放的数据也为数组类型 此即为二维数组
* 要理解:数组本身就是一种类型
*/

public class Ex03
{
public static void main(String[] args)
{
int[][] d;
// 定义数组d中开辟3个空间存放3个一维数组
d = new int[3][]; // 数字 3 位于第一个方括号中 代表第一维
for (Object o : d)
{
System.out.print(o + " ");
}
System.out.println();

// 对d[0]进行动态初始化
d[0] = new int[4];
// 对d[1]进行静态初始化
d[1] = new int[] { 1, 2, 3, 4, 5 };
/*
* System.out.println(d[2].length);由于数组d[2]还未初始化 故d[2].length会出现异常
*/
d[2] = new int[] { 1, 2, 3, 4 };
for (int i = 0; i < d.length; i++)
{
for (int j = 0; j < d[i].length; j++)
{
System.out.print(d[i][j] + " ");
}
System.out.println();
}

// 静态初始化二维数组
int[][] f = new int[][] { { 1, 2 }, { 3, 4 } };
// int[][] f = {{1, 2}, {3, 4}};
for (int i = 0; i < f.length; i++)
{
for (int j = 0; j < f[i].length; j++)
{
System.out.println(f[i][j]);
}
}
}
}


二,

import java.io.IOException;

/*
* 演示 Java 的动态定义数组
* 即,数组长度无需在编译阶段确定
*/
public class Ex04
{
public static void main(String[] args)
{
int a = 0, b = 0;
try
{
a = System.in.read();
// 在控制台敲入回车后,
// 传入的字符为 回车符<13> 与 换行符<10> 这两个字符。
// 故,为了得到两个输入值,首先对其进行过滤。
if (System.in.read() == '\r' && System.in.read() == '\n')
{
b = System.in.read();
}
}
catch (IOException e)
{
}
System.out.println(a);
System.out.println(b);
int[] arr;
a -= '0';
b -= '0';
int length = a + b;
arr = new int[a + b];
// arr = new int[length];
for (int i : arr)
{
System.out.println(i);
}
}
}


三,

import java.util.Arrays;

/*
* 练习使用 Arrays 工具类 该类定义在 java.util 包下 用于处理数组
*/
public class Ex05
{
public static void main(String[] args)
{
char[] arr; // 原生类型数组
String[] str; // 引用类型数组

arr = new char[] { 'a', 'c', 'b' }; // 静态初始化
System.out.println(Arrays.toString(arr));
// 输出:[a, c, b]
// 方法 Arrays.toString(); 的数据输出格式为:
// 数组元素依次以逗号与空格相隔输出,当然,有方括号包裹
str = new String[] { "hello", ",", "world", "!" };
System.out.println(Arrays.toString(str));
String[] str1 = Arrays.copyOf(str, 5);
System.out.println(Arrays.toString(str1));
Arrays.sort(str);
System.out.println(Arrays.toString(str));
// 输出:[!, ,, hello, world]
Arrays.sort(arr); // 由低到高排序
System.out.println(Arrays.toString(arr));
char[] arr1 = Arrays.copyOf(arr, 4);
// 经过验证
// 当 newLength 的值大于 arr.length 时 多余部分为该类型的默认值
System.out.println(Arrays.toString(arr1));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 数组