毎日のJava筆記試験-2020-9-18の5つの質問

毎日のJava筆記試験-2020-9-18の5つの質問

  1. ローカル変数はメンバー変数と同じ名前を持つことができますか?

正解:A正解:A(正解)

可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量
可以,这时可用“local”关键字来指向局部变量
不能,局部变量不能与成员变量重名
不能,在一个类中不能有重名变量,不管是成员变量还是函数中的局部变量
  1. 抽象クラスと最終クラスに関して、次のステートメントの何が間違っていますか?

    正解:D正解:C(誤り)

抽象类能被继承,最终类只能被实例化。
抽象类和最终类都可以被声明使用
抽象类中可以没有抽象方法,最终类中可以没有最终方法
抽象类和最终类被继承时,方法可以被子类覆盖

分析:

1.抽象クラスは、抽象メソッドを持つことも、抽象メソッドを持たないこともできます。

2.抽象クラスは継承に使用されるため、もちろん継承できます。

3.抽象クラスを継承する抽象メソッドがある場合、サブクラスはその抽象メソッドを実装する必要があります。

4.抽象クラスの非抽象メソッドはオーバーライドできます。

最後のクラスは、抽象クラスの反対です

5. finalを持つクラスはfinalクラスと呼ばれ、finalを持つメソッドはfinalメソッドと呼ばれます。

6.最終クラスにfinalメソッドがある場合とない場合があります。

7.最終クラスはサブクラスを持つことができず、最終メソッドはオーバーライドできません

  1. サーブレットサービスに関する次の説明のうち、間違っているものはどれですか。

正解:B正解:B(正解)

不管是post还是get方法提交过来的连接,都会在service中处理
doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
service()是在javax.servlet.Servlet接口中定义的
service判断请求类型,决定是调用doGet还是doPost方法

分析:

B

doget / dopostはHttpプロトコルに関連し、javax.servlet.http.HttpServletに実装されています

img

  1. 出力結果を説明してください。

    package test; 
    import java.util.Date;  
    public class SuperTest extends Date{
          
            
        private static final long serialVersionUID = 1L;  
        private void test(){
          
            
           System.out.println(super.getClass().getName());  
        }  
         
        public static void main(String[]args){
          
            
           new SuperTest().test();  
        }  
    }  
    

    正しい答え:Cあなたの答え:A(間違っている)

    SuperTest
    SuperTest.class
    test.SuperTest
    test.SuperTest.class
    

分析:

1.最初に、super.getClass()は親クラスのgetClass()メソッドであり、その親クラスはDateであり、そのgetClass()メソッドはObjectクラスから継承され、オーバーライドされません。

したがって、オブジェクトのgetClass()メソッドを呼び出すだけです。以下に示すようにgetclassのメソッドの説明を見てください ** img**

したがって、現在のランタイムクラスを返すことがわかります。

2. getName()メソッドを呼び出し、getName()が次の場合:パッケージ名+クラス名

  1. ループを最適化する方法は次のうちどれですか

    正しい答え:ABDあなたの答え:D(間違っている)

    强度削弱
    删除归纳变量
    删除多余运算
    代码外提
    

分析:

一般的なコード最適化手法には、コピーの伝播、デッドコードの削除、強度の低下、帰納的変数の削除などがあります。

(以下のPPTや他の人々のブログ、QAQの数ページをコピーしてください。重要なのは、コンパイルの原則が慎重に研究されていないことです。私たちの家族はあまり上手ではありません...)

学生がコンテンツのこの部分を調べて要約し、より良い答えを持っている場合は、この非オリジナルの答えを削除するために私に連絡してください

コピーの伝播:

説明する

  • 重複するステートメント:f = gの形式の割り当て
    • 最適化プロセスで多くの複製が導入されます
    • コピー伝播変換の慣例は、文f = gをコピーした後、gを使用して可能な限りfを表すことです。
    • コピー伝播変換自体は最適化ではありませんが、他の最適化の機会をもたらします
      • 一定のマージ(コンパイル時に実行できる計算)
      • デッドコードの除去

デッドコードの除去

  • デッドコードとは、計算結果が引用されないという記述を指します
  • 一部の最適化変換はデッドコードを引き起こす可能性があります

コード言及

  • コードのアウトソーシングは一種のループ最適化です
  • サイクル最適化のための他の重要なテクニック
    • 帰納的変数の削除
    • 弱まった

例:

while``(i <= limit - ``2``) ...``// 代码外提后变成``t = limit - ``2``;``while``(i <= t) ...

帰納的変数の削除

j = j - ``1``t4 = ``4` `* j``t5 = a[t4]``if` `t5 > value ``goto` `B3
  • jとt4の値は一様に変化し、そのような変数は誘導変数と呼ばれます
  • ループに複数の誘導変数がある場合、おそらく1つだけ残しておく必要があります
  • この操作は帰納的変数削除プロセスによって完了します
  • この例では、最初に強度を弱めることができます。これにより、誘導変数を削除する機会が生まれます

弱まった

  • 強度弱化の本質は、乗算を加算に変更するなど、高強度演算を低強度演算に変換することです。

