本文目录一览:
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调用,等他们执行完毕,才会初始化变量。