数组一
来源:互联网 发布:500万双色球过滤软件 编辑:程序博客网 时间:2024/05/23 12:57
一维数组
一维数组的声明
一维数组的声明方式:
type var[]; 或type[] var;
例如:
int a1[]; int[] a2;
double b[];
Person[] p1; String s1[];
java语言中声明数组时不能指定其长度(数组中元素的个数),例如:
int a[5] ; //非法(C中可以)
除了基础的数据类型以外,java中所以的类型都是引用类型。
java中数组是存放在堆中的。
数组对象的创建
java 中使用关键字new创建数组对象,格式为:
数组名=new 数组元素的类型 [数组元素的个数]
如
int []s;
s=new int[5];
数组初始化
动态初始化
数组定义与为数组分配空间和赋值的操作分开进行,如
public class Test{ public static void main(String[] args){ int a[]; //声明了一个数组名字,栈空间里分配了一个空间(该空间里的引用是指向堆里为数组分配的空间的。) a=new int[3]; ////在堆里为数组分配空间了 a[0]=1;a[1]=2;a[2]=3 Date days[]; days=new Date[3]; days[0]=new Date(1,4,2004); days[1]=new Date(2,4,2004); days[2]=new Date(3,4,2004); } } class Date{ int year,month,day; Date(int y,int m,int d){ year=y;month=m;day=d; } }
静态初始化
在定义数组的同时就为数组元素分配空间并赋值,例如:
public class Test{ public static void main(String[] args){ int a[]={1,2,3}; Date days[]={ new Date(1,4,2004); new Date(2,4,2004); new Date(3,4,2004); }; } } class Date{ int year,month,day; Date(int y,int m,int d){ year=y;month=m;day=d; } }
数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化,如:
public class Test{ public static void main(String[] args){ int a[]=new int[3]; Date days[]=new Date[3]; System.out.println(a[3]); System.out.println(days[2]); } } class Date{ int year,month,day; Date(int y,int m,int d){ year=y;month=m;day=d; } } 输出结果:0 null
数组元素的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素,数组元素的引用方式为arrayName[index]
a.length //不是a.length()!
查看本地主机ip信息的命令行参数
ipconfig
ipconfig -all
String[] args 的情况
public class TestArgs1{public static void main(String[] args){for(int i=0;i<args.length;i++){System.out.println(args[i]);}}}javac TestArray1.javajava TestArray1 asd 123 yre ouus输出:asd 123 yre ouus
public class TestArgs2{public static void main(String[] args){if(args.length<3){System.out.println("出错啦!");System.exit(-1);}double d1=Double.parseDouble(args[0]); //将字符串转换成double类型double d2=Double.parseDouble(args[2]);double d=0;if(args[1].equals("+")) d=d1+d2;else if(args[1].equals("-"))d=d1-d2;else if(args[1].equals("x"))d=d1*d2; //注意此处的 x 和 *else if(args[1].equals("/"))d=d1/d2;else{System.out.println("Error operator!");System.exit(-1);}System.out.println(d);}}
二维数组
二维数组的声明
二维数组可以看成以数组为元素的数组。例如:
int a[][]={{1,2},{3,4,5,6},{7,8,9}};
java中多维数组的声明和初始化应按从高维到低维的顺序进行,例如:
int a[][]=new int [3][];
a[0]=new int [2];
a[1]=new int [4];
a[2]=new int [3];
int t1[][]=new int [][4]; //非法
二维数组初始化
静态初始化:
int A[][]={{1,2},{2,3},{3,4,5}};
int B[3][2]={{1,2},{2,3},{3,4,5}}; //非法
动态初始化:
int a[][]=new int[3][5];
int b[][]=new int[3][];
b[0]=new int[2];
b[1]=new int[3];
b[2]=new int[5];
public class Test{public static void main(String[] args){int a[][]={{1,2},{3,4,5,6},{7,8,9}};for(int i=0;i<a.length;i++){for(int j=0;j<a[i].length;j++){System.out.print("a["+i+"]["+j+"]="+a[i][j]+" ");}System.out.println();}}}
数组的拷贝
使用java.lang.System类的静态 public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
如果源数据数目超过目标数组边界会抛出异常IndexOutOfBoundsException
public class TestArrayCopy{public static void main(String[] args){String[] s={"Mcrosoft","IBM","Sun","Oracle","Apple"};String[] sBak=new String[6];System.arraycopy(s,0,sBak,0,s.length);for(int i=0;i<sBak.length;i++){System.out.println(sBak[i]+" ");}System.out.println();int[][] intArray={{1,2},{1,2,3},{3,4}};int[][] intArrayBak=new int[3][];System.arraycopy(intArray,0,intArrayBak,0,intArray.length);intArrayBak[2][1]=100;for(int i=0;i<intArray.length;i++){for(int j=0;j<intArray[i].length;j++){System.out.print(intArray[i][j]+" ");}System.out.println();}}}
- 数组(一)
- 数组一
- 数组(一)
- 一、数组
- 数组(一维数组)
- 数组---一维数组
- 数组一 数组概述 (c#)
- 数组(一维数组)
- java数组--一维数组
- 一维数组,字符数组
- 一维数组、二维数组
- 一维数组&三维数组
- Java数组 一维数组,二维数组
- array 数组 一维数组 二维数组
- 一维数组、数组排序、字符数组
- Javascript - 数组 一维数组 二维数组
- 数组心得(一)
- 面试题(一)数组
- notepad++快捷键
- linux下安装JDK和tomcat
- [转】关于字符集的3篇文章
- 码农如何快速打造一个有设计感的网站
- 数据库常见面试题总结
- 数组一
- 游戏编程书籍
- linux命令
- hdu1305(字典树)
- linux常用命令
- sublime 快捷键
- 微软正在为Windows移动系统研究一款“Siri”
- 利用泛型避免工厂方法强制类型转换
- mac下修改hosts