毎日のJava筆記試験-2020-9-18の5つの質問

  1. ローカル変数はメンバー変数と同じ名前を持つことができますか?

正解:A正解:A(正解)

可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量
可以,这时可用“local”关键字来指向局部变量
不能,局部变量不能与成员变量重名
不能,在一个类中不能有重名变量,不管是成员变量还是函数中的局部变量
  1. 抽象クラスと最終クラスに関して、次のステートメントの何が間違っていますか?

    正解:D正解:C(誤り)

抽象类能被继承,最终类只能被实例化。
抽象类和最终类都可以被声明使用
抽象类中可以没有抽象方法,最终类中可以没有最终方法
抽象类和最终类被继承时,方法可以被子类覆盖

分析:

1.抽象クラスは、抽象メソッドを持つことも、抽象メソッドを持たないこともできます。

2.抽象クラスは継承に使用されるため、もちろん継承できます。

3.抽象クラスを継承する抽象メソッドがある場合、サブクラスはその抽象メソッドを実装する必要があります。

4.抽象クラスの非抽象メソッドはオーバーライドできます。

最後のクラスは、抽象クラスの反対です

5. finalを持つクラスはfinalクラスと呼ばれ、finalを持つメソッドはfinalメソッドと呼ばれます。

6.最終クラスにfinalメソッドがある場合とない場合があります。

7.最終クラスはサブクラスを持つことができず、最終メソッドはオーバーライドできません

  1. サーブレットサービスに関する次の説明のうち、間違っているものはどれですか。

正解:B正解:B(正解)

不管是post还是get方法提交过来的连接,都会在service中处理
doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
service()是在javax.servlet.Servlet接口中定义的
service判断请求类型,决定是调用doGet还是doPost方法

分析:

B

doget / dopostはHttpプロトコルに関連し、javax.servlet.http.HttpServletに実装されています

img

  1. 出力結果を説明してください。

    package test; 
    import java.util.Date;  
    public class SuperTest extends Date{
          
            
        private static final long serialVersionUID = 1L;  
        private void test(){
          
            
           System.out.println(super.getClass().getName());  
        }  
         
        public static void main(String[]args){
          
            
           new SuperTest().test();  
        }  
    }  
    

    正しい答え:Cあなたの答え:A(間違っている)

    SuperTest
    SuperTest.class
    test.SuperTest
    test.SuperTest.class
    

分析:

1.最初に、super.getClass()は親クラスのgetClass()メソッドであり、その親クラスはDateであり、そのgetClass()メソッドはObjectクラスから継承され、オーバーライドされません。

したがって、オブジェクトのgetClass()メソッドを呼び出すだけです。以下に示すようにgetclassのメソッドの説明を見てください ** img**

したがって、現在のランタイムクラスを返すことがわかります。

2. getName()メソッドを呼び出し、getName()が次の場合:パッケージ名+クラス名

  1. ループを最適化する方法は次のうちどれですか

    正しい答え:ABDあなたの答え:D(間違っている)

    强度削弱
    删除归纳变量
    删除多余运算
    代码外提
    

分析:

一般的なコード最適化手法には、コピーの伝播、デッドコードの削除、強度の低下、帰納的変数の削除などがあります。

(以下のPPTや他の人々のブログ、QAQの数ページをコピーしてください。重要なのは、コンパイルの原則が慎重に研究されていないことです。私たちの家族はあまり上手ではありません...)

学生がコンテンツのこの部分を調べて要約し、より良い答えを持っている場合は、この非オリジナルの答えを削除するために私に連絡してください

コピーの伝播:

説明する

  • 重複するステートメント:f = gの形式の割り当て
    • 最適化プロセスで多くの複製が導入されます
    • コピー伝播変換の慣例は、文f = gをコピーした後、gを使用して可能な限りfを表すことです。
    • コピー伝播変換自体は最適化ではありませんが、他の最適化の機会をもたらします
      • 一定のマージ(コンパイル時に実行できる計算)
      • デッドコードの除去

デッドコードの除去

  • デッドコードとは、計算結果が引用されないという記述を指します
  • 一部の最適化変換はデッドコードを引き起こす可能性があります

コード言及

  • コードのアウトソーシングは一種のループ最適化です
  • サイクル最適化のための他の重要なテクニック
    • 帰納的変数の削除
    • 弱まった

例:

while``(i <= limit - ``2``) ...``// 代码外提后变成``t = limit - ``2``;``while``(i <= t) ...

帰納的変数の削除

j = j - ``1``t4 = ``4` `* j``t5 = a[t4]``if` `t5 > value ``goto` `B3
  • jとt4の値は一様に変化し、そのような変数は誘導変数と呼ばれます
  • ループに複数の誘導変数がある場合、おそらく1つだけ残しておく必要があります
  • この操作は帰納的変数削除プロセスによって完了します
  • この例では、最初に強度を弱めることができます。これにより、誘導変数を削除する機会が生まれます

弱まった

  • 強度弱化の本質は、乗算を加算に変更するなど、高強度演算を低強度演算に変換することです。

おすすめ

転載: blog.csdn.net/qq_37924905/article/details/108666899