JAVA基础知识回顾
Posted LinBupt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA基础知识回顾相关的知识,希望对你有一定的参考价值。
1.JVM
Java虚拟机(JVM)是运行Java字节码的(.class)。-->高效;可移植
Java程序从源代码到运行一般有以下3步:
.java文件(源代码) -->(JDK中的javac编译) --> .class文件(JVM可理解的Java字节) --> (JVM) -->机器可执行的二进制机器码
Java虚拟机(JVM)是运行Java字节码的虚拟机。JVM有针对不同系统的特定实现,目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译,随处可以运行”的关键所在
2.什么是Java程序的主类 应用程序和小程序的主类有何不同?
一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。
3.构造器Constructor是否可以被override?
Constructor不能被override(重写),但是可以overload(重载),所以可以看到一个类中有多个构造函数的情况。
4.重载和重写的区别
重载
发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同
重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写,发生在子类中,方法名、参数列表必须相同,返回值范围小于等于父类抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。另外,如果父类方法访问修饰符为private则子类就不能重写该方法。也就是说方法提供的行为改变,而方法的外貌并没有改变
5.String、StringBuffer和StringBuilder的区别是什么?String为什么是不可变的?
String类中使用final关键字修饰字符数组来保存字符串,private final char value [],所以String对象是不可变的。Java9之后改用byte存储
StringBuilder和StringBuffer都继承自AbstractStringBuilder类, 在AbstractStringBuilder中也是使用字符数组保存字符串
char[] value但是没有用final关键字修饰,所以这两种对象都是可变的。两者的构造方法都是调用父类构造方法实现的
线程安全性:String和StringBuffer是线程安全的
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
性能:
每次对String类型进行改变的时候,都会生成一个新的String对象,然后将指针指向新的String对象。StringBuffer每次都会对StringBuffer对象本身进行操作,而不是生成新的对象并改变对象引用。
以上是关于JAVA基础知识回顾的主要内容,如果未能解决你的问题,请参考以下文章