数组,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]);
  }
 }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 c盘满了怎么办win10 win10电脑开机密码忘了怎么办 win10的开机密码忘了怎么办 u盘中了exe病毒怎么办 眼睛长个麦粒豆怎么办 苹果手机sdk授权失败怎么办 小米5王者荣耀卡怎么办 华为p9手机电池不耐用怎么办 华为g9青春版耗电快怎么办 华为手机摄像头坏了怎么办 华为p10摄像头玻璃划痕怎么办? 华为g9手机音量小怎么办 华为7pius太卡怎么办 华为畅享7plus卡怎么办 华为p9屏幕进水变颜色怎么办? 玩王者荣耀卡退怎么办 华为手机忘记开机密码怎么办 华为p9密码忘了怎么办 华为p9解锁密码忘了怎么办 华为手机不支持联通4g怎么办 酷派手机自动下载软件怎么办 小米5a不能开机怎么办 华为手机的视频找不到了怎么办 华为p8内存文件打不开怎么办 华为荣耀9网速慢怎么办 荣耀9手机网速慢怎么办 联想台式机不支持xp驱动怎么办 一体机尾插坏了怎么办 华为手机触屏失灵怎么办 华为p8max手机老是卡怎么办 手机屏碎了数据怎么办 华为p9屏碎了怎么办 华为p7一l09卡顿怎么办 华为p7打不开机怎么办 华为8主板坏了怎么办 华为手机主板坏了怎么办 华为p9文字变英文了怎么办 华为p9plus电池不耐用怎么办 华为mate8手机音量小怎么办 同花顺自选股更新不显示怎么办 华为麦芒定频了怎么办