数组,Array
来源:互联网 发布:淘宝秒杀价真的是1元 编辑:程序博客网 时间:2024/04/28 10:31
数组
每一个数组都有一个属性.length,可以用于获取数组中元素的个数,例如,定义了如下一个数组, int[] in=new int[]{12,3,4},则in.length等于3。
学习到了3个有用的对于数组进行操作的method,一个是在java.lang.system类下的arraycopy方法,其函数原型如下public static void arraycopy(Object src,int srcPos,Object dest, int destPos, int length),各参数的含义从左至右如下,来源数组名,开始拷贝的位置,目的数组名,目的位置,拷贝的长度(元素个数),使用这个方法必须注意数组的越界问题,而且必须捕获该函数抛出的一个IndexOutOfBoundsException异常。另在java.util.Arrays 类下,有Arrays.sort(),和Arrays.binarySearch(数组名,查找元素),前者用于实现数组排序,后者用于在已经实现排序的数组中进行查找,二者都有多个重载。
对于Arrays.sort()而言,如果要排序的数组中的元素是某个类的对象,则要求该类实现Comparable接口,该接口中仅有一个方法即public int compareTo(Object o),要求在子类中实现这个方法,注意它的返回值是一个int类型。
以下是我自己写的一个.java程序,包含了以上我讲到的所有知识点,并另重写了toString()方法用于实现类对象的输出,作为一个复习。在jdk1.5下编译运行通过。import java.util.Arrays;
class Student implements Comparable
{
int num;
String name;
Student(int n,String na)
{
this.num=n;
this.name=na;
}
public int compareTo(Object o) //用于实现引用类型比较的compareTo()方法
{
Student s=(Student)o;
int flag=(this.num>s.num)?1:(this.num-s.num);
if(flag==1)
{
return flag;
}
else
{
return this.name.compareTo(s.name);
}
}
public String toString() //重写用于打印的toString()方法
{
return ("num="+this.num+",name="+this.name);
}
}
class TestArray
{
public static void main(String[] args)
{
int[] in=new int[]{1,2,4,3};
Arrays.sort(in); //排序,在包java.util中
for(int i=0;i<in.length;i++) //数组的.length属性用于返回数组元素的个数
{
System.out.println(in[i]);
}
int[] in1=new int[4];
try
{
System.arraycopy(in,0,in1,0,in.length); //数组拷贝
}
catch(Exception e)
{
System.out.println(e.toString());
}
for(int i=0;i<in1.length;i++)
{
System.out.println(in1[i]);
}
int index=Arrays.binarySearch(in,3); //在已经排序好的数组中查找,在包java.until中
System.out.println("index="+index);
Student[] st=new Student[]{new Student(3,"li"),new Student(3,"wang"),new Student(2,"y")};
Student[] st1=new Student[3];
Arrays.sort(st);
for(int j=0;j<st.length;j++)
{
System.out.println(st[j]);
}
int index1=Arrays.binarySearch(st,new Student(3,"li"));
System.out.println("index1="+index1);
try
{
System.arraycopy(st,0,st1,0,st.length);
}
catch(IndexOutOfBoundsException e)
{
e.printStackTrace();
}
for(int j=0;j<st1.length;j++)
{
System.out.println(st1[j]);
}
}
}
每一个数组都有一个属性.length,可以用于获取数组中元素的个数,例如,定义了如下一个数组, int[] in=new int[]{12,3,4},则in.length等于3。
学习到了3个有用的对于数组进行操作的method,一个是在java.lang.system类下的arraycopy方法,其函数原型如下public static void arraycopy(Object src,int srcPos,Object dest, int destPos, int length),各参数的含义从左至右如下,来源数组名,开始拷贝的位置,目的数组名,目的位置,拷贝的长度(元素个数),使用这个方法必须注意数组的越界问题,而且必须捕获该函数抛出的一个IndexOutOfBoundsException异常。另在java.util.Arrays 类下,有Arrays.sort(),和Arrays.binarySearch(数组名,查找元素),前者用于实现数组排序,后者用于在已经实现排序的数组中进行查找,二者都有多个重载。
对于Arrays.sort()而言,如果要排序的数组中的元素是某个类的对象,则要求该类实现Comparable接口,该接口中仅有一个方法即public int compareTo(Object o),要求在子类中实现这个方法,注意它的返回值是一个int类型。
以下是我自己写的一个.java程序,包含了以上我讲到的所有知识点,并另重写了toString()方法用于实现类对象的输出,作为一个复习。在jdk1.5下编译运行通过。import java.util.Arrays;
class Student implements Comparable
{
int num;
String name;
Student(int n,String na)
{
this.num=n;
this.name=na;
}
public int compareTo(Object o) //用于实现引用类型比较的compareTo()方法
{
Student s=(Student)o;
int flag=(this.num>s.num)?1:(this.num-s.num);
if(flag==1)
{
return flag;
}
else
{
return this.name.compareTo(s.name);
}
}
public String toString() //重写用于打印的toString()方法
{
return ("num="+this.num+",name="+this.name);
}
}
class TestArray
{
public static void main(String[] args)
{
int[] in=new int[]{1,2,4,3};
Arrays.sort(in); //排序,在包java.util中
for(int i=0;i<in.length;i++) //数组的.length属性用于返回数组元素的个数
{
System.out.println(in[i]);
}
int[] in1=new int[4];
try
{
System.arraycopy(in,0,in1,0,in.length); //数组拷贝
}
catch(Exception e)
{
System.out.println(e.toString());
}
for(int i=0;i<in1.length;i++)
{
System.out.println(in1[i]);
}
int index=Arrays.binarySearch(in,3); //在已经排序好的数组中查找,在包java.until中
System.out.println("index="+index);
Student[] st=new Student[]{new Student(3,"li"),new Student(3,"wang"),new Student(2,"y")};
Student[] st1=new Student[3];
Arrays.sort(st);
for(int j=0;j<st.length;j++)
{
System.out.println(st[j]);
}
int index1=Arrays.binarySearch(st,new Student(3,"li"));
System.out.println("index1="+index1);
try
{
System.arraycopy(st,0,st1,0,st.length);
}
catch(IndexOutOfBoundsException e)
{
e.printStackTrace();
}
for(int j=0;j<st1.length;j++)
{
System.out.println(st1[j]);
}
}
}
- 数组,Array
- 数组(array)
- 数组:Array
- 数组Array
- Array-数组
- Array数组
- 数组array
- 数组Array
- 数组(Array)
- 数组array
- Array 数组
- Array数组
- array数组
- Array数组
- 数组array
- 数组 array
- Array数组
- 数组array
- 类 InputStreamReader
- Windows 2003安全设置大全
- AWT-SWT-Swing大比较之一:模型设计与实现
- COM组件设计与应用(四)简单调用组件
- Hibernate性能优化
- 数组,Array
- COM 组件设计与应用(五)用 ATL 写第一个组件
- Javascript拖动效果代码
- compareTo()函数说明翻译
- COM 组件设计与应用(六)用 ATL 写第一个组件
- With commons loggin and Log4j, the TRACE level is replaced with DEBUG level.
- LAMP配置
- COM 组件设计与应用(七)编译、注册、调用
- Receiving SMS Messages Inside a Managed Application