• JavaSE阶段常见面试题(二)


    内部类

    内部类拥有独立的.class文件。

    String

    String s  = new String("hello");

    如上语句创建了几个对象?

    两个

    第一个:hello   //只要是字面量,Java都会创建一个String对象并将其存储到常量池中

    第二个:new String()   //new String()时会再创建一个String对象"hello"

    s:指向new出来的String()对象

    StringBuilder和StringBuffer区别

    StringBuffer类从jdk1.0出现,属于线程安全类,同步处理的,因此效率较低

    StringBuilder类从jdk1.5出现,属于非线程安全类,并发处理的,因此效率较高

     

    Java是值传递还是引用传递

    Java中无论是基本数据类型还是引用数据类型,都是值传递的

    对于基本数据类型而言,传递的是具体的值的副本

    对于引用数据类型而言,传递的是具体的地址值的副本

    ==和equals()的区别

    ==可以用于比较基本数据类型和引用数据类型。

            比较基本数据类型时比较具体值是否相同。

            比较引用数据类型是比较具体存储地址。

    equals()只能用于比较引用数据类型。

            在Object类中定义,默认比较==(即比较地址),一般没有参考意义,常常被重写用来比较具体的属性值是否相同。

    String类重写了equals()来比较字符串内容是否相同。

     

    进制

    int a = 068;正确吗?

    编译错误。0开头代表8进制最大为7,0b开头2进制,0x开头16进制

    Finally

    简述final,finally,finalize是什么?

    final表示最终的、不能改变的。修饰变量表示,该变量的值不能被改变。修饰方法表示,该方法不能被重写。修饰类表示不能被继承。

    finally是异常处理机制的最后一块,它只能跟在try后活着最后一个catch后,finally可以保证只要程序执行到try语句块,无论try代码是否出现异常,finally都必定执行。通常我们使用finally去完成资源释放这类操作,比如IO中的关闭流操作。

    finalizes是一个方法,定义在Object中,该方法为一个对象生命周期中的最后一个方法,会被GC调用,当一个对象即将被GC回收前会调用该方法。

     

     输出结果是什么

    public class FinallyDemo3 {

        public static void main(String[] args) {

            System.out.println(

                    test("0")+","+test(null)+","+test("")

            );

        }

        public static int test(String str){

            try {

                return str.charAt(0)-'0';

            } catch (NullPointerException e) {

                return 1;

            } catch (Exception e){

                return 2;

            } finally {

                return 3;

            }

        }

    }

    最后输出结果为3,3,3

    finally块中的return语句会覆盖try catch中的return返回

    如果try中有return语句,finally中也有return语句,最终执行的是finally中的return语句

  • 相关阅读:
    通过uboot命令开启核隔离
    环保行业SaaS多租户商城系统:构建闭环电商生态,赋能环保产业数智化发展
    【计算机网络系列】物理层
    自动驾驶入门:感知
    【C#】【源码】直接可用的远程桌面应用
    虚拟化+docker基本概念以及安装部署
    微软在Microsoft Build 2024 上 发布了.NET 9 预览版4
    php mysql运动器材租赁预约管理系统
    Aeron:Online Resources
    Django ORM 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询
  • 原文地址:https://blog.csdn.net/m0_51041464/article/details/126191411