java面试题

目录

1.== 和 equals的区别?

2.++在前和++在后的区别?

3.方法重载和方法重写的区别?

4.list和set的区别?

5.StringBuffer和StringBuilder的区别?

6.Java中的IO流分为几种?

7.抽象类和接口的区别?

9.线程的启动方式有哪些?

方式一

方式二

方式三实现Callable方式开启线程FutureTaskpublic class FutureTask Implements RunnableFuture {}


1.== 和 equals的区别?

==:比较基本数据类型——值是否相等

        比较引用数据类型——地址是否相等

equals:只能用于比较引用数据类型:如果不重写则与“==”相同,比较地址是否相同,如果重写,则可根据自己需求来比较属性是否相等。

2.++在前和++在后的区别?

++在前 表示变量先自增再赋值

++在后则是先赋值在自增

3.方法重载和方法重写的区别?

方法重载:在同一个类中,方法的方法名相同,参数列表不同的方法。

方法重写:在具有继承关系的子类中,方法与父类的方法名,参数列表相同的方法。       

访问修饰符,访问范围要大于或等于父类的访问范围

4.list和set的区别?

list和set都继承自Collection接口

list元素有序,可重复;set元素无序,不可重复。

list查找元素效率高,插入删除效率低;

set与list相反。

5.StringBuffer和StringBuilder的区别?

两者都为可变类型字符串;

StringBuffer线程安全,StringBuilder线程不安全,StringBuilder的性能高于StringBuffer,StringBuilder适用于单线程,StringBuffer适用于多线程。

6.Java中的IO流分为几种?

  • 按照流的流向分,可以分为输入流和输出流;
  • 按照操作单元划分,可以划分为字节流和字符流;
  • 按照流的角色划分为节点流和处理流。

7.抽象类和接口的区别?

接口是对动作的抽象,抽象类是对本质的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。

a.抽象类 和 接口 都是用来抽象具体对象的,但是接口的抽象级别最高;

b.抽象类可以有具体的方法和属性,  接口只能有抽象方法和不可变常量(final);

c.抽象类主要用来抽象类别,接口主要用来抽象功能;

d.抽象类中不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的;

e.抽象类实现接口时,接口的方法在抽象类中可以被实现也可以不被实现,而普通实现接口必须实现所有接口方法。


9.线程的启动方式有哪些?

方式一

方式一:继承Thread类
1.自定义类MyThread继承Thread类

2.MyThread类重写run方法。

3.创建线程对象

方式二

方式二:实现Runnable接口

1.自定义类MyRunnable实现Runnable接口

2.重写run()方法

3.创建MyRunnable类的对象

4.创建Thread类的对象,并把步骤3创建的对象作为构造参数传递

5.启动线程

实现接口方式的好处:

可以避免由于Java单继承带来的局限性

适合多个相同程序的代码去处理同一个资源的情况,把线程同程序的代码,数据有效分离,

较好的体现了面向对象的设计思想

方式三
实现Callable方式开启线程
FutureTask
public class FutureTask Implements RunnableFuture {
}

public interface RunnableFuture extends Runnable, Future{
void run();
}

public interface Future {
V get() throws InterrptedException, ExecutionException;
}

实现Runnable和实现Callable接口的区别
1.有返回值

2.可以声明异常
这里的返回值和异常抛出都是给到线程的启动者
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值