• java 一些容易忽视的小点-类和对象


    构造器

    1. 通过new关键字调用

    2. 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。

    3. 构造器是有权限的,也就是可以添加public,也可以添加protect 。。。

    4. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句

    5. this不能用于static方法中

    6. 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加

    7. 构造器的方法名必须和类名一致

    8. static静态初始化块执行顺序

      1. 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止

      2. 构造方法执行顺序和上面顺序一样

    9. 类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的方法相同,但方法的实现不同。当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写后的版本


    垃圾回收

    1. 程序员无权调用垃圾回收器

    2. 程序员可以调用System.gc(),该方法只是通知JVM,并不是运行垃圾回收器。尽量少用,会申请启动Full GC,成本高,影响系统性能

    3. finalize方法,是Java提供给程序员用来释放对象或资源的方法,但是尽量少用
    4. 对象空间的释放:将对象赋值null即可。垃圾回收器将负责回收所有”不可达”对象的内存空间
    5. 对象分为三种状态:年轻代、年老代、持久代。JVM将堆内存划分为 Eden、Survivor 和 Tenured/Old 空间
    6. 垃圾回收过程
      1. 新创建的对象,绝大多数都会存储在Eden中,
      2. 当Eden满了(达到一定比例)不能创建新对象,则触发垃圾回收(GC),将无用对象清理掉,然后剩余对象复制到某个Survivor中,如S1,同时清空Eden区

      3. 当Eden区再次满了,会将S1中的不能清空的对象存到另外一个Survivor中,如S2,同时将S1区中的不能清空的对象,也复制到S2中,保证Eden和S1,均被清空

      4. 重复多次(默认15次)Survivor中没有被清理的对象,则会复制到老年代Old(Tenured)区中
      5. 当Old区满了,则会触发一个一次完整地垃圾回收(FullGC),之前新生代的垃圾回收称为(minorGC)

    内存管理

    1. 内存泄露
      1. 创建大量无用对象,如使用String拼接字符,而不是使用StringBuffer
      2. 静态集合类的使用
      3. 各种连接对象(IO流对象、数据库连接对象、网络连接对象)未关闭
      4. 监听器的使用

    package

    1. 两个要点:

        1. 通常是类的第一句非注释性语句。

        2. 包名:域名倒着写即可,再加上模块名,便于内部管理类

    2. 写项目时都要加包,不要使用默认包

    3. com.AWT和com.AWT.Button,这两个包没有包含关系,是两个完全独立的包,只是逻辑上看起来后者是前者的一部分

    4. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用
    5. 静态导入(static import)用于导入指定类的静态属性
      1. import static java.lang.Math.*;//导入Math类的所有静态属性
    6. 如果导入两个同名的类,只能用包名+类名来显示调用相关类
      1. java.util.Date date  = new  java.util.Date();

    方法(函数)

    1. void返回类型是有return 的,不过是系统隐式的添加
  • 相关阅读:
    在IE和Firfox获取keycode
    using global variable in android extends application
    using Broadcast Receivers to listen outgoing call in android note
    help me!virtual keyboard issue
    using iscroll.js and iscroll jquery plugin in android webview to scroll div and ajax load data.
    javascript:jquery.history.js使用方法
    【CSS核心概念】弹性盒子布局
    【Canvas学习笔记】基础篇(二)
    【JS核心概念】数据类型以及判断方法
    【问题记录】ElementUI上传组件使用beforeupload钩子校验失败时的问题处理
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758356.html
Copyright © 2020-2023  润新知