发表于: 2019-10-31 22:18:35
1 981
今天做了什么:
看了基础:
1.面向对象:抽象 继承 封装 多态 ? 不同子类型的对象对同一消息作出不同的响应
2.访问修饰符:default,protected
3.基本数据类型与引用类型 byte、short、int、long、float、double、char、boolean
- String是引用类型.
- String类是final类,不可被继承
4.向上/向下转型. float f=3.4;是否正确
5.隐含的强制类型转换. s1+= 1;相当于s1 = (short)(s1 + 1);
6.goto. 是java中的保留字
7.包装类.(自动装箱/拆箱 ?) 基本数据类型 → 包装类wrapper class
8.&与&&: &&左边值为false,则右边表达式直接短路掉
9.栈,堆和方法区 ?
10.正负数的四舍五入. Math.round(-11.5)的返回值是-11
11. switch. 能作用于 byte、short、char、int,enum,string, 但long不可以
12. 数组有没有length()方法?String有没有length()方法? 数组没有length()方法.有length属性
13. 用最有效率的方法计算2乘以8?
14.跳出多重嵌套循环. 在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环
15.构造器. 可以被重载overload不能被继承/重写override.
重载与重写
都是实现多态的方式,前者是编译时多态,后者是运行时多态. 重载发生在一个类中,同名的方法如果有不同的参数列表. 重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型. 比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则).
16. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
满足equals→哈希码一定相同. 哈希码相同不一定equals.
17.值传递和引用传递. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
Java语言的方法调用只支持参数的值传递.
18. String,StringBuilder和StringBuffer.
String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。
19.JVM加载class文件的原理:加载,连接,初始化.
类加载器
加载是指.class的数据读入内存 ,然后进入连接阶段(验证,准备,解析), 最后初始化
20.char型变量(2字节16比特)中能不能存储一个中文.
可以. java编码 Unicode.
21.抽象类与接口异同
接口: 只有抽象方法.成员全是public.
抽象类:还可以有构造器,具体方法等.成员可以是任何权限的.可以定义成员变量.
22.静态内部类和非静态内部类的区别
静态内部类不依赖于外部类实例被实例化.非静态内部类的对象的创建要依赖其外部类对象.
附加:内部类对象可以访问创建它的外部类对象的成员,包括私有成员.
23.java内存泄露
一般不会,因为垃圾回收GC机制.
Hibernate的session中的对象属于持久态.不会被回收.
栈结构中,pop方法弹出的对象不会被回收,因为栈内部维持着过期引用.
后果:极端情况下Disk Paging屋里内存与硬盘的虚拟内存交换数据,或OutOfMemoryError.
附加:GC是什么:
分代式垃圾收集. Eden,survivor,tunured
24.abstract static native synchronized.
静态方法无法被重写
本地方法是由本地代码(例如C代码)实现的方法
synchronized和方法的实现细节有关
25.静态变量与实例变量的区别
静态变量也成为类变量. 一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝. 实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它.
26. 是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?
不. 静态方法只能访问静态成员. 非静态方法的调用需要先创建对象.
27.对象克隆
- 实现Cloneable接口并重写Object类中的clone()方法.
- 实现Serializable接口.可以实现深度克隆.此方案优于前者.因为检查是编译器完成的,不是在运行时抛出异常.
28. String s = new String("xyz");创建了几个字符串对象?
两个. 静态区的'xyz'和new创建在堆上的对象
29.接口可否继承接口?抽象类是否可实现接口?是否可继承具体类?
接口可以继承接口,并且支持多重继承.
抽象类可以实现接口,可以继承抽象类和具体类.
30.一个源文件中可以有多个类,但至多只能有一个public class.并且和文件名相等.
31.匿名内部类是否可以继承其他类?是否可以实现接口?
都可以.
在Swing编程和Android开发中常用此方式来实现事件监听和回调。
32.final关键字:
修饰变量: 一次赋值,不能修改.
修饰方法: 不能被重写
修饰类: 不能被继承
33.创建对象时构造器的调用顺序. 先初始化静态成员, 再调用父类构造器, 再初始化非静态成员, 最后调用自身构造器.(静态>非静态,父类>子类)
34.递归实现字符串的反转及替换
public static String reverse(String originStr) {
if(originStr == null || originStr.length() <= 1)
return originStr;
return reverse(originStr.substring(1)) + originStr.charAt(0);
}
35.时间日期API .
LocalDateTime dt = LocalDateTime.now();
System.out.println(dt.getYear());
System.out.println(dt.getMonthValue()); // 1 - 12
System.out.println(dt.getDayOfMonth());
System.out.println(dt.getHour());
System.out.println(dt.getMinute());
System.out.println(dt.getSecond());
收获
问题
明天的计划
评论