难度等级: 容易的 先决条件: java中的final关键字
预测以下Java程序的输出:
- 以下程序的输出是什么?
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
说明: 正如我们所知,我们也可以在构造函数中初始化一个空白的最终变量,但如果有多个构造函数,则必须初始化 全部的 所有这些都是最终的变量。这是因为我们可以通过调用任何一个构造函数来创建类的对象,但如果该构造函数没有初始化任何一个声明的最终变量,那么就存在问题。
- 以下程序的输出是什么?
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 首先用默认类型值初始化任何(最终或正常)变量,然后查看赋值语句(如果有)。
- 以下程序的输出是什么?
// 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,因为它们应该在派生类中实现。请看 接口与继承
- 以下程序的输出是什么?
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
说明: 因为变量 我 循环的每次迭代都超出范围,它实际上在每次迭代后都被重新声明,允许使用相同的标记(即。 我 )用于表示多个变量。
- 以下程序的输出是什么?
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主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。