誰に習いますか:オンライン筆記試験(java)

1414 ワード

1.++iとi++の問題
public class Test {

    public static int test(){
        int i = 0;
        try {
            i++;
            i = i/0;
            return i++;
        }catch (Exception e){
            i++;
            return i++;
        }finally {
            return ++i;
        }
    }

    public static void main(String[] args) {
        System.out.println(test());

    }
}

結果:4
return i++;実は1は加算されませんがcatchのreturn文は実行されずfinallyに入ってreturnを実行します
2.java 8 streamストリームの使用
3.アルゴリズム:双方向チェーンテーブルの追加と削除
4.アルゴリズム:ルート番号を付けますが、6桁の小数を保持します(ライブラリ関数は使用できません)
5.sql文の連結表は調べますが、条件はwhere t 2です.city=xxxとwhereがandで代わる違い
6.Stringパラメータ問題
package test;

public class StringTest
{
    public static void test(String word){
        word = "hey";
        System.out.println(word + " boy!");
    }

    public static void main(String[] args) {
        String str = "hello";
        test(str);
        System.out.println(str);

    }

}

出力結果:
hey boy! hello
Stringインバウンド
まずStringオブジェクトの内容は変更できないことを理解する必要があります.
mainメソッドのstrは参照であり、strは「hello」というStringオブジェクトを指すメモリアドレスを保存します.
test(str)ではこのメモリアドレスをこの方法の変数に割り当て,word
helloをheyに変更するのではなく、
メモリアドレスをwordにコピーしましたが、後でwordという変数をheyに変更すると、定数プールに新しく作成されます.
しかし実際のwordがどのように変化するかは外層メソッドとは関係なく、参照を局所変数に付与しているため、後のStrで新しい文字列を作成しても元の上書きは行われません.
新しく生成されます