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

发布时间:2022-11-10

本文目录一览:

  1. java的小问题,见笑,若能详细解答,30分送上
  2. [Java代码编程 经典的兔子问题?](#Java代码编程 经典的兔子问题?)
  3. 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,返回 truetrue 的话继续 i2,此时 i=0;也为 true,所以可以执行下面的代码:

i++; //i=1
foo('d') //输出d,返回true

然后是 foo('c') //输出 c,返回 true。 接下来在进入 foo('b')(i2) 比较,foo('b') 输出 b,返回 truei2 也返回 truei1 吗? 然后再继续:

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 调用是完成对父类的调用。二者只能出现一个,并且只能作为构造函数的第一句出现。在调用 thissuper 的时候实现程序的跳转,转而执行被调用的 this 构造函数或者 super 构造函数。 在 thissuper 执行完毕,程序转而执行在类定义的时候进行的变量初始化工作。 这个执行完毕,才是构造函数中剩下的代码的执行。 所以,new 一个类的时候,会先调用类中的 thissuper 调用,等他们执行完毕,才会初始化变量。