zoukankan      html  css  js  c++  java
  • 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 的,不过是系统隐式的添加
  • 相关阅读:
    基本数据类型(int, bool, str)
    循环 运算符 格式化输出 编码
    认识python 变量 数据类型 条件if语句
    简述bug的生命周期?
    性能测试的流程?
    主键、外键的作用,索引的优点与不足?
    需求测试的注意事项有哪些?
    对某软件进行测试,发现在WIN98上运行得很慢,怎么判别是该软件存在问题还是其软硬件运行环境存在问题?
    什么是兼容性测试?请举例说明如何利用兼容性测试列表进行测试。
    如何定位测试用例的作用?
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758356.html
Copyright © 2011-2022 走看看