笔试知识点
①创建对象的方式(不只是通过构造函数)
1.通过new语句直接调用构造方法创建,这是最常用的方法。
2.通过反射获取类对象,进而调用newInstance方法,也是通过构造方法创建对象
3.通过clone方法创建对象,对已存在对象的复制,不会调用构造方法。
4.通过输入流中readObject方法直接读取对象,也不会调用构造方法。
②输入/输出流
主要分为两类:字节流和字符流。
为什么字节和字符要分开呢?
因为Java中字符是以Unicode形式存储的,一个字符占用两个字节,然而InputStream和OutputStream都是以字节形式读取或写出数据的,会将一个字符拆分成两个字节来读写这样会造成乱码(比如读取或者写出中文)。
字节流的抽象类为: InputStream 和 OutputStream
具体的实现类有很多:如FileInputStream(字节输入流),FileOutputStream(字节输出流),PipedInputStream(字节输入流),PipedOutStream(字节输出流),BufferedInputStream,BufferedOutputStream等
字符流的抽象类为:Reader 和 Writer
具体实现类有:BufferedReader,BufferedWriter,FileReader和FileWriter等等。其中BufferedReader类可以按照指定编码(如utf-8 , GB2312等)的格式来读取和写入文本。
也存在字节流和字符流相互转换的流:InputStreamReader:在读入数据的时候将字节转换成字符。OutputStreamWriter:在写出数据的时候将字符转换成字节。
③union和union all的区别
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
④IP地址分类(A类,B类,C类)
A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
⑤变量初始化问题
这里会涉及到基本数据类型和引用类型。
1.当是引用类型时:需要先初始化才能使用变量。
2.当变量是基本数据类型时,同样需要初始化才能使用变量,否则无法通过编译。
⑥子父类创建对象的顺序
我们通过自己手写案例来测试构造方法的顺序可得:
结论: 当调用子类的构造方法时,会先去调用父类的无参构造方法(如果没父类没有无参构造方法会报错,找不到该方法),再去调用子类的对应的构造方法。
我们通过idea测试静态代码块的顺序关系可得:
结论 : 先执行父类的静态代码块,再执行子类的静态代码块。
综上所述
父类静态代码块 > 子类静态代码块 > 父类无参构造方法 > 子类相应的构造方法