日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java有关问题,java经典有关问题!

發(fā)布時(shí)間:2024/7/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java有关问题,java经典有关问题! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java經(jīng)典問題!!!

問題一:==與equal的區(qū)別?

==和 equals 都是比較的,而前者是運(yùn)算符,后者則是一個(gè)方法,基本數(shù)據(jù)類型和引用數(shù)據(jù)類型都可以使用運(yùn)算符==,而只有引用類型數(shù)據(jù)才可以使用 equals,下面具體介紹一下兩者的用法以及區(qū)別.

==操作符專門用來比較兩個(gè)變量的值是否相等,也就是用于比較變量所對(duì)應(yīng)的內(nèi)存中所存儲(chǔ)的數(shù)值是否相同,要比較兩個(gè)基本類型的數(shù)據(jù)或兩個(gè)引用變量是否相等,只能用==操作符。

如果一個(gè)變量指向的數(shù)據(jù)是對(duì)象類型的,那么,這時(shí)候涉及了兩塊內(nèi)存,對(duì)象本身占用一塊內(nèi)存(堆內(nèi)存),變量也占用一塊內(nèi)存,例如 Objet obj = new Object();變量 obj是一個(gè)內(nèi)存, new Object()是另一個(gè)內(nèi)存,此時(shí),變量 obj 所對(duì)應(yīng)的內(nèi)存中存儲(chǔ)的數(shù)值就是對(duì)象占用的那塊內(nèi)存的首地址。對(duì)于指向?qū)ο箢愋偷淖兞?#xff0c;如果要比較兩個(gè)變量是否指向同一個(gè)對(duì)象,即要看這兩個(gè)變量所對(duì)應(yīng)的內(nèi)存中的數(shù)值是否相等,這時(shí)候就需要用==操作符進(jìn)行比較。equals 方法是用于比較兩個(gè)獨(dú)立對(duì)象的內(nèi)容是否相同,就好比去比較兩個(gè)人的長相是否相同,它比較的兩個(gè)對(duì)象是獨(dú)立的。例如,對(duì)于下面的代碼:

String a=new String("heima");

String b=new String("heima");

兩條 new 語句創(chuàng)建了兩個(gè)對(duì)象,然后用 a,b 這兩個(gè)變量分別指向了其中一個(gè)對(duì)象,這是兩個(gè)不同的對(duì)象,它們的首地址是不同的,即 a 和 b 中存儲(chǔ)的數(shù)值是不相同的,所以,表達(dá)式 a==b 將返回 false,而這兩個(gè)對(duì)象中的內(nèi)容是相同的,所以,表達(dá)式 a.equals(b)將返回 true。

equals 本身是一個(gè)方法,它是根類 Object 里邊的方法,所有類和接口都直接或者間接繼承自 Object,所以在所有的類中都有 equals()方法,都是繼承來的,

在實(shí)際開發(fā)中,我們經(jīng)常要比較傳遞進(jìn)行來的字符串內(nèi)容是否等,例如, String input = …;input.equals(“quit” ),許多人稍不注意就使用==進(jìn)行比較了,這是錯(cuò)誤的,隨便從網(wǎng)上找?guī)讉€(gè)項(xiàng)目實(shí)戰(zhàn)的教學(xué)視頻看看,里面就有大量這樣的錯(cuò)誤。記住,字符串的比較基本上都是使用 equals 方法。

如果一個(gè)類沒有自己定義 equals 方法,那么它將繼承 Object 類的 equals 方法,Object 類的 equals 方法的實(shí)現(xiàn)代碼如下:

booleanequals(Object o){return this==o;

}

這說明,如果一個(gè)類沒有自己定義 equals 方法,它默認(rèn)的 equals 方法(從 Object類繼承的)就是使用==操作符,也是在比較兩個(gè)變量指向的對(duì)象是否是同一對(duì)象,這時(shí)候使用 equals 和使用==會(huì)得到同樣的結(jié)果,如果比較的是兩個(gè)獨(dú)立的對(duì)象則總返回 false。如果你編寫的類希望能夠比較該類創(chuàng)建的兩個(gè)實(shí)例對(duì)象的內(nèi)容是否相同,那么你必須覆蓋equals 方法,由你自己寫代碼來決定在什么情況即可認(rèn)為兩個(gè)對(duì)象的內(nèi)容是相同的。代碼,試一下 equals 和==的區(qū)別

