Java程序输出|设置24(最终修改器)

难度等级: 容易的 先决条件: java中的final关键字

null

final keyword in java

预测以下Java程序的输出:

  1. 以下程序的输出是什么?

    class Test
    {
    final int MAXIMUM;
    final double PI;
    public Test( int max)
    {
    MAXIMUM = max;
    }
    public Test( double pi)
    {
    PI = pi;
    }
    public static void main(String[] args)
    {
    Test t1 = new Test( 1500 );
    Test t2 = new Test( 3.145 );
    System.out.println( "MAXIMUM : " + t1.MAXIMUM + " PI : " + t2.PI);
    }
    }

    
    

    a) 编译错误 b) 运行时错误 c) 1500 3.145 d) 3.145 1500

    Ans. a) Compilation error

    说明: 正如我们所知,我们也可以在构造函数中初始化一个空白的最终变量,但如果有多个构造函数,则必须初始化 全部的 所有这些都是最终的变量。这是因为我们可以通过调用任何一个构造函数来创建类的对象,但如果该构造函数没有初始化任何一个声明的最终变量,那么就存在问题。

  2. 以下程序的输出是什么?

    class Test
    {
    final int MAXIMUM = m1();
    private int m1()
    {
    System.out.println(MAXIMUM);
    return 1500 ;
    }
    public static void main(String[] args)
    {
    Test t = new Test();
    System.out.println(t.MAXIMUM);
    }
    }

    
    

    a) 编译错误 b) 运行时错误 c) 0 1500 d) 1500 1500

    Ans. c)

    说明: 最终变量只能初始化一次,可以通过 初始值设定项 或者一份任务陈述。你也可能认为在上面的节目中, 最大限度 初始化两次。这是错误的。输出基于以下事实: JVM 首先用默认类型值初始化任何(最终或正常)变量,然后查看赋值语句(如果有)。

  3. 以下程序的输出是什么?

    // filename : Test1.java
    final interface Test
    {
    int MAXIMUM = 1500 ;
    void m1();
    }
    class Test1 implements Test {
    @Override public void m1()
    {
    System.out.println( "From Test1 m1 method" );
    }
    public static void main(String[] args)
    {
    new Test1().m1();
    }
    }

    
    

    a) 编译错误 b) 运行时错误 c) 来自Test1 m1方法

    Ans. a) Compilation error

    说明: 接口永远不能被声明为final,因为它们应该在派生类中实现。请看 接口与继承

  4. 以下程序的输出是什么?

    class Test {
    public static void main(String[] args)
    {
    int arr[] = { 1 , 2 , 3 };
    // final with for-each statement
    for ( final int i : arr)
    System.out.print(i + " " );
    }
    }

    
    

    a) 编译错误 b) 运行时错误 c) 1 2 3

    Ans. c) 1 2 3

    说明: 因为变量 循环的每次迭代都超出范围,它实际上在每次迭代后都被重新声明,允许使用相同的标记(即。 )用于表示多个变量。

  5. 以下程序的输出是什么?

    class Test {
    public static void main(String[] args)
    {
    final StringBuilder sb = new StringBuilder( "Geeks" );
    sb.append( "ForGeeks" );
    System.out.println(sb);
    }
    }

    
    

    a) 编译错误 b) 运行时错误 c) 极客 d) 极客

    Ans. d) GeeksForGeeks

    说明: 如果是参考最终变量(此处 某人 ),可以更改该引用变量指向的对象的内部状态。请注意,这不是重新分配。final的这个属性叫做 不及物性 .

    本文由 高拉夫·米格拉尼 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

    如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享