Java面试题及答案第一波袭来!

问:JDK和JRE的区别是什么?他们各自有什么用?

答:JDK是Java开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac、Java、Javaw等。JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。


问:如何利用JDK编译和运行程序?

答:利用JDK提供的javac来编译源文件,然后利用Java命令来运行Java程序。


问:环境变量classpath作用是什么?

答:classpath环境变量保存的是一些目录和jar文件地址,这些路径是为Java程序在编译和运行时搜索类而用的。


问:Java与C++程序在编译和运行上有什么区别?

答:C++源码编译以后生成的是可以在特定机器上运行的文件,而Java源码经过编译后生成的是中间的字节码文件,这些字节码是需要放在JVM中运行的,而JVM是有多个平台版本的,所以Java具有跨平台性,而C++没有。


问:什么事JVM及其工作原理?

答:JVM(Java虚拟机)是一种用软件模拟出来的计算机,它用于执行Java程序,有一套非常严格的技术规范,是Java跨平台特性的依赖基础,Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统,它运行Java程序就好像一台计算机运行C或C++程序一样。


问:Java程序为什么无须delete语句进行内存回收?

答:Java的堆内存数据的释放功能是由垃圾回收器自动进行的,无须程序员显式的调用delete方法。该机制有效的避免了因为程序员忘记释放内存而造成的内存溢出的错误,相对于C++等需要显式释放内存的语言,是一种巨大的改进。


问:如何利用命令提示符把Java程序打包成jar文件?

答:可以利用JDK的bin目录下的jar命令实现程序打jar包。


问:war和jar的区别?

答:Java web应用程序也可以打成jar包,只不过它的后缀名为war而不是jar,但是jar和war的打包原理是一样的,都是通过JDK提供的jar命令进行。


问:jsp与servlet?

答:jsp是参考其他的动态语言而设计,脚本语言就是Java,但它的本质也是Servlet。


问:applet和Java web开发?

答:applet是在浏览器中运行Java程序,这项技术使用已经非常少了,Java Web开发均指的是Java服务器端技术的开发。


问:变量及作用范围?

答:Java变量可以分为:静态变量、成员变量和局部变量3种。静态变量是指在类中用static修饰的变量,它的生存周期是由类来决定的,成员变量则是在类中没用static修饰的变量,他的生存周期是由对象来决定的。局部变量则是定义在方法里的变量。它的作用范围是用方法的大括号来界定的。


问:Java变量分那两种大的数据类型?

答:基本数据类型和引用数据类型,基本数据类型byte、short、int、long、float、double、boolean、char。引用数据类型值得是除开基本数据类型以外的数据类型。


问:如何理解Java中的装箱和拆箱?

答:Java中的装箱和拆箱指的是基本数据类型和包装类型的自动相互转换。


问:Java的引用和C++的指针有什么区别?

答:本质上它们两者都是想通过一个叫做引用或者指针的东西找到想要操作的目标,方便程序中操作。所不同的是Java的办法更安全、方便一些,但失去了C++的灵活度,也算是对指针的一种包装和改进。


问:请简述Java中的main方法?

答:main()方法是Java程序的执行入口,他是一个定义在类中的、公开的、静态的、无返回值的、参数为一个字符串数组的方法,并且一个类里面只能有一个main()方法。


问:Java中equals和==的区别?

答:==运用在基本数据类型的时候,通过==来比较它们的值是否相同,而equals则用于引用类型,用来比较它们的地址是否相同。


问:Java提供了哪几种循环?它们的各自特点是什么?

答:Java提供了3种循环结构,即for、while、和do...while语句。for循环用于能确定循环次数的循环语句。while语句则适合单条件循环,do....while语句在执行某段代码之后,在循环的时候更适合一些。


问:Java的三元运算符?

答:Java中唯一一个三元运算符为”表达式一?表达式二:表达式三“在问好之前是一个布尔表达式,他只能返回true或false,如果表达式一返回的是true则执行表达式二,否则执行表达式三。


问:Java中注释有哪些?

答://行注释,/* */块注释,/** */文档注释,但如果把Annotation也算作Java注释的话,Java就有4种注释,Annotation与其他注释本质的区别就在于它会进入到编译层,并对程序的结果产生影响。


问:类和对象有什么区别?

答:类通过class关键字进行定义,它里面可以有多重属性和方法,而对象必须从属与某一个类,通过new关键字进行创建,并且可以被多次创建。简而言之类是一种抽象,而对象是类的实现。


问:Java中如何使用继承来重用代码?

答:Java采用的是单继承制,使用extend关键字。通过继承以后自雷就拥有了父类除开私有成员意外的所有成员,从而达到代码重用的目的。在继承的过程中,可以通过方法的覆盖来实现多态,让子类拥有自己独特的方法实现方式。


问:简述Java中的多态?

答:多态的本质是,发送消息给某个对象,让该对象自行决定响应何种行为。它是建立在继承的基础上的,通过子类对象来实现超类对象的方法或变量来实现多态。


问:请介绍Java中静态成员的特点?

答:静态成员通过static关键字修饰,主要包括静态成员变量、静态方法、和静态代码块,他们都具有以下一些特点:

1:在类加载的时候,就进行创建和初始化

2:他对于一个类来说,都只有一份

3:类的所有实例都可以访问到它们


问:简述Java派生类中的构造方法如何为父类传递参数?

答:通过super关键字加括号的形式来为父类构造方法提供参数,如果调用父类的无参构造方法则可以不必显式调用super()。super()的使用必须放在子类构造方法的第一行,否则会有语法错误。


问:简述接口和抽象类的区别?

答:接口是一种特殊形式的抽象类,一个类智能继承一个抽象类,而一个类却可以实现多个接口。两者都不能实例化,并且抽象类可以有非抽象方法。也可以定义成员变量。接口就不能这样了,接口定义的只能是抽象方法,不能定义变量,只能定义常量。 


问:简述一下内部类的实质是什么?

答:内部类根据定义的情况可以分为以下4种、

1:静态内部类、它相当于外部类的静态成员一样,使用static修饰的内部类,使用起来相当于一个独立的外部类。

2:成员内部类、它相当于外部类普通的成员一样,隶属于外部类的具体对象,在定义它的时候,需要先创建外部类对象,在创建它的实例。

3:局部内部类、它定义在一个方法的方法体中,它往往仅作为方法短暂的使用,只能访问用final修饰的局部变量。

4:匿名内部类、他也定义在方法体中,但它没有一个具体的名字,具有非常大的灵活性,工作本质与局部内部类类似。

发布了41 篇原创文章 · 获赞 39 · 访问量 30万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章