• 【java基础】java基础知识,持续更新中。。。


    目录

    1、重写(override)与重载(overloading)的介绍与区别

    2、字符串{0}占位符的使用方法

    3、java异常处理

    4、String对象的一些知识点

    5、Java IO/NIO 知识点

    --------------------------------------------------------------------------------华丽分割线--------------------------------------------------------------------------------

    知识点

    1、重写(override)与重载(overloading)的介绍与区别

    重载(Overloading)

    方法重载是让类以统一的方式处理不同类型数据的一种手段。可以发生在同一类中,也可以发生在子父类中。

    类中存在多个方法名相同,具有不同参数个数、顺序、类型,是一个类中多态性的表现。

    调用时根据传参决定使用哪个方法,切记重载前提:相同方法名,不同参数列表。

    另外,重载的方法返回值类型可以相同也可以不同,但不能以返回值来区别重载方法。重载方法对访问修饰权限、抛出异常类型没有要求

    子类重载父类方法两种情况:

    ①、若父类方法被默认修饰,子父类同包可被重载,不同包时,调用时父类方法不可用。

    ②、若父类方法被protected修饰,调用时,父类被重载方法均可被调用。

    重写(override)

    发生在子父类间的一种多态性,是子类对父类方法的重新定义。如果子类的方法名、返回值、参数列表与父类相同,则说父类该方法被重写。若未重写,则继承父类方法即可。

    重写前提:参数列表、返回值完全相同,如果参数列表不同,则为重载;如果返回值不同,则编译时异常

    另外,子类方法访问修饰权限不能小于父类的。但重写方法只能抛出父类方法的异常或其子类异常

      在子类中,用super关键字调用被重写父类方法。final父类不能被重写

    总结: 
    重写(覆盖)的规则: 
    1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 
    2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。 
    3、重写的方法的返回值必须和被重写的方法的返回一致或者兼容; 
    4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; 
    5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写; 
    6、静态方法不能被重写为非静态的方法(会编译出错); 
    7、父类方法被final时,无论该方法被public、protected及默认所修饰,子类均不能重写该方法。

     

    overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。 
    重载的规则: 
    1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); 
    2、不能通过访问权限、返回类型、抛出的异常进行重载; 
    3、方法的异常类型和数目不会对重载造成影响。

    2、字符串{0}占位符的使用方法

    动态替换字符串内容的方法
    方法一:利用 java.text.MessageFormat实现
        String str = “this is a test!”;
        System.out.println(MessageFormat.format(“MessageFormat方法:{0}这是{1}的使用”, str ,”占位符”));
    方法二:java.lang.String.replace实现
        String str = “难道这个可以?{0}这是{1}的使用”;
        str = str.replace(“{1}”,”占位符”);
        System.out.println(str);
    第二种方法比较笨,动态替换字符串用的地方比较多,例如批量给不同用户发短信、发邮件

    3、Java异常处理

    异常处理时, RuntimeException及其派生的异常类,均不需要包装到throws列表中使用,被称为 未经检查的异常(unchecked exceptions)。
    必须包含在throws列表的异常,某些方法能产生的异常但不能自己处理,被称为 受检查的异常(checked exceptions)。

    4、String对象的一些知识点

    String对象定义时,字符串长度是不可改变的。但String支持一些改变操作,区别是在改变字符串后,创建新的Stirng对象保存改变后的内容。
    因此可以用String的友类 StringBuffer,但是效率没有String高。

    另:toString()。通过对创建类的toString()方法的覆盖,允许将得到的字符串集成到java程序环境中。例如:重写的toString方法可以被用于print()和println()语句以及连接表达式(+)中。

    5、Java IO/NIO 知识点

    【java输入/输出流】

    java通过流完成输入和输出,流中保存的实际上都是字节文件。

    流分为:字节流(byte stream)和字符流(character stream)。
      另:预定义流(system),in(键盘输入)、out、err(控制台输出)

    所用抽象类:字节流:输入用InputStream、输出用OutputStream;字符流:输入用Reader、输出用Writer

    【字符流和字节流比较】:

    (1) 字符流处理单元为2个字节的Unicode字符,字节流处理单元1个字节。如果是音频文件、图片、歌曲,就用字节流;若关系到中文(文本),就用字符流。

    (2)字节流在操作时,本身不会用到缓冲区(内存)的。与文件本身直接操作。而字符流在操作时用到缓冲区。字节流在操作文件时,即使不关闭资源,文件也能输出。但字符流如果不使用close方法的话,则不会输出任何内容;

      说明字符流用的缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能不close的情况下输出内容。

    (3)在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。

  • 相关阅读:
    wepack使用
    js 原型链
    react 生命周期
    settimeout--原来定时器是有三个及以上参数的
    我所未知的 typeof 现象
    js 里面的 function 与 Function
    ECMAScript 对象类型
    js阻碍DOM加载
    面试问题与心得
    Java IO 乱码
  • 原文地址:https://www.cnblogs.com/liuxs13/p/9025279.html
Copyright © 2020-2023  润新知