[Java 编程思想]第二章

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方法时候会转入内嵌机制,大大提高执行效率。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,895评论 18 399
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,425评论 11 349
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,923评论 0 62
  • 不知从什么时候开始,我喜欢上黑夜,喜欢上梧桐。只依稀记得是那一次—— 我一个人走在寂静的小路上,望着眼...
    曦熙之夏阅读 2,548评论 0 1
  • 每一句不成熟的告白 都是在自取其辱啊 每一次不完整的表达 都是在葬送前程啊 你到底算大侠还是高手呢 或许这听起来像...
    苏良生的墙阅读 1,085评论 1 4