Java面试题——基础篇一

发布于:2022-12-21 ⋅ 阅读:(433) ⋅ 点赞:(0)

目录

什么是Java?

JVM、JRE和JDK的关系

Java语言有哪些特点?

&和&&的区别

final 在 java 中有什么作用?

String 属于基础的数据类型吗?

String str="i"与 String str=new String(“i”)一样吗?

java 中操作字符串都有哪些类?它们之间有什么区别?

== 和 equals 的区别是什么?

int和Integer有什么区别,为什么要使用包装类?

列出一些你常见的运行时异常?

Java的”一次编写,处处运行”是如何实现的?

如果去掉了main方法的static修饰符会怎样?


什么是Java?

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

JVM、JRE和JDK的关系

  • JVM        Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

  • JRE        Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

        如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

  • JDK        Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等

Java语言有哪些特点?

  • 简单易学(Java语言的语法与C语言和C++语言很接近)

  • 面向对象(封装,继承,多态)

  • 平台无关性(Java虚拟机实现平台无关性)

  • 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

  • 支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

  • 健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

  • 安全性

&和&&的区别

  • 按位与, a&b 表示把a和b都转换成二进制数,再进行与的运算;

  • &和&&都是逻辑运算符号,&&又叫短路运算符

  • 逻辑与,a&& b ,a&b 都表示当且仅当两个操作数均为 true时,其结果才为 true,否则为false。

  • 逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true,整个表达式的值才是true。但是,&&之所以称为短路运算,是因为如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。

final 在 java 中有什么作用?

  • final 修饰的类叫最终类,该类不能被继承。

  • final 修饰的方法不能被重写。

  • final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

String 属于基础的数据类型吗?

String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。

String str="i"与 String str=new String(“i”)一样吗?

不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

java 中操作字符串都有哪些类?它们之间有什么区别?

答:String、StringBuffer、StringBuilder可以操作拼接字符串

区别:String是不可变的对象,对每次对String类型的改变时都会生成一个新的对象,StringBuffer和StringBuilder是可以改变对象的。

对于操作效率:StringBuilder > StringBuffer > String

对于线程安全:StringBuffer 是线程安全,可用于多线程;StringBuilder 是非线程安全,用于单线程

== 和 equals 的区别是什么?

答:==是操作符,是比较两个对象的地址或基本类型,equals是比较两个对象的内容,属于Object里的方法。

int和Integer有什么区别,为什么要使用包装类?

答:为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型,比如int的包装类就是Integer,Java 为每个原始类型提供了包装类型:
- 原始类型: boolean,char,byte,short,int,long,float,double
- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

列出一些你常见的运行时异常?

答:- ClassNotFoundException(类找不到异常)
- ClassCastException (类转换异常)
- IllegalArgumentException (非法参数异常)
- IndexOutOfBoundsException (下标越界异常)
- NullPointerException (空指针异常)
- SecurityException (安全异常)

Java的”一次编写,处处运行”是如何实现的?

答:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。 

如果去掉了main方法的static修饰符会怎样?

答:程序能正常编译。运行时会抛NoSuchMethodError异常。

       码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。


网站公告

今日签到

点亮在社区的每一天
去签到