/** ==和 equals 的用法以及區(qū)別

**/

public classTestEqulas{public static voidmain(String[] args) {

String s= new String("heima");

String s2= new String("heima");

System.out.println(s.equals(s2));//輸出 true,因?yàn)?String 類已經(jīng)重寫了 equals

System.out.println(s == s2);//輸出 false,因?yàn)閮烧叩牡刂肥遣煌?/創(chuàng)建三個(gè)動(dòng)物對(duì)象//a1 和 a2name 和 age 都相同

Animal a1 = new Animal("Tom",5);

Animal a2= new Animal("Tom",5);//先試一下用==比較鏈各個(gè)對(duì)象

System.out.println(a1 ==a2);//輸出 false,兩個(gè)對(duì)象內(nèi)容相同,但是他們的引用首地址不同//首先將自己寫的 equals 方法注釋掉,看輸出結(jié)果是什么

boolean b =a1.equals(a2);

System.out.println(b);//結(jié)果為 false,證明是調(diào)用的繼承來的那個(gè) equals 方法//然后我們調(diào)用自己已經(jīng)重寫的 equals,再看下結(jié)果

b = a1.equals(a2);//現(xiàn)在調(diào)用的是已經(jīng)重寫后的方法

System.out.println(b);//所以打印的是 true

}

}

public classAnimal {privateString name;private intage;publicAnimal(){}public Animal(String name,intage){this.name =name;this.age =age;}public voidsetName(String name){this.name =name;

}publicString getName(){returnname;

}public void setAge(intage){this.age =age;

}public intgetAge(){returnage;

}//重寫了 equals 方法

public booleanequals(Object o){//判斷兩個(gè)對(duì)象是否為同一個(gè)對(duì)象,如果是就直接返回 true

if (this ==o) {return true;

}//再判斷另一個(gè)對(duì)象 o 是否是 null,如果是 null 就沒有必要再比了,肯定不相等,直接返回

if (o == null) {return false;

}return false;

}

}

問題二:質(zhì)數(shù)問題

packagecom.oumyye.質(zhì)數(shù);importjava.util.Random;public classSnippet {public static voidmain(String[] args){

Random rd= new Random(); //定義一個(gè)隨機(jī)變量

int i = rd.nextInt(1000); //獲取個(gè)隨機(jī)數(shù)

System.out.println(isNum(i)); //輸出結(jié)果

}public static String isNum(inti ){

String ret=i+"是質(zhì)數(shù)"; //默認(rèn)是質(zhì)數(shù)

if(i==2)return ret; //如果是 2 返回默認(rèn)結(jié)果

for (int j = 2; j < i/2; j++) { //制訂循環(huán)次數(shù)

if(i%j==0){

ret=i+"不是質(zhì)數(shù)"; //如果能夠整除返回不是質(zhì)數(shù)

break;

}

}return ret; //返回結(jié)果

}

}

問題三:求解5階螺旋矩陣問題

1 ? 2 ? 3 ? 4 ?5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

public classLXJZQJ {public static voidmain(String[] args) {int n = 5;//0:向右,1:向下,2:向左,3:向上

int direction = 0;//行,列

int row = 0, col = 0;int num = 0;int[] array = new int[n *n];while (array[row * n + col] == 0) {

num++;

array[row* n + col] =num;switch(direction) {case 0:

col++;break;case 1:

row++;break;case 2:

col--;break;case 3:

row--;break;

}if (row == n || col == n || row == -1 || col == -1

|| array[row * n + col] != 0) {

direction++;if (direction == 4)

direction= 0;switch(direction) {case 0:

row++;

col++;break;case 1:

row++;

col--;break;case 2:

row--;

col--;break;case 3:

row--;

col++;break;

}

}

}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {

System.out.printf("%-3s", array[i * n +j]);

}

System.out.println();

}

}

}

總結(jié)

以上是生活随笔為你收集整理的java有关问题,java经典有关问题!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。