您的位置:

java经典问题聚集(java问题汇总)

本文目录一览:

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调用,等他们执行完毕,才会初始化变量。