2021-06-07

Java面试题总结:

1.什么是面向对象,谈谈你对面向对象的理解

  • 面向对象是更注重有哪些参与者及各自要做的事情,面向过程是更注重事情的每一个步骤及顺序。
  • 例如洗衣机洗衣服:
    面向过程是:
    打开洗衣机,把衣服放进去,放洗衣服,关上洗衣机,脱水。
    面向对象则是把该过程分为洗衣机和人两个对象:
    人 :打开洗衣机,放衣服,放洗衣粉
    洗衣机:清洗,脱水
  • 面向过程比较高效,面向对象则更有利于复用,扩展和维护

**封装:**封装的意义在于明确的标识出允许外部使用的函数和数据项。就是把自己的东西隐藏起来,别人只能通过你提供的功能实现需求,而不知道是如何实现的。增加安全性。

  • javabean的私有属性,提供给外部get set方法访问。

继承::继承基类的方法,并做出自己的改变和扩展
子类共性的方法或属性直接使用父类的。子类只扩展自己的个性化。(无法调用子类特有的功能)

多态::是指不同的对象对同一消息做出相应,即同一对象根据发送对象的不同而采用不同的行为方式。

抽象::是指对问题进行分析、设计得出的抽象的概念 ,是对一系列看上去不同,但是本质一样的概念的抽象化。在java中通常用
abstract修饰类时,该类就不能被实例化,所以抽象类是为了继承而存在的。

2.JDK、JRE、JVM三者的区别和联系

  • jdk:java develpment Kit java看发工具。

  • jre: java runtime Environment Java 运行时环境

  • jvm java Virtual Machine java虚拟机

jdk包括jre和java工具,Java工具包括java javac jconsole,jre里面包括bin(jvm)和lib(类库);
我们平时编写的文件.java通过javac编译成.class文件,然后通过类库解释成适合系统的版本(windows或linux)然后映射到系统调用。

3.== 和equals比较

  • ==比较的是栈中的值 基本数据类型比较的是变量,引用数据是堆中对象存储的地址。
  • equals如果不重写,则相当于== ,一般情况下。都会重写(int ,String)。重写之后比较的是取值。

4.简述final作用,为什么局部内部类和匿名内部类只能访问局部final变量?

  • 修饰类:标识类不能被继承
  • 修饰方法:标识方法不能被子类覆盖,但可以重载。
  • 修饰变量:标识变量不可改变其值。

1.修饰成员变量

  • 如果final修饰的是类变量,只能在静态初始化块中指定初始值或者声明该类变量时指定的初始值。
  • 如果final修饰的是成员变量,可以在非静态初始化块,声明该变量或者构造器中执行初始值。
    2.修饰局部变量
    系统不会为局部变量进行初始化,局部变量必须由程序员显示初始化。因此使用final修饰局部变量时,即可以在定义时指定默认值(后面的代码不能对变量再赋值),也不可以不指定默认值,而在后面的代码中对final变量赋初值(仅一次)。

首先需要知道的一点是:内部类和外部类是处于同一个级别的,内部类不会因为定义在方法中就会随着方法的执行完毕就被销毁。

这里就会产生问题:当外部类的方法结束时,局部变量就会被销毁了,但是内部类对象可能还存在(只有没有人再引用它时,才会死亡)。这里就出现了一个矛盾:内部类对象访问了一个不存在的变量。为了解决这个问题,就将局部变量复制了一份作为内部类的成员变量, 这样当局部变量死亡后,内部类仍可以访问它,实际访问的是局部变量的"copy"。这样就好像延长了局部变量的生命周期。

将局部变量复制为内部类的成员变量时,必须保证这两个变量时一样的,也就是如果我们在内部类中修改了成员变量,方法中的局部变量也得跟着改变,怎么解决问题呢?

就将局部变量设置为final,对它初始化后,我就不让你再去修改这个变量,就保证了内部类得成员变量和方法的局部变量的一致性。这实际上也是一种妥协。使得局部变量与内部类建立的拷贝保持一致。

String,StringBuffer,StringBuilder的区别及使用场景

  • String修饰的字符串是不可变的。StringBuffer和StringBuilder都可以通过append添加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值