Java SE 面试题

Java SE问题


1.什么是Java程序的主类,应用程序是小程序的主类有什么区别?

主类只能有一个,包含main()方法的类

  • 小程序中:主类是一个继承系统类JApplet或Applet的子类
  • 应用程序中:主类不一定要求是public
  • 区别:applet小程序没有main(),主要嵌在浏览器页面运行(调用init()/run())


2.封装,继承,多态

  • 封装:隐藏对象属性和实现细节,仅对外提供公共访问方式
  • 继承:使用已经存在的类的定义为基础建立新类,子类能够拥有自己方法和属性,子类拥有父类对象所有属性和方法(父类私有属性和方法子类是无法访问),子类可以用自己的方式显示父类的方法
  • 多态: 同一引用类型变量调用同一方法时,由于引用的实例不同,方法产生的结构不同,称为多态. 编译时类型与运行时类型不一致,会产生多态


3.String,StringBuilder,StringBuffer的不同?

  • String是不可变的,因为其使用final修饰字符数组 1.8采用char[] ,1.9改用byte[] private final byte[] value
  • StringBuilder与StringBuffer都继承于AbstractStringBuilder,都使用char[]保存字符串,没有被final修饰所以是可变的.
  • StringBuffer对方法/对调用方法加了同步锁,所以是线程安全的,使用多线程.StringBuilder是线程不安全的,使用单线程
  • StringBuilder比StringBuffer性能高 10~15左右


4.接口与抽象类的区别?

  1. 一个类可以使用多个接口,只能实现一个抽象类
  2. 设计层面: 抽象类是对类的抽象,是一种模板设计 . 接口是对行为的抽象,是一种行为规范
  3. 接口方法默认是public,接口中不能有实现(java8后可以有默认实现),抽象类中可以有非抽象方法
  4. 接口中除了final,static变量不能有其他变量,抽象类不一定


5.成员变量与局部变量区别?

  • 语法形式上: 成员变量属于类 ,局部变量定义在方法中/方法参数上,局部变量不能被访问修饰符,static修饰
  • 内存上:成员变量被static修饰–>属于类 不被修饰–>属于对象(对象存在堆中) . 局部变量:栈
  • 生命周期:成员变量随着对象创建而存在,随着对象而销毁 .局部变量随着方法调用完消失
  • 成员变量有默认值( final除外) ,局部变量不会自动赋值


6.== 与equals 区别?

  • ==:基本数据类型比较值,引用类型比较内存地址
  • equals:类没有重写,比较的是对象内存地址 .类进行重写,比较的是对象内容


7.为什么java只有值传递?

java设计语言总采用 按值调用,即方法得到是所有参数的一个拷贝,也就是说方法不能修改传递给它的任何参数变量的内容


8.浅拷贝与深拷贝

  • 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递
  • 深拷贝:对基本数据类型进行值传递,对引用类型,创建一个新的对象,复制其内容


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部