2019年最新Java程序员面试试题汇总续集

在这里插入图片描述
import java和javax有什么区别  
Java是一种受C语言影响的编程语言。
Java和Javax本质上是与Java编程语言的上下文一起使用的包。实际上Java和Javax没有区别。这只是不同的名字。
  Java是一种编程语言,受到C语言的影响。
  它源自C和C++的大部分语法,但是它的低级别设施比其中任何一个都要少。Java是一种通用编程语言,旨在与以前的语言相比具有较少的实现依赖性。
  它是并发的,基于类的,面向对象的语言。
  Java由Sun Microsystems的James Gosling开发,并于1995年发布。它最初作为Sun Microsystems Java平台的核心组件发布。
  Java旨在允许相同的代码在各种平台上运行。即开发者被允许“写一次,在任何地方运行”(WORA)。
  因此,Java应用程序通常被编译为字节码。然后可以在任何Java虚拟机(JVM)上运行包含Java字节码的类文件。
  这与计算机架构无关。
  Java和Javax本质上是与Java编程语言的上下文一起使用的包。
  提出java包的命令是import java,而启动javax包的命令是import javax。
  例如:import java.util。; 或者导入javax.util。;
  原来,作为标准API的一部分的所有内容都是java包的一部分,而不是标准API一部分的所有内容都是在包名javax下发布的。
  因此,API所必需的包是java,而javax包含API的扩展名。甚至可以说javax,只是一个带有x的java,代表了扩展。
  随着时间的推移,作为javax发布的扩展成为Java API的组成部分。但是,将扩展从javax包移动到java包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定javax包将成为标准API的一部分。
  所以,实际上java和javax没有区别。这都是一个名字。
  接口和抽象类的区别是什么?
  1.接口的方法默认是public,所有方法在接口中不能有实现,抽象类可以有非抽象的方法
  2.接口中的实例变量默认是final类型的,而抽象类中则不一定
  3.一个类可以实现多个接口,但最多只能实现一个抽象类
  4.一个类实现接口的话要实现接口的所有方法,而抽象类不一定
  5.接口不能用new实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。成员变量与局部变量的区别有那些?从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;
  成员变量和局部变量都能被final所修饰;
  从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动消失。
  成员变量如果没有被赋初值,则会自动以类型的默认值而赋值(一种情况例外被final修饰但没有被static修饰的成员变量必须显示地赋值);
  而局部变量则不会自动赋值。
  创建一个对象用什么运算符?
  对象实体与对象引用有何不同?
  new运算符,new创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。
  一个对象引用可以指向0个或1个对象(一根绳子可以不系气球,也可以系一个气球);
  一个对象可以有n个引用指向它(可以用n条绳子系住一个气球)什么是方法的返回值?
  返回值在类的方法里的作用是什么?
  方法的返回值是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。
  返回值的作用:接收出结果,使得它可以用于其他的操作!一个类的构造方法的作用是什么?
  若一个类没有声明构造方法,改程序能正确执行吗?为什么?
  主要作用是完成对类对象的初始化工作。
  可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。构造方法有哪些特性?
  1. 名字与类名相同;
  2. 没有返回值,但不能用void声明构造函数;
  3. 生成类的对象时自动执行,无需调用。静态方法和实例方法有何不同?
  静态方法和实例方法的区别主要体现在两个方面:  
  1、在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
  2、静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;
  实例方法则无此限制对象的相等与指向他们的引用相等,两者有什么不同?
  对象的相等 比的是内存中存放的内容是否相等而 引用相等 比较的是他们指向的内存地址是否相等。
  在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?帮助子类做初始化工作。
  什么是多态机制?
  Java语言是如何实现多态的?  
  面向对象编程有三大特性:封装、继承、多态。
  封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。
  继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。
  所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
  但是向上转型存在一些缺憾,那就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们。
  所以父类类型的引用可以调用父类中定义的所有属性和方法,对于只存在与子类中的方法和属性它就望尘莫及了。
  equals 和 == 的区别?通俗点讲:是看看左右是不是一个东西。equals是看看左右是不是长得一样。如何记住嘛。如果单纯是想记住,:等于。
  equals:相同。两个长得一样的人,只能说长的相同(equals),但是不等于他们俩是一个人。你只要记住equals,==就不用记了。
  术语来讲的区别:
  1. ==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同
  2. ==是指对内存地址进行比较 equals()是对字符串的内容进行比较
  3. ==指引用是否相同 equals()指的是值是否相同。
文章来自:https://www.itjmd.com/news/show-6383.html

猜你喜欢

转载自blog.csdn.net/a6984021/article/details/88689226