1.Java语言中,如果"xyz"没有被创建过,String s =new String(“xyz”);创建了几个string object?
两个 一个在常量池中 另一个在堆中
2.运算符的优先级
单目运算符:+,-,++,--
算数运算符:+,-,*,/,%
移位运算符:<<,>>
关系运算符:>,<,>=,<=,==,!=
位运算符:&,|,~,^,
逻辑运算符:&&,||
三目运算符:表达式1?表达式2:表达式3;
赋值运算符:=等
单目>算数运算符>移位>比较>按位>逻辑>三目>赋值
3.Java 中构造器、构造块、静态代码块、main()方法的执行顺序
静态代码块>main()>构造块>构造器
当父类子类均有静态代码块、构造器、构造块、成员变量时顺序为:
父类B静态代码块->子类A静态代码块->父类成员变量->父类B非静态代码块->父类B构造函数->子类成员变量->子类A非静态代码块->子类A构造函数
4.重载
方法重载的方法名一定相同,但参数表不相同,返回值也不一定相同 (但当参数表和函数名一样时,返回值不能作为区分)
方法重写的返回值类型需要小于等于父类返回类型(小于意思是相对于父类方法返回值是子类),方法名必须相同
5.关于java的编译、运行等的命令
编译:javac +你的 Java 程序名字加后缀
运行:java +你的 Java 程序的名字但是不加后缀
java运行时运行的就是.class文件,但是命令却没有.class
6.转义字符加上大写字母和小写字母的意思是相反的
比如\d 和\D的意思是相反的 \d的意思时表示数字 而\D的意思表示非数字
7.不同的服务器之间的通信,是要要求全双工形式的,而管道只能是半双工,虽然可以双向,但是同一时间只能有一个方向传输
,但是消息队列 高速缓存数据库 套接字是可以不同服务器之间通信的
8.泛型代码与JVM
1.虚拟机中没有泛型,只有普通类和方法。
2. 在编译阶段,所有泛型类的类型参数都会被Object或者它们的限定边界来替换。(类型擦除)
3. 在继承泛型类型的时候,桥方法的合成是为了避免类型变量擦除所带来的多态灾难。 无论我们如何定义一个泛型类型,相应的都会有一个原始类型被自动提供。原始类型的名字就是擦除类型参数的泛型类型的名字。
4.在运行时动态获取List<T>中T的实际类型的原因是类的反射机制
9.外部类只能被public 和default修饰
内部类可以被4种权限修饰符修饰
10.类加载机制涉及加载类
- Bootstrap :一般用本地代码实现,负责加载 JVM 基础核心类库( rt.jar );
- Extension :从 java.ext.dirs 系统属性所指定的目录中加载类库,它的父加载器是 Bootstrap ;
- system class loader :又叫应用类加载器,其父类是 Extension 。它是应用最广泛的类加载器。它从环境变量 classpath或者系统属性 java.class.path 所指定的目录中加载类,是用户自定义加载器的默认父加载器。
- 用户自定义类加载器: java.lang.ClassLoader 的子类
11. 一个以”.java”为后缀的源文件只能有一个与文件名相同的类(public类),可以包含其他类(非public类)
12.java 语言使用的字符码集是Unicode
13.json对象的格式
键必须为字符串,值可以为数组,也可以为键值对,也就是json对象