欢迎访问沈阳爱尚优才官方网站!
沈阳爱尚优才

初心至善,匠心育人专注于职业教育培训

Practical Training
Information新闻资讯
网站首页   >   新闻资讯   >   IT技术
Java基础面试题解析发布时间:2024-02-22

1. 在Dos命令下,编译java文件,执行Java文件?【掌握】

考核点:Java编译过程。

答:

第一步:编写源程序,源程序扩展名为“.java”;

第二步:在Dos命令行下,进入“.java”文件所在的目录,使用javac命令进行编译源程序;

第三步:编译后,使用Java命令运行编译后的“.class”字节码文件。

2. String是最基本的数据类型吗?基本数据类型有哪些?【掌握】

考核点:基本数据类型。

答:String不是基本数据类型,是引用数据类型。

答:基本数据类型有byte、short、int、long、float、double、char、boolean。

3. int和Integer有什么区别?【重点】

考核点:包装类、基本数据类型。

答:

int是八种基本数据类型中的一个;

Integer是该基本数据类型所对应的包装类;

Integer可以存null值,int不可以;

Integer相比int而言其占用的内存更大一些;

在拆箱和装箱中,二者自动转换。

4. float f=3.4编译能否通过?short s1=1;s1= s1+1;有什么错?【重点】

考核点:自动类型转换。

答:

不正确,不能;

因为Java默认浮点型数据是double类型,所以不能编译,正确写法为float f=3.4f;

因为sl+1的结果为int类型,而int类型不能直接赋值给short类型。

5. String s=null和String s=""的区别?【重点】

考核点:null与空串的区别。

答:

String s=null:s没有初始化,不能使用,否则会引发空指针异常。

String s=””: s的初始值为””,可以正常使用。

6. Swtich是否能作用在byte、long、String类型上? 【重点】

考核点:Switch语句,与JDK7特性。

答:

Swtich可以作用在byte、short、int、char四个类型;

Enum类型在JDK1.5以上的版本可以使用;

String类型在JDK1.7以上的版本中可以使用。

7. 如何把一段使用逗号分割的字符串转换成一个数组?【了解】

考核点:String类常用方法(看看其他的常用方法,至少能说出5个以上)。

答:

第一种,使用String类的split方法:

String str = ”jack,rose,tom,mike,john”;

String[] strs = str.split(",");

l 第二种(可以不答),使用StringTokenizer类,代码为:

StringTokenizer tokener = new StringTokenizer("jack,rose,tom,mike,john ", ",");

String[] result = new String[tokener.countTokens()];

int i = 0;

while (tokener.hasMoreTokens()) {

result[i++] = tokener.nextToken();

}

8. 数组和String类有没有length()这个方法?【了解】

考核点:属性与方法的区别。

答:

数组没有length方法,但是有length属性;

String类有length()方法。

9. String s = new String("xyz");创建了几个对象?【重点】

考核点:String类型的内存原理。

答:

如果String常量池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz"),此时为一个对象;

如果String常量池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz"),此时为二个对象。

10. String a = "abc";创建了几个对象?【重点】

考核点:String类型的内存原理。

答:

0或1个,如果字符串常量池有"abc",创建0个,如果没有就创建1个。

11. char型变量中能不能存贮一个中文汉字?为什么?【重点】

考核点:基本类型的占用范围。

答:

char型变量中能存储一个中文汉字。原因如下:

在Java中,char类型采用的是Unicode编码,每个Unicode编码是16位,每个字节占8位,所以char占两个字节,而汉字占用两个字节;

Unicode编码字符集中包含了汉字;

如果某个汉字没有包含在Unicode字符集中,那么是不能被char型变量存储的。

12. 在Java中,如何跳出当前的多重嵌套循环?【了解】

考核点:break特殊用法。

答:

public void test {  

    A:for (int j = 0; j < 10; j++) {  

        for (int i = 1; i < 10; i++) {  

            if (i == 5) break A;  

        }  

    }

}

13. &&和&,||和|的区别?【重点】

考核点:短路机制、按位比较。

答:

&&前的判断条件为false,就不进行判断&&之后的语句,结果直接为false;

&如果比较的是两个二进制的值,按照按位比较。

||前的判断条件为true,就不进行判断||之后的语句,结果直接为true;

|如果比较的是两个二进制的值,按照按位比较。

14. Math.round(11.5)的结果?Math.round(-11.5)的结果?【了解】

考核点:数学类常用方法。

答:

Math.round(11.5) = 12;

Math.round(-11.5) = -11;

Math.round()方法:四舍五入。

15. final关键字的作用?【重点】

考核点:final关键字。

答:

被final修饰的类不可以被继承;

被final修饰的方法不可以被重写;

