JAVA基础知识

1. JAVA中的几种基本数据类型是什么,各自占用多少字节

int     32bit
short   16bit
long     64bit
byte     8bit
char     16bit
float   32bit
double   64bit
boolean 1bit

2. String,Stringbuffer,StringBuilder的区别

String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁;

StringBuffer对象则代表一个字符序列可变的字符串;

StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

3. 讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序

  • 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
  • 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
  • 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
  • 父类构造方法
  • 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
  • 子类构造方法

4. Class.forName和ClassLoader区别

(1) class加载到JVM中有三个步骤:

  • 装载:(loading)找到class对应的字节码文件;
  • 连接:(linking)将对应的字节码文件读入到JVM中;
  • 初始化:(initializing)对class做相应的初始化动作;

(2) Class.forName(“className”)
        其实这种方法调运的是:Class.forName(className, true, ClassLoader.getCallerClassLoader())方法
        参数一:className,需要加载的类的名称。
        参数二:true,是否对class进行初始化(需要initialize)
        参数三:classLoader,对应的类加载器
(3) ClassLoader.laodClass(“className”)
        其实这种方法调运的是:ClassLoader.loadClass(name, false)方法
        参数一:name,需要加载的类的名称
        参数二:false,这个类加载以后是否需要去连接(不需要linking)
(4) 两种方式的区别
        forName("")得到的class是已经初始化完成的
        loadClass("")得到的class是还没有连接的
        一般情况下,这两个方法效果一样,都能装载Class。
        但如果程序依赖于Class是否被初始化,就必须用Class.forName(name)了

5. final的用途

  • 被final修饰的类不可以被继承
  • 被final修饰的方法不可以被重写
  • 被final修饰的变量不可以被改变

(1)如果引用为基本数据类型,则该引用为常量,该值无法修改;

(2) 如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。

(3) 如果引用时类的成员变量,则必须当场赋值,否则编译会报错

参考资料:

6. 在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?

即使自定义了自己的类加载器,强行使用defineClass()方法去加载一个以‘java.lang’开头的类也不会成功,如果尝试这样做的话,将会收到一个由虚拟机自己抛出的‘java.lang.SecurityException:Prohibited package name:java.lang’异常

史上最全阿里 Java 面试题总结

String、StringBuffer和StringBuilder的区别

java类的实例化顺序

class.forname和classloader区别

final关键字的作用

JAVA中final关键字的作用

在自己的代码中,如果创建一个 java.lang.String 类,这个类是否可以被类加载器加 载?为什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值