zoukankan      html  css  js  c++  java
  • 读《疯狂Java讲义》笔记总结三

    1.初始化块

    实际上初始化块是一个假象,使用javac命令编译Java类后,该Java类中的初始化块会消失——初始化块中代码会被 “还原” 到每一个构造器中,且位于构造器全部代码的前面。


    2.p125-p128   自己主动装箱,自己主动拆箱不太懂


    3.包装类



    4.单例类

    实例:


    //提供一个静态方法。用于返回Singleton实例  
    //该方法能够增加自己定义控制。保证仅仅产生一个singleton对象  
    public static Singleton getInstance() {  
      
        //假设instance为null。则表明还不曾创建Singleton对象  
        //假设instance不为null。则表明已经创建了Singleton对象  
        //将不会又一次创建新的实例  
        if (instance == null)  
        {  
            //创建一个Singleton对象。并将其缓存起来  
            instance = new Singleton ();  
        }  
        return instance;  
    }   


    5.final修饰基本类型变量和引用类型变量的差别

    当使用final修饰基本类型变量时。不能对基本类型变量又一次赋值。因此基本类型变量不能被改变,但对于引用类型变量而言,它保存的不过一个引用,final只保证这个引用类型变量所引用的地址不会发生改变,即一直引用同一个对象,但这个对象全然能够发生改变。


    6.可运行“宏替换”的final变量

    对于一个final变量来说。无论它是类变量、实例变量,还是局部变量。仅仅要该变量满足三个条件,这个final变量就不再是一个变量,而是相当于一个直接量。

    • 使用final修饰符修饰
    • 在定义该final变量时指定了初始值
    • 该初始值能够在编译时就被确定下来
    final修饰符的一个重要用途就是定义“宏变量”。当定义final变量时就为该变量指定了初始值。并且该初始值能够在编译时就确定下来,那么这个final变量本质上就是一个“宏变量”。编译器会把程序中全部用到该变量的地方直接替换成该变量的值。
    Java会使用常量池来管理以前用过的字符串直接量,比如运行String a = "java";语句之后,常量池中就会缓存一个字符串“java”;假设程序再次运行String b = "java";。系统就会让b直接指向常量池中的“java”,因此a == b 就会返回true。


    7.内部类
    非静态内部类的子类不一定是内部类。它能够是一个外部类。但非静态内部类的子类实例一样须要保留一个引用,该引用指向其父类所在外部类的对象。也就是说,假设有一个内部类子类的对象存在,则一定存在与之相应的外部类对象。


    8.effectively final






  • 相关阅读:
    (转)交换两个变量的值,不使用第三个变量的四种法方
    Java权威编码规范
    Git的安装和设置
    ActiveMQ简单入门
    JMS术语
    求助 WPF ListViewItem样式问题
    初步探讨WPF的ListView控件(涉及模板、查找子控件)
    圆角button
    用Inno Setup来解决.NetFramework安装问题
    [!!!!!]Inno Setup教程-常见问题解答
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7190188.html
Copyright © 2011-2022 走看看