美文网首页
[Java 编程思想]第二章

[Java 编程思想]第二章

作者: goule1994 | 来源:发表于2017-06-06 20:03 被阅读7次
    1. java是基于C++
    2. 堆和栈的区别
    1. 栈和堆都是java用来在Ram中存放数据的地方,java自动管理栈和堆。
    1. 栈的存取速度大于堆的速度,仅次于寄存器,缺点是栈中的数据大小与生存期必须是确定的,缺乏灵活性,栈中的数据可以共享。
    2. 堆的优势是动态分配内存大小,生存期不需要事先高数编译器,缺点是动态分配内存,读取速度比较慢。
    3. 栈是先进后出,后进先出的原则,类似与弹簧,即先分配的内存后释放。
    4. 堆的内存释放没有先后顺序,堆是属于全局的。
    5. 栈存放存放函数的参数值,局部变量,基本类型等。
    6. 包装类数据,如Integer, String, Double等将相应的基本数据类型包装起来的类。这些类数据全部存在于堆中,new出来的存储在堆中,引用变量存储在栈中。
      例如:
      String a = "abc";
      String b = new String("abc");
      String c = "abc";
      a和b和c都存储在栈中,"abc"也存储在栈中,new String("abc")存储在堆中,c和a指向同一个内存地址。

    总结:

      分析堆和栈考虑以下4个方面:
      1. 共同点
      2. 不同点(存取速度,灵活性)
      3. 内存的释放先后顺序 
      4. 存储的参数类型
    
    3. static
    • 静态变量或者静态方法,不需要依赖任何对象就可以进行访问,对于静态方法来讲,是没有this的,所以静态方法中不能访问类中非静态方法和非静态成员方法,反之是可以的 。
    • 类的构造器实际上就是静态方法。
    • 静态变量在内存中只有一个副本,仅当在类初次加载时会被初始化。
    4. 注释的代码在编译的时候不会编译
    5. finfal
    • final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
    • 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
      使用final方法的原因有二:
      第一、把方法锁定,防止任何继承类修改它的意义和实现。
      第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

    相关文章

      网友评论

          本文标题:[Java 编程思想]第二章

          本文链接:https://www.haomeiwen.com/subject/mbewfxtx.html