Java數組的相關操作
1> 在Java中所有的數組都有一個缺省的屬性length,用于獲取數組元素的個數。
2> 數組的復制: System.arraycopy()。
3> 數組的排序: Arrays.sort()。
4> 在已排序的數組中查找某個元素:Arrays.binarySearch()。
具體的看看下面的2個例子:
code1:
class ArrayTest
{
?public static void main(String[] args)
?{
??/*數組的copy
??int[] num1=new int[]{1,2,3};
??int[] num2=new int[3];
??System.arraycopy(num1,0,num2,0,num1.length);
??for(int i=0;i<num2.length;i++)
??{
???System.out.println(num2[i]);
??}
??*/
??//引用類型的數組copy
??Point[] pts1=new Point[]{new Point(1,1),new Point(2,2),new Point(3,3)};
??Point[] pts2=new Point[3];
??System.arraycopy(pts1,0,pts2,0,pts1.length);
??for(int i=0;i<pts2.length;i++)
??{
???System.out.println("x="+pts2[i].x+","+"y="+pts2[i].y);
??}
??/*
??*因為引用類型傳遞的是引用的拷貝,所以我們修改pts2數組的第二個點的坐標,
??*當我們打印pts1數組的第一個點的坐標時,它的坐標點已經被修改為(5,5)了
??pts2[1].x=5;
??pts2[1].y=5;
??System.out.println("x="+pts1[1].x+","+"y="+pts1[1].y);
??*/
?}
}
class Point
{
?int x, y;
?Point(int x,int y)
?{
??this.x=x;
??this.y=y;
?}
}
code2:
import java.util.*;
class TestArray
{
?public static void main(String[] args)
?{
??/*
??int[] num=new int[]{3,2,1};
??Arrays.sort(num);
??for(int i=0;i<num.length;i++)
??{
???System.out.println(num[i]);
??}
??int index=Arrays.binarySearch(num,3);
??System.out.println("index="+index);
??System.out.println("Element="+num[index]);
??*/
??Student[] ss=new Student[]{new Student("zhangshan",1),
??????????????????????????? new Student("lisi",2),
??????????????????????????? new Student("wangwu",3),
??????????????????????????? new Student("mybole",3)};
?? Arrays.sort(ss);
?? for(int i=0;i<ss.length;i++)
?? {
?? ?System.out.println(ss[i]);
?? }
?? int index=Arrays.binarySearch(ss,new Student("lisi",2));
?? System.out.println("name="+ss[index].name+","+"index="+index);
?}
}
class Student implements Comparable
{
?String name;
?int num;
?Student(String name,int num)
?{
??this.name=name;
??this.num=num;
?}
?public String toString()
?{
??return "name="+name+","+"number="+num;
?}
?public int compareTo(Object o)? //對于Object[]排序要求實現Comparable接口
?{
??Student s=(Student)o;
??//return num>s.num ? 1 :(num==s.num ? 0 : -1);
??int result=num>s.num ? 1 :(num==s.num ? 0 : -1);//按名字排序
??if(0==result)
??{
???result=name.compareTo(s.name);
??}
??return result;
?}
}
??? 于是我想成全你,先是照樣給你掉下一個蘋果,結果你把它吃了。我決定換一個方法,在你閑逛時將碩大無朋的卡里南鉆石偷偷放在你的腳邊,將你絆倒,可你爬起后,怒氣沖天地將它一腳踢下陰溝。最后我干脆就讓你做拿破侖,不過像對待他一樣,先將你抓進監獄,撤掉將軍官職,趕出軍隊,然后將你身無分文地拋進塞納河邊。就在我催促約瑟芬駕著馬車匆匆趕到河邊時,遠遠地聽到“撲通”一聲,你投河自盡了。?
??? ?唉!你錯過的僅僅是機會嗎?
???? 成功并不是一個固定的蛋糕,數量有限,別人切了,你就沒有了。不是那樣,成功的蛋糕是切不完的,關鍵是你是否去切.你能否成功,與別人的成敗毫無關系.只有你想成功,才有成功的可能.
???? 宋朝著名的禪師大慧,門下有一個弟子道謙.道謙參禪多年,仍無開悟.一天晚上,道謙誠懇的向師兄宗元訴說自己不能悟道的苦惱,并求師兄幫忙.
???? 宗元說:
???? "我能幫你當然樂意之至,不過有三件事我無能為力,你必須自己去做!"
???? 道謙忙問是哪三件.
???? 宗元說:
???? "當你口渴時,我的飲食不能填飽你的肚子,我不能幫你吃喝,你必須自己飲食;當你想大便時,你必須親自解決,我一點也幫不上忙;最后,除了你自己之外,誰也不能馱著你的身子在路上走."
???? 道謙聽罷,心扉豁然洞開,快樂無比,他感到了自我的力量.
???? 成功,首先始于自愿自覺.
???? 當一個人失去生活的目的和意義,萬念俱灰時,我們說"無藥可救";當一個人動了念頭,人了死理,哪怕上刀山下火海不達目的不罷休時,我們說"矢志不渝".
???? 自己的事自己做.始于心動,成與行動.
????? 堅定的行動,必然源于深刻的認識和覺悟.
?通過覆蓋父類的方法來實現,在運行時根據傳遞對象的引用,來調用相應的方法.
code:
class Animal
{
?int height,weight;
?Animal()
?{
??System.out.println("Animal construct");
?}
?void eat()
?{
??System.out.println("Animal eat!");
?}
?void sleep()
?{
??System.out.println("Animal sleep!");
?}
?void breathe()
?{
??System.out.println("Animal breathe!");
?}
}
class Fish extends Animal
{
?Fish()
?{
??System.out.println("Fish construct");
?}
?void breathe()? //override method breathe()
?{
??System.out.println("Fish bubble");
?}
}
class DoMain
{
?static void fn(Animal an)
?{
??an.breathe();
?}
?public static void main(String[] args)
?{
??//Animal an=new Animal();
??Fish fh=new Fish();
??Animal an;
??an=fh;
??DoMain.fn(an);
?}
}