JAVA基础面试题汇总集(持续更新)

1、java基本数据类型

在这里插入图片描述

2、instanceof关键字的作用

介绍:Java 中的instanceof 是一个二元操作符(运算符)运算符,由于是字母组成,所以是Java的保留关键字,但是和>=,<=,==属同一类,它的作用是用来判断,instanceof 左边对象是否为instanceof 右边类的实例,返回一个boolean类型值。还可以用来判断子父类的所属关系。

//判断object是否是Class的实例对象,可以的子父类的所属关系
boolean result = object instanceof class 
//或者当做三元运算符使用
A  instanceof B ? A : C;
//需要注意一下:instanceof只适用于引用类型,基本数据类型是编译不通过的
int i = 1;
boolean flag = i instanceof Object

3、java的显式转换和隐式转换

介绍:显式类型转换也叫强制类型转换
转换规则:从存储范围大的类型到存储范围小的类型
double(8)→float(4)→long(8)→int(4)→short/char(2)→byte(1)
例子:

// 大转小
double a = 1.02;
int c = (int)a;

介绍:隐式转化有叫自动类型转换。由系统自动完成的类型转换.
转换规则:从存储范围小的类型到存储范围大的类型
byte(1)→short/char(2)→int(4)→long(8)→float(4)→double(8)
例子:

// 小转大,不需要强转,自动完成转换
int a = 10;
double b = a;

4、数组的创建方式

		//方式1
		int[] arr = new int[3];
		System.out.println(Arrays.toString(arr));
		
		String[] str = new String[3];
		System.out.println(Arrays.toString(str));
		
		char[] cha = new char[3];
		System.out.println(Arrays.toString(cha));
		
		//方式2
		int[] arr1 = {1,2,3};
		System.out.println(Arrays.toString(arr1));
		//方式3
		int[] arr2 = new int[] {3,4,5};
		System.out.println(Arrays.toString(arr2));

输出结果:
[0, 0, 0]
[null, null, null]
[ , , ]
[1, 2, 3]
[3, 4, 5]

5、StringBuilder和StringBuffer的区别

1.StringBuilder是线程不安全的;StringBuffer是线程安全的;
2.需要探讨的问题:
a、为什么StringBuilder是线程不安全的;StringBuffer是线程安全的?
答:首先他们俩都继承的是抽象类AbstractStringBuilder;而对于StringBuilder他重写的父类方法是没有加synchronized关键字的;StringBuffer确实加上了该关键字,可以达到线程安全;

// 这是StringBuilder重写父类的append方法
    @Override
    public StringBuilder append(String str) {
        super.append(str);
        return this;
    }
// 这是StringBuffer重写父类的append方法
    @Override
    public synchronized StringBuffer append(String str) {
        toStringCache = null;
        super.append(str);
        return this;
    }

6、五种引用

1、强引用

介绍:如果一个对象具有强引用,GC绝不会回收它;当内存空间不足,JVM宁愿抛出OutOfMemoryError错误。一般new出来的对象都是强引用,如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了;

// 通过new创建的对象一般都是强引用
User user = new User();
//手动修改地址,指向null,中断强引用,让JVM回收
user = null;

2、软引用

介绍:软引用是用来描述一些有用但并不是必需的对象。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。JDK 1.2之后,提供了SoftReference泛型类来实现软引用。

	public static void main(String[] args) {
        SoftReference<String> sr = new SoftReference<String>(new String("hello"));
        System.out.println(sr.get());
	}

3、弱引用

4、虚引用

5、引用队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值