本文目錄一覽:
java的小問題,見笑,若能詳細解答,30分送上
String 在java里是比較特殊,雖然String是類,一般類的話都要new一個對象才能用,但是String的話可以像那些基本的數據類型如int,可以直接複製,而當你這樣直接複製時,傳遞的就是值傳遞而不是應用傳遞,所以你後面改了,原來的str還是真么多,其實String是不能修改的,如果你重新給String str複製,系統就會新建一個String對象來存放新的值,而str就指向新的值,而原來的值則已經沒有指針再指向它,所以直接被回收,如果你是是寫成String str=new String(“ss”);
然後你傳遞str,改值後看看結果,還是沒變
在for循環里
先是foo(‘a’),調用一下輸出為a,返回true,然後還不能往下,還要先比較foo(』b』)(i2);,
foo(‘b’)輸出b,返回true,true的話繼續i2,此時i=0;也為true,所以可以執行下面的代碼
i++; //i=1
foo(‘d’)//輸出d,返回true
然後是foo(‘c’)//輸出c,返回true;
接下來在進入foo(』b』)(i2)比較,foo(‘b’)輸出b,返回ture,i2也返回true,i為1嗎
然後再繼續i++//i=2;
foo(‘d’)//輸出d,返回true
再foo(‘c’)//輸出c,返回true
在進入foo(』b』)(i2)比較i==2,以不在小於2,所以為false,退出for循環
Java代碼編程 經典的兔子問題?
這是斐波那契數列的問題
可以用遞歸,也可以用循環
遞歸:
public class Demo3 {
// 使用遞歸方法
private static int getFibo(int i) {
if (i == 1 || i == 2)
return 1;
else
return getFibo(i – 1) + getFibo(i – 2);
}
public static void main(String[] args) {
System.out.println(“斐波那契數列的前20項為:”);
for (int j = 1; j = 20; j++) {
System.out.print(getFibo(j) + “\t”);
if (j % 5 == 0)
System.out.println();
}
}
}
循環:
public class Demo2 {
// 定義數組方法
public static void main(String[] args) {
int arr[] = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i arr.length; i++) {
arr[i] = arr[i – 1] + arr[i – 2];
}
System.out.println(“斐波那契數列的前20項如下所示:”);
for (int i = 0; i arr.length; i++) {
if (i % 5 == 0)
System.out.println();
System.out.print(arr[i] + “\t”);
}
}
}
java問題,重賞!
很經典的例子。
其他的我想樓主應該都清楚了,主要還有一點。
初始化一個類的時候,當進入該類構造函數後。
在構造函數裡面,首先要檢查是否有this或者super調用,this調用是完成本類本身的構造函數之間的調用,super調用是完成對父類的調用。二者只能出現一個,並且只能作為構造函數的第一句出現。在調用this和super的時候實現程序的跳轉,轉而執行被調用的this構造函數或者super構造函數。
在this和super執行完畢,程序轉而執行在類定義的時候進行的變數初始化工作。
這個執行完畢,才是構造函數中剩下的代碼的執行。
所以,new一個類的時候,會先調用類中的this,super調用,等他們執行完畢,才會初始化變數。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129584.html