Java面试常问题目

线程的实现方式:

① 继承Thread类(比较笨重,且因为Java只有单继承,拓展性不强,所以不推荐)

② 实现Runnable接口(推荐)

 

 

启动方式

Thead thread = new Thread(Runnable实现类);

thread.start();    // 执行的是Runnable实现类的run方法)(注:Thread类本身run方法没有任何动作)

对应的构造方法:

init()方法中将传入的Runnable接口(target)赋给了本类的field——target

run():

看见了吧,结合构造方法中执行的this.target = target知道,run执行的其实是传入的target的run方法。

而对于直接使用Thread,即Thead thread = new Thread(); thread.start();  target没有经过覆盖,此时target.run是什么呢?

 

再结合:

知,无参构造函数Thread()在进行初始化时,将本类的target置为了null,而run时如果发现本类target为null就不用运行run了,直接返回。

所以 —————— Thead thread = new Thread(); thread.start(); 时没有执行run()方法。

 

故有一个问题:如果传进去的是用户自定义的Runnable实现类,但是没有重写run方法,那么在start时不会将target覆盖(notNull),这样进入run方法时执行target.run()会发生什么——执行Runnable的run方法?

 

其实这是自己钻进去了,既然自己实现了Runnable接口,那么就得实现接口的全部方法——即run方法,不然连编译都无法通过,所以不存在上面假设的问题。

 

 

区分不同线程:

 

thread.setName("xxx");

thread.getName();

或者直接在创建线程时,指定名称,因为Thread提供这么一个构造方法:

PS: 

① Thread是java.lang包内的,之所以能实现线程,因为它自己就实现了Runnable接口

② Runnable也是java.lang包内的,内容很简单,就一个 public abstract void run() :

 

故 Thread 本身就是一个线程的实现

 

一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用能变,还是引用的对象能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么妥之处? 13 17、请说出作用域public,private,protected,以及写时的区别 13 18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17 24、abstract class和interface有什么区别? 17 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 18 26、什么是内部类?Static Nested Class 和 Inner Class的同。 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 20 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21 29、super.getClass()方法调用 21 30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的区别 23 35、如何把一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 41、运行时异常与一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java中的异常处理机制的简单原理和应用。 28 等等........
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值