加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

9个Java初始化和接纳的口试题

发布时间:2020-12-28 18:55:10 所属栏目:运营 来源:网络整理
导读:1.Java中是怎样区分重载要领的? 通过重载要领的参数范例温次序来举办区分的。 留意:若参数范例温次序均沟通时,不管参数名是否沟通,编译器均会报错,提醒要领已经被界说。且不能按照返回值范例来区分,假如按照返回值来区分的话,偶然措施里挪用要领时并

1.Java中是怎样区分重载要领的?

通过重载要领的参数范例温次序来举办区分的。

留意:若参数范例温次序均沟通时,不管参数名是否沟通,编译器均会报错,提醒要领已经被界说。且不能按照返回值范例来区分,假如按照返回值来区分的话,偶然措施里挪用要领时并不必要返回值,那么措施都无法确定该挪用谁人重载要领。

2.阅读以下措施,表明个中的错误。

public static void testLong(long i) {

System.out.println("test long");

}

public static void testFloat(float i) {

System.out.println("test float");

}

public static void main(String[] args) {

testLong(50);

testFloat(1.5);

}

testLong没有题目,由于转达的参数50是int型的,而吸取方参数是long型的,小范畴可以自动转型为大范畴的数据范例;testFloat不会通过编译,由于转达的参数1.5是double范例的,而吸取方参数是float范例的,大范畴转型为小范畴数据范例必要显式转换,即改为testFloat(1.5f)。

3.阅读以下措施,表明个中的错误。

public static class A {

A(int i) {

System.out.println("A(int i)");

}

}

public static void main(String[] args) {

A a = new A();

}

在界说了自界说结构器后,若要行使默认结构器,则必要显式指定默认结构器,不然A a = new A();不能编译通过。

4.阅读以下措施,表明个中的错误。

public static class A {

A() {

System.out.println("A()");

}

A(int i) {

System.out.println("A(int i)");

}

A(int i,int j) {

A();

A(i);

System.out.println("A(int i,int j)");

}

}

在一个结构器中挪用其余结构器时,必要行使this要害字举办挪用,如this();在一个结构器中可挪用仅一个其余结构器,而且挪用其余结构器的语句需放在挪用者(即发出挪用举动的结构器)语句块的第一行。

5.阅读以下措施,写出执行功效。

public static class A {

private int i;

private String j;

int getI() {

return i;

}

String getJ() {

return j;

}

A(int i) {

i = i;

}

A(String j) {

this.j = j;

}

}

public static void main(String[] args) {

System.out.println(new A(5).getI());

System.out.println(new A("hello").getJ());

}

执行功效为:

0

hello

对付i = i;这个语句而言,它并未改变实例变量i的值,且i的默认值为0,因此功效也为0,若必要改变实例变量i的值,必要改为this.i = i;

6.在一个类中,声明白多少个static要领和非static要领,请谈谈声明的static要领是否能会见声明的非static要领,声名来由?

static要领不能会见非static要领,由于static要领是属于这个类自己的一个要领,在编译时代就已经确定了;而非static要领是属于这个类的工具的要领,必要在实例化之后才气会见到。若在static要领中会见非static要领,将不能通过编译。

7.static要害字为何不能修饰局部变量?

static要害字修饰的变量或要领是属于类的,在编译时就已经确定了;而平凡变量或要领是属于该由类天生的工具,必要在实例化后才气确定。因此,若static要害字修饰了要领的局部变量,一方面要领必要在实例化之后才气确定,另一方面static修饰的变量必要在编译时确定,这就会导致抵牾。

8.finalize()有何用途?什么环境下必要挪用这个函数?

在必要开释内存的处所挪用finalize(),则在下一轮垃圾接纳时会接纳占用的内存,一样平常环境下不必要显式挪用此函数。

垃圾接纳器只能接纳那些由new要害字建设的工具所占用的内存,那么有些不是通过这种方法(好比挪用C++当处所法)所占用的内存怎样接纳呢?那么就必要行使finalize()了。因为C++中必要行使free()函数来开释内存,以是Java措施在挪用C++时必要挪用finalize()要领来开释内存。

9.列出并扼要表明几种常见垃圾接纳技能。

引用计数:每个工具都包括了一个引用计数器,每被引用一次,计数器都加1,引用者被置为null可能烧毁,计数器就减1。垃圾网络器举办轮询,一旦发明计数器的值小于1,就接纳该工具占用的内存。

遏制复制:在垃圾接纳机制运行时,措施必要遏制运行,将每个勾当的工具由一个堆转移到另一个堆,留下的垃圾会被接纳。

标志破除:从仓库和静态存储地区开始,探求到活的工具就对其举办标志,全部的标志进程完成后,就对垃圾举办接纳。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读