Java面试题——Java基础篇

本文转载自 微信公众号“Java知音”
内容稍有修改或者添加,侵权则删。

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

考点:Java基础知识

答:Java源文件中可以包含多个类,但是必须只能有一个类是public来修饰的,并且用public来修饰的类名要与文件名一致。

2、Java有没有goto?

考点:保留字

答:goto是java的保留字,现在没有在Java中使用。

3、说说&和&&的区别。

考点:运算符

答:

回答思路:相同点、不同点

相同点:&和&&都可以用作于逻辑与(AND)操作,当符号两侧的表达式结果都为true时,结果才为true,如果两侧表达式有一侧为false,结果为false。

不同点:&&有短路与功能,当符号两侧中,左侧的表达式已经为false,那么右侧表达式就不会执行。如:

if(s != null && str.equals(s)

如果使用短路与&&,s为null时,后面的代码就不会执行,也不会抛出NullPointerException,如果用&的时候,就会抛出这个异常。

其次,&还可以做为位运算符,当&符号两边的符号不为boolean时,&进行按位与操作。

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

考点:控制流程

可以在外层的循环条件中受到内层变量的影响,如:

boolean found = false;
for(int i = 0; i<len && !found;i++){
    for(int j = 0; j<len2 ;j++){
        if(xxxxx){
            found = true;
        }
    }
}

5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

考点:控制流程

swicth(e)中,e支持整型变量和枚举变量,其中整形变量指的是int类型或者其包装类Integer类,显然char,short,byte都可以隐式转换为int,所以他们switch支持他们,long不支持转换为int,因此swicth不支持long,自从Java 1.7之后,swicth已经支持String了。

6、short s1= 1; s1 = s1 + 1;有没有错? short s1 = 1; s1 += 1;有没有错?

考点:运算符、数值类型之间的转换

  1. 有错。因为s1是short类型,而1默认是int类型,所以在进行相加运算时,Java编译器会自动把运算结果提升为Int类型,Int比short类型高阶,需要强制类型转换,在这里没有,因此会报错。
  2. 没有错。+=是Java语言规定的运算法,java编译器会对它进行特殊的处理,因此可以正确编译。

PS:合理的转换如下。从低到高是可以隐式转换的,但是从高到低则不可以隐式转换,并且容易丢失一定的精度。

在这里插入图片描述

7、char型变量中能不能存贮一个中文汉字?为什么?

考点:变量

答:可以。因为char变量用存储Unicode类型的编码,Unicode类型编码中包含中文汉字,因此char也可以用来存贮一个中文汉字,如果一个特殊的中文汉字不包含在Unicode编码中,那么就无法保存。另外,Unicode编码占2个字节,char也占据两个字节。

附带一个Java字符长度表
在这里插入图片描述

8、用最有效率的方法算出2乘以8等於几?

考点:位运算

2 << 3

9、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

考点:Finnal修饰符

在使用final关键字修饰一个变量的时候,是引用的变量不能变,而是不是引用的对象不能变。

例:

final StringBuilder a = new StringBuilder("sasd");

a不能再指向一个新的对象。

但是a指向的对象是可以进行变更的,如:

a.append("haha");

10、静态变量和实例变量的区别?

考点:类变量

不同点:
​ 1. 语法定义上的不同:静态变量在类中定义需要加上static关键字,而实例变量不需要。
2. 程序运行时的区别:静态变量只要程序加载了类的字节码,那么不需要创建任何实例对象,静态变量也会被分配空间,所以静态变量也叫做类变量。实例变量则必须要创建实例对象,才会被分配空间。
3. 使用的区别:静态变量的使用是:类名.变量名;实例变量的使用是:实例名.变量名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些Java基础面试题,希望能帮助您准备面试。 1. Java中的访问修饰符有哪些?它们分别代表什么含义? 答:Java中的访问修饰符有四种,分别是public、private、protected和默认访问修饰符。它们分别代表以下含义: - public:公共的,可以被任何其他类访问; - private:私有的,只能在本类中被访问; - protected:受保护的,可以被同一包中的其他类和不同包中的子类访问; - 默认访问修饰符:没有关键字修饰,只能在同一包中被访问。 2. Java中的异常处理机制是什么? 答:Java中的异常处理机制是通过try-catch-finally语句块来实现的。在try块中编写可能引起异常的代码,在catch块中捕获异常并进行处理,在finally块中编写必须执行的代码。如果在try块中发生异常,程序会跳转到catch块中进行异常处理,如果catch块中没有捕获到异常,异常会继续向上抛出,直到被处理或者导致程序崩溃。 3. Java中的多态是什么? 答:Java中的多态是指同一个方法可以在不同的对象中表现出不同的行为。多态可以通过继承、接口实现和方法重载等方式实现。 4. Java中的线程是什么?如何创建线程? 答:Java中的线程是指程序中独立运行的子任务,可以并发执行。Java中可以通过继承Thread类或者实现Runnable接口来创建线程。具体实现方式可以参考以下代码: - 继承Thread类: ``` class MyThread extends Thread { public void run() { // 线程执行的代码 } } // 创建线程示例 MyThread myThread = new MyThread(); myThread.start(); // 启动线程 ``` - 实现Runnable接口: ``` class MyRunnable implements Runnable { public void run() { // 线程执行的代码 } } // 创建线程示例 MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start(); // 启动线程 ``` 5. Java中的反射是什么? 答:Java中的反射是指程序在运行时动态获取类信息、调用对象方法、访问或修改对象属性的能力。Java中的反射可以通过Class类和java.lang.reflect包中的相关类实现。反射可以使得程序更加灵活,但是也会带来一定的性能损耗。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值