主要内容:
接⼝和抽象类有什么区别?
实现:抽象类的⼦类使⽤ extends 来继承;接⼝必须使⽤ implements 来实现接⼝。
构造函数:抽象类可以有构造函数;接⼝不能有。
实现数量:类可以实现很多个接⼝;但是只能继承⼀个抽象类。
访问修饰符:接⼝中的⽅法默认使⽤ public 修饰;抽象类中的⽅法可以是任意访问修饰符.
String、Stringbuffer、StringBuilder的区别
String是不可变的。Stringbuffer和StringBuilder是可变的。
Stringbuffer是线程安全的。StringBuilder是线程不安全的。
java是怎么实现平台⽆关
⾸先平台⽆关就是⼀种语⾔运⾏不受平台约束,⼀次编译到处执⾏。
java主要依赖于java语⾔规范、Class⽂件和jvm虚拟机实现平台⽆关的。java⽂件通过javac编译成class⽂件,
class⽂件可以运⾏在不同操作系统的jvm虚拟机上以实现平台⽆关。
jvm运⾏时内存是怎样的?
根据java虚拟机规范的定义,jvm运⾏时内存主要分为堆、java虚拟机栈、本地⽅法栈、⽅法区、程序计数器、
运⾏时常量池六部分组成。其中堆、⽅法区、运⾏时常量池是线程共享区域,栈和程序计数器是线程独享区域。
堆:是jvm中占⽤内存最⼤的⼀块,存放对象实例。此外还在此区域进⾏垃圾回收。
栈:存储java局部变量。每次⽅法调⽤都会创建⼀个栈帧,保存局部变量、操作数栈、动态链接、⽅法出⼝等信
息。⽅法执⾏完后,栈帧就会弹出。
程序计数器:记录jvm正在执⾏的字节码指令的地址。是线程私有的。保证线程执⾏⼀个字节码之后,才会执⾏
下⼀个字节码。
⽅法区:存放已被加载的类信息、常量、静态变量等信息。