JAVA面试题

JAVA基础

String相关

String StringBuffer StringBuilder区别
-是否可变是否安全
String××
StringBuilder×
StringBuffer
String可以被继承么

String类被final修饰,不可被继承

String为什么不可变

例:

		String a="111";
        System.out.println(a.hashCode());
        a="222";
        System.out.println(a.hashCode());

看似a的值发生了变化,但是打印a的hashCode发现

		48657
		49650

1.a已经不再是a,因为a的内存地址发生了变化,这就是String的不可变。String其实是一个char数组。

线程相关

创建线程
  1. 继承Thread类
  2. Thread类配合Runnable接口
  3. Thread类配合FutureTask
线程池参数

corePoolSize:核心线程数
maximumPoolSize:最大线程数
keepAliveTime:空闲线程存活时间
unit:空闲线程存活时间单位
workQueue:工作队列
threadFactory:线程工厂
handler:拒绝策略

sleep与wait的区别

sleep
指线程被调用时,占着CPU不工作,形象地说明为“占着CPU睡觉”,此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。
wait
指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。所以sleep(100L)意思为:占用CPU,线程休眠100毫秒wait(100L)意思为:不占用CPU,线程等待100毫秒

基础概念

抽象类和接口的区别

(1)语法 抽象类以abstract关键词修饰 接口以interface关键词修饰

(2)接口全部方法都是抽象方法,属性都是常量。

(3)类只能单继承,接口可以多实现

权限修饰符(有权限打勾)
访问权限当前类当前包子类其他包
public
protect
default(默认)
private
基本数据类型,占用字节,取值范围
数据类型占用字节占用位数取值范围
byte18(-27)- (27-1)
short216(-215)- (215-1)
int432(-231)- (231-1)
long864(-263)- (263-1)
float432精度为7-8位
double864精度为15-16位
char2160~65535
boolean18false/true
final关键词
1.修饰类

当用final去修饰一个类的时候,表示这个类不能被继承。
a. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。
b. final类中的成员方法都会被隐式的指定为final方法

2.修饰方法

被final修饰的方法不能被重写。
a. 一个类的private方法会隐式的被指定为final方法。
b. 如果父类中有final修饰的方法,那么子类不能去重写。

3.修饰成员变量

a. 必须要赋初始值,而且是只能初始化一次。

4.修饰成员变量

a. 必须初始化值。
b. 被fianl修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
c. 如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
d. 如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值