- Java 构造方法和普通方法的异同。
- 什么是 Java 反射,有什么功能,获取类有哪几种方式?
- 创建对象由哪几种方式?
- Java 和 C++ 有啥区别?
- switch 语法支持哪些数据类型?String 的原理是什么?
- volatile 关键词有什么作用?
- 对 null 的理解?如何防止 NPE?
- 基本数据类型与位数?
- 什么场景会使用 finally?finally 代码块一定会被执行么?
- 异常的有哪几类,举例说明。异常处理的方式;多个异常如何处理?
- helloworld 的执行过程
参考答案:
- 同:可重载,参数个数任意;
- 异:
- 方法名前者必须与类名相同,后者不作要求。
- 前者不能被继承,后者可以。
- 前者伴随着 new 一起调用,后者需要类或实例发起调用。
- 前者完成对象的初始化工作,后者执行具体的业务逻辑。
- 前者可通过 super 显示调用父类,后者不能使用 super 关键字。
- 前者未定义,编译器默认生成无参方法,后者无默认能力。
- 异:
- 定义:允许程序在运行时进行自我检查,也允许对其内部成员进行操作
- 功能
- 得到一个对象所属的类
- 获取一个类的所有成员和方法
- 运行时创建对象
- 在运行时调用对象的方法
- 获取类的方式
- class.forName(“类路径”)
- 类名.class
- 实例.getClass()
- 功能
- new、反射机制、clone、反序列化
| 比较点 | C++ | Java | | —- | —- | —- | | 语言类型 | 编译型语言 | 解释编译混合型语言 | | 执行速度 | 快 | 慢 | | 是否跨平台 | 否 | 是 | | 面向对象 | 面向对象和面向过程混合 | 纯面向对象 | | 指针 | 有 | 无 | | 多继承 | 支持 | 不支持 | | 内存管理 | 手动 | 自动 |整型,枚举,字符串;原理是String的hashCode()返回的int类型值匹配
- 保证线程间的可见性;从内存间取数据,而不是缓存;不保证原子性。
- 不是合法的 Object 实例;无内存;表明该引用目前没有指向任何对象;
- 空判断;辅助工具类;
- 八大基本数据类型:
- int长度
- byte(8 bit)
- short(16 bit)
- int(32 bit)
- long(64 bit)
- float长度
- 单精度(32 bit float)
- 双精度(64 bit double)
- boolean 类型变量的取值
- true
- false
- char数据类型:Unicode字符(16 bit)
- int长度
- 必须要执行到的代码,比如请求日志。不一定:进入 try 之前抛一次或者调用 System.exit(0)
- 检查性异常
- IO
- SQL
- 运行时异常
- JVM处理
- NullPointException
- ClassCastException
- ArrayIndexOutOfBoundsException
- 出现异常后,一直往上层抛,直到遇到处理代码或最上层
- 多态。若先捕获基类,再捕获子类。子类处理代码将永远不会得到执行
- javac 编译,ClassLoader 装载 class,解释执行&编译执行
- 编译:词法分析器—>语法分析器—>语义分析器—>代码生成器:字节码
- 类加载:装载—>链接(校验格式和引用类的存在性;准备;解析)—>初始化
- 类执行:
- 解释执行: