码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础知识回顾

时间:2020-04-10 00:26:42      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:二进制   而不是   函数   数列   构造函数   不同   对象引用   bst   返回   

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基础知识回顾

标签:二进制   而不是   函数   数列   构造函数   不同   对象引用   bst   返回   

原文地址:https://www.cnblogs.com/liushoudong/p/12670532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!