• java查漏补缺,巩固理论知识


    1、byte、short、char做简单运算,结果类型是int,查了下貌似没有原因,规范如此

    2、char类型默认初始值,空字符,空格字符,空字符串

    空字符:\u0000,是一个Unicode字符(\u开头),是控制字符(也叫不可显字符)

    空格字符:\u0020,和前者不同

    '\u0000':空字符值,char类型的默认初始值就是它,对应的整数值是0

    "\u0000":是一个包含一个空字符的字符串,"\u0000".length()=1

    ""是空字符串,里面不包含任何字符,长度是0

    " "是空格字符串,里面包含一个空格,长度是1

    " ".equals("\u0000") //false
    " ".equals("\u0020") //true
    '\u0000'+2              //2

    3、方法的参数传递机制,基本数据类型,传递的是值,引用类型,传递的是对象的内存地址

    4、属性赋值的顺序

    默认初始化值,显式初始化赋值,构造器中初始化赋值,方法或属性调用赋值,其中前三个只执行一次

    5、this和super关键字

    表示当前对象,this()表示调用构造方法,如果在构造器中调用,必须声明在首行

    在构造器中调用this或super构造器时,都必须放在首行,因此不能同时都调用

    如果没有显式调用带参数的构造器,默认会调用无参构造器(this或super)

    子类构造器初始化过程中一定会调用父类构造器最终到调用Object类的构造器

    6、子类和父类有同名属性时,子类的这个属性不会覆盖父类的同名属性,也就是同时存在,未指定时默认是子类的属性

    7、类和类之间的关系:泛化(继承),实现,聚合(电脑和组成电脑的鼠标键盘等部件,可以独立使用),组合(公司和部门关系,不可分割),关联,依赖

    8、多态

    父类引用指向子类对象:Animal dog = new Dog()

    对于方法调用,编译时看左边,运行时看右边(编译时检查父类类型,运行时执行子类类型)

    对于属性访问,编译和运行时都看左边(只看引用变量所属的类型)

    对于类型转换,父类转换为子类,可能会报类型转换异常,子类转换为父类是一定可以转换成功的

    父类引用只能调用父类中声明过的方法,不能调用子类独有的方法。运行时实际调用的是子类覆盖的方法(动态绑定)

    对于父类被覆盖的方法,统称为虚拟方法

    9、对象被回收之前,会调用它的finalize()方法

    10、new Boolean("true123") //false   new Boolean("TrUe") //true 查阅源码

    public Boolean(String s) {
         this(parseBoolean(s));
    }
    public static boolean parseBoolean(String s) {
         return ((s != null) && s.equalsIgnoreCase("true"));
    }

    11、Arrays.asList(xx),其中xx是一个数组

    当xx更新时,返回的这个list也会自动更新;得到的list长度是不可变的;不支持add,remove,clear方法

    12、java中类不支持多继承,但是接口支持多继承,interface A extends B,C(B,C都是interface),例如spring中的应用上下文类

    public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
    MessageSource, ApplicationEventPublisher, ResourcePatternResolver

     13、代码块作用

    用来初始化类或者对象;

    静态代码块随着类加载执行且只执行一次,用于初始化类信息;优先于非静态代码块执行;只能调用静态属性,静态方法

    非静态代码块随着对象创建而执行,每创建一个对象就执行一次;

    14、final修饰局部变量或者方法的形参时,该变量或参数只能使用,不能再重新赋值或修改

     
  • 相关阅读:
    Bitnami Redmine安装和插件配置
    DataTable转换成List<T>
    学习Javascript闭包(Closure)
    单例模式(Singleton)
    哈希表--HashSet<T>
    .NET 4.0中的泛型的协变和逆变
    vue-cli脚手架里如何配置屏幕自适应
    新手如何理解JS面向对象开发?
    vue轮播图插件vue-awesome-swiper的使用与组件化
    vue中sass的配置安装流程
  • 原文地址:https://www.cnblogs.com/yb38156/p/16194626.html
Copyright © 2020-2023  润新知