【JAVA】面试题(持续更新ing)

面试题

1、请使用4种方法实现两个变量中数据的交换

	//第一种 借助中间变量
	//声明变量
	int num1 = 3;
	int num2 = 4;
	int temp = num1;
	
	//数据交换
	num1 = num2;
	num2 = temp;
	System.out.println(num1);
	System.out.println(num2);

	//第二种 加减法
	int a = 3;
	int b = 4;
	
	a = a + b;
	b = a - b;
	a = a - b;
	
	System.out.println("a="+ a + ",b=" + b);

	//第三种  乘除法
		int a = 3;
		int b = 4;
		
		a = a * b;
		b = a / b;
		a = a / b;
		
		System.out.println("a="+ a + ",b=" + b);

		// 第四种 异或运算
								//二进制				十进制
		a = 2;            		0010					2
		b = 5;					0101					5
		a = a ^ b;				0111					7
		b = a ^ b;				0010					2
		a = a ^ b;				0101					5
		System.out.println("a="+ a + ",b=" + b);

2、8种数据类型

数值类型:
整数类型:byte、short、int、long
小数:float、double
非数值类型:char、boolen(true/false)

引用数据类型3个
类(String),接口,数组(String是类类型,不是基本类型。)

整数型(byte、short、int 和 long)的基本类型变量的默认值为 0。
单精度浮点型(float)的基本类型变量的默认值为 0.0f。
双精度浮点型(double)的基本类型变量的默认值为 0.0d。
字符型(char)的基本类型变量的默认值为 “\u0000”。
布尔型的基本类型变量的默认值为 false。
数组引用类型的变量的默认值为 null。如果创建了数组变量的实例,但没有显式地为每个元素赋值,则数组中的元素初始化值采用数组数据类型对应的默认值。

3、面向对象的特征有哪些方面?

封装
最常见的是把属性私有化封装在一个类里面,只能通过方法去访问
继承
子类继承父类,从而继承了父类的方法和属性
抽象
比如一个英雄类,抽象出了name,hp这些属性,使得开发过程中更加易于理解
多态
多态分操作符的多态和类的多态。 类的多态指父类引用指向子类对象,并且有继承,有重写。

4、&和&&的区别

& 有两个作用,分别是 位与 和 逻辑与
&& 就是逻辑与
作为逻辑与, & 和 && 分别表示长路与和短路与
长路与 两侧,都会被运算
短路与 只要第一个是false,第二个就不进行运算了

5、short s1 = 1; s1 = s1 + 1;有什么错?

short s1 = 1; 这一句没有错误,编译器会自动把1这个整数处理为short.
s1 = s1 + 1; 右侧的表达式会返回一个Int类型的整数,再把这个int类型的整数赋给short类型的s1的时候,就会出现强制转换错误

6、获取某个区间的随机数

public class random {

	public static void main(String[] args) {
    
		int min = 30;
		int max = 45;
		
		int random = min  + (int)(Math.random()*(max - min));
		System.out.println(random);
	}
}

7、java8中switch(String)的错误解决

在jdk1.7中,switch(String)格式是可以支持的,但是在jdk1.8中却不行

8、开发过程遇到的异常

ArrayIndexOutOfBoundsException: 数组下标越界异常
java.lang.NullPointerException:空指针异常
NegativeArraySizeException 为数组分配的空间是负数异常

运行时异常与一般异常有何异同?
运行时异常 又叫做非可查异常,在编译过程中,不要求必须进行显示捕捉
一般异常又叫做可查异常,在编译过程中,必须进行处理,要么捕捉,要么通过throws 抛出去.

9、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round 的意思是+0.5 取整数
所以 Math.round(11.5) 即 11.5+0.5 = 12
Math.round(-11.5) 即 -11.5+0.5 = -11

10、数组有没有length()这个方法? String有没有length()这个方法?

数组获取长度的手段是 .length 属性
String获取长度的手段是 length()方法
集合获取长度的手段是 size()方法
文件获取长度的手段是 length()方法
NodeList获取长度的手段是getLength()方法

11、switch 是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch 可以作用在 byte,short,int String,Enum(枚举) 上,但是不能作用在long上面

注意:switch 作用在String上从JDK1.7开始支持,实质是编译时将字符串替换为了其对应的hash值

12、在JAVA中,如何跳出当前的多重嵌套循环

在外部循环的前一行,加上标签
在break的时候使用该标签
即能达到结束多重嵌套循环的效果

public class HelloWorld {
    public static void main(String[] args) {
             
        outloop: //outloop这个标示是可以自定义其他:比如outloop1,ol2,out5
        for (int i = 0; i < 10; i++) {
             
            for (int j = 0; j < 10; j++) {
                System.out.println(i+":"+j);
                if(0==j%2)  
                    break outloop; //如果是双数,结束外部循环
            }         
        }
    }
}

13、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

try里的return 和 finally里的return 都会执行,但是当前方法只会采纳finally中return的值

14、关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

throws 用在方法声明上面,表示该方法有可能抛出某个异常
throw 抛出一个指定的异常
try catch 在try中有可能会抛出某个异常,一旦某个异常抛出后,就会在catch中进行捕捉,他俩一般说来都是成对出现的。
finally: 表示无论是否捕捉住异常,都会执行

15、int 和Integer的区别

int是基本类型32位长度的整数
Integer是类类型,是int的封装类
int和Integer之间可以通过自动装箱、自动拆箱互相转换

16、String和StringBuffer以及StringBuilder的区别

String是不可变的,一旦赋值,就不可以改变
举例说明

String str = "abc";
System.out.println(str);
str = str + "123";
System.out.println(str);

结果为

abc
abc123

虽然看上去都是对str进行操作
在第一步

String str = "abc";

JVM对先创建了一个String对象str并赋值"abc";
在第二个str上,实际上JVM又创建了一个名为str的String类型对象,然后又把”123“和原来的str值加起来赋值给新的str

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值