做题中遇到的知识点(二)

我是小康小白,一个平平无奇的Java小白。热爱有趣的文字,生活和远方。
个人博客:https://blog.csdn.net/weixin_45791445
有问题欢迎QQ联系:1059320343 (记得备注CSDN)

在这里插入图片描述

  1. Java程序编译会产生.class文件的情况:

(1)对于普通的Java文件,里面只有一个类,也就是一个class,(注意:e->表达式也应该不能有),那么编译出来的就只有一个类名.class

(2)对于复杂一点的.java文件,例如里面有除了公共类以外的,与公共类平行的类或接口,那么,有多少个类或接口,就会编译出多少个.class文件

(3)内部类:

外部类的名字+$+内部类的名字+.class文件

匿名内部类编译后生成

外部类的名字+$+数字+.class文件

数字从1开始按照顺序来排列;

局部内部类编码后生成

外部类名字+$+数字+$+内部类的名字+.class文件
  1. 如何区分节点流和处理流?
    按照流是否直接与特定的地方(如磁盘、du内存、设备等)相连,分为节点流和处理流两类。
    节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
    处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
    JAVA常用的节点流有以下几个:
    文 件 FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
    字符串 StringReader StringWriter 对字符串进行处理的节点流。
    数 组 ByteArrayInputStream ByteArrayOutputStreamCharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
    管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter对管道进行处理的节点流。
    父 类 InputStream OutputStream Reader Writer
    常用处理流(关闭处理流使用关闭里面的节点流)
    缓冲流:BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter
    增加缓冲功能,避免频繁读写硬盘。
    转换流:InputStreamReader OutputStreamReader实现字节流和字符流之间的转换。
    数据流 DataInputStream DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。
  2. 接口中方法可以有的修饰词
    public,private,abstatic, default,static,strictfp;

做题中遇到的知识点(二)_第1张图片

  1. Java中一个char字符永远占两个字节(编码方式为Unicode)(不分中文和英文)

  2. Java中有两个用来封装字符串的类:String和StringBuffer;

  3. Java中的引用数据类型:类,接口,数组;

  4. Java接口中没有实现,只有继承,只能继承其它接口,不能继承其它类。可以继承多个接口。
    Java中的类可以实现多个接口,但只能继承一个类。
    做题中遇到的知识点(二)_第2张图片
    做题中遇到的知识点(二)_第3张图片

  5. 用户在点击JButton组件时,会触发_____ActionEvent_____事件,处理该事件的监听器必须实现____ActionListener______接口,通过_____actionPressed_____方法完成事件处理,最后需要调用事件源中的____addActionListener______方法来注册监视器。
    做题中遇到的知识点(二)_第4张图片
    做题中遇到的知识点(二)_第5张图片

  6. 静态代码块的特点:随着类的加载而执行,而且只执行一次
    执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。

非静态代码块:执行的时候如果有静态初始化块,先执行静态初始化块再执行非静态初始化块,在每个对象生成时都会被执行一次,它可以初始化类的实例变量。非静态初始化块会在构造函数执行时,在构造函数主体代码执行之前被运行。

执行顺序:静态代码块----->非静态代码块-------->构造函数

  1. 内部类可以访问外部类的private修饰的变量和方法。

  2. 方法重写时无需将形参的名字也相同,只要形参的类型和个数相同就会被认为形参相同。

  3. 在System输出语句中在字符左边的“+”会当作加法处理,但在字符右边的“+”会被当作是字符之间的连接符合处理。
    做题中遇到的知识点(二)_第6张图片

  4. 局部变量不会被自动初始化。
    至于Java中静态成员变量,静态代码块,静态内部类何时被初始化?
    推荐看看这位大佬的文章Java中静态成员变量,静态代码块,静态内部类何时被初始化?

  5. 在子类中使用重写语句重写了父类的静态方法,使用子类对象向上转型,然后调用这个静态方法为什么输出的父类的静态方法?
    做题中遇到的知识点(二)_第7张图片
    做题中遇到的知识点(二)_第8张图片
    解释:静态方法是依托于类的,是不能被重写的。那为什么子类中写了一个与父类相同的静态方法却没有报错?简单可以理解为在子类中重新写了一个新的方法。虽然与父类的方法完全一样,但两者其实是两个完全不同的方法,相当这两个方法分别是子类和父类的特有方法。两个方法分别存在于子类和父类各自的为静态开辟的内存中。
    然后,第一个子类对象用了向上转型。一般向上转型就是为了调用父类的特有方法。所以他第一个就相当于是调用来父类特有的静态方法。

  6. 自动转型需要满足:
    (1)两种数据类型彼此兼容(也就是基本数据类型和String,引用数据类型,之间不能互相转化)
    (2)目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据。也就是它所用的字节数小的可以转变为大的)。

做题中遇到的知识点(二)_第9张图片
一个6个长度的数组(假设为a数组)如果想要将7个全部排序,使用Arrays.sort(a,0,6);只会排前5个,第6个不会。但使用Arrays.sort(a,0,7);则会将6个元素全部排列。

佛系更新

在这里插入图片描述

你可能感兴趣的:(考试——Java总结)