被final修饰的变量不可以被改变;

如果修饰引用,那么表示引用不可变,引用指向的内容可变;

被final修饰的方法,JVM会尝试将其内联,以提高运行效率;

被final修饰的常量,在编译阶段会存入常量池中。

16. 内存泄漏和内存溢出?【掌握】

考核点:内存原理。

答:

内存泄漏(Memory Leak):是指应用程序在申请内存后,无法释放已经申请的内存空间,一次内存泄漏危害可以忽略,但如果任其发展最终会导致内存溢出,如读取文件后流要进行及时的关闭以及对数据库连接的释放。

内存溢出(Out Of Memory):是指应用程序在申请内存时,没有足够的内存空间供其使用。如我们在项目中对于大批量数据的导入,容易产生内存溢出,一般采用分批量提交的方式。

17. Java的基础类型和字节大小?【掌握】

考核点:基本数据类型占用空间大小。

答:

布尔型boolean:8位;

字节型byte:8位;

字符型char:16位;

短整型short:16位;

整形int:32位;

长整形long:64位;

浮点型float:32位;

双精度double:64位;

引申,boolean类型分析:

占用1个bit

理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。

占用1个字节

理由是虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。

占用4个字节

理由来源是《Java虚拟机规范》一书中的描述:“boolean数据类型,单独使用是4个字节,在数组中又是1个字节。

总结:

boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义。

18. 数组在内存中如何分配?【重点】

考核点:数组的内存原理

答:

如果一个对象使用new关键字创建,会在堆上分配内存空间,然后返回该对象的引用;

因为数组也是一个对象,所以也会在堆上分配内存空间,然后返回该对象的引用,简单的值类型的数组,每个数组成员是一个引用到运行时常量池上的空间。

19. 在.java源文件中可以有多个类,不包括内部类?【重点】

考核点:编译机制。

答:

一个Java源文件中可以包括多个类,但是单个文件中只能有一个public类,并且该public类必须与文件名相同。

20. String是基本数据类型吗?【掌握】

考核点:String类。

答:

String类不是基本类型,而是一个引用类型。

String类是final类型的,因此不可以继承这个类、不能修改这个类。

实际编码中为了提高效率、节省空间,应该用StringBuffer类、StringBuilder类来更改字符串的值。

21. 什么是值传递和引用传递?【掌握】

考核点:值传递和引用传递。

答:

基本数据传递参数时采用值传递。值传递意味着传递了值一个副本,因此,就算是改变了值副本,也不会影响源值;

引用类型传递参数时采用引用传递。引用传递意味着传递的并不是实际的对象,而是对象的引用,因此,外部对引用对象所做的改变会反映到传递的对象上。

22. JDK和JRE的区别是什么?【重点】

考核点:JDK的组成。

答:

Java运行时环境(JRE)是执行Java程序的Java虚拟机,它同时也包含了执行Applet需要的浏览器插件。

Java开发工具包(JDK)是完整的Java软件开发包,包含了Java开发工具(比如:JavaDoc、Javac)、JRE、Java编译器、Java SE API,可以让开发者开发、编译、执行Java应用程序。

23. 字符串常量池到底存在于内存空间的哪里?【重点】

考核点:Java内存原理。

答:

在JDK1.7之前运行时常量池逻辑包含字符串常量池,并存放在方法区, 此时hotspot虚拟机对方法区的实现为永久代;

在JDK1.7字符串常量池被从方法区拿到了堆中,这里没有提到运行时常量池,也就是说字符串常量池被单独拿到堆,运行时常量池剩下的东西还在方法区,也就是hotspot中的永久代;

在JDK1.8 hotspot移除了永久代用元空间(Meta Space)取而代之,这时候字符串常量池还在堆,运行时常量池还在方法区,只不过方法区的实现从永久代变成了元空间(Meta Space)。

扩展:

Sun的JDK版本从1.3.1开始运用Hotspot虚拟机,2006年底开源,主要使用C++实现,JNI接口部分用C实现。

Hotspot是较新的Java虚拟机,用来代替JIT(Just in Time),可以大大提高Java运行的性能。Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢,Hotspot将常用的部分代码编译为本地(native)代码,提高了性能。

在线留言

需要咨询什么课程可以给我们留言
在线留言
姓名称呼
微信账号
联系方式
所在地址
备注信息
欢迎留言,我们将尽快回复 ——————

微信公众号 沈阳爱尚优才

新媒体培训领取课程大纲
领取视频教程
UI/UE领取课程大纲
领取视频教程
JAVA领取课程大纲
领取视频教程
Python领取课程大纲
领取视频教程
PS/PR培训领取课程大纲
领取视频教程
返回顶部