锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题:
1.为什么说 Java语言“编译与解释并存”?
高级编程语言按照程序的执行方式分为编译型和解释型两种。简单来说,编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码;解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。比如,你想阅读一本英文名著,你可以找一个英文翻译人员帮助你阅读,有两种选择方式,你可以先等翻译人员将全本的英文名著(也就是源码)都翻译成汉语,再去阅读,也可以让翻译人员翻译一段,你在旁边阅读一段,慢慢把书读完。
Java语言既具有编译型语言的特征,也具有解释型语言的特征,因为 Java程序要经过先编译,后解释两个步骤,由 Java编写的程序需要先经过编译步骤,生成字节码(*.class文件),这种字节码必须由Java解释器来解释执行。因此,我们可以认为 Java语言编译与解释并存。
2.字符型常量和字符串常量的区别?
1.形式上:字符常量是单引号引起的一个字符;字符串常量是双引号引起的若干个字符
2.含义上:字符常量相当于一个整型值( ASCII值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放位置)
3.占内存大小 字符常量只占 2个字节;字符串常量占若干个字节 (注意: char在 Java中占两个字节)
3.Java泛型了解么?什么是类型擦除?介绍一下常用的通配符?
Java泛型(generics)是 JDK 5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。
泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。
1.泛型类:
如何实例化泛型类:
2.泛型接口 :
实现泛型接口,不指定类型:
List<Integer> list = new ArrayList<>();
list.add(12);
//这里直接添加会报错
list.add("a");
Class<? extends List> clazz = list.getClass();
Method add = clazz.getDeclaredMethod("add", Object.class);
//但是通过反射添加,是可以的
add.invoke(list, "kl");
System.out.println(list)
//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时,必须指定T的具体类型
public Generic<T>{
private T key;
public Generic(T key) {
this.key = key;
}
public T getKey(){
return key;
}
}
Generic<Integer> genericInteger = new Generic<Integer>(123456);
public interface Generator<T> {
public T method();
}
实现泛型接口,指定类型:
3.泛型方法 :
使用:
常用的通配符为: T,E,K,V,?
? 表示不确定的 java类型
T (type)表示具体的一个java类型
K V (key value)分别代表java键值中的Key Value
E (element)代表Element
了解更多请点我头像或到我的主页去获得,谢谢