zoukankan      html  css  js  c++  java
  • Java核心技术第4章笔记

        如果有两个类 Employee 和 EmployeeTest 分别在Employee.java和EmployeeTest.java(其中有main方法)中定义, EmployeeTest 依赖于 Employee ,则要编译运行有两种方法:

        (1)使用通配符调用Java编译器: java Employee*.java ,所有与通配符匹配的源文件都会被编译为类文件。

        (2)直接编译EmployeeTest.java: java EmployeeTest.java ,Java编译器发现EmployeeTest.java使用了 Employee 类时会查找名为Employee.class的文件,如果没有找到就会搜索Employee.java进行编译。如果Employee.class文件存在,但是Employee.java比它更新,也会重新编译这个文件。

        Employee.java:

    public Employee(String n, double s, int year, int month, int day) {
        name = n;
        salary = s;
        LocalDate hireDay = LocalDate.of(year, month, day);
    }

        这种方式与传入 LocalDate 类型参数相比哪种更好?

        实例方法都会获得一个隐式参数,这个参数就是调用方法的对象的引用,在方法中使用this关键字可以获取这个引用参数,在方法内会在实例方法调用和域前自动添加this引用。

        是否将某个方法设置为内联方法是Java虚拟机的任务,即时编译器会监视调用那些简洁、经常被调用、没有被重载以及可优化的方法。

        不要编写返回引用可变对象的访问器方法,如需返回一个可变对象的引用,应该首先对它进行克隆(clone)。

        实例方法可以访问所属类的所有对象的私有数据。

         final 修饰符大都应用于基本类型域或不可变类的域(如果类中的每个方法都不会改变对象,这种类就是不可变类,String类就是一个不变类)。

        静态变量使用的比较少,静态常量用的比较多。最好不要将域设计为public,但公有常量(即final域)却没问题。

        两种情况使用静态方法:

        (1)方法不需要访问对象状态,所需参数都是显式参数。

        (2)方法只需要访问类的静态域。

        使用静态工厂方法而不是构造器创建对象的两种情况:

        (1)构造器的名字必须与类名相同,但是希望使用更有意义的不同方法名创建对象。

        (2)构造器无法改变所构造的对象类型,但静态工厂方法可以返回不同的类型,如所构造类型的子类对象。

        每一个类都可以有一个main方法,这是一个常用于对类进行单元测试的技巧。

        按值调用(call by value)表示方法接收的是调用者提供的值,按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。Java使用按值调用,对按引用调用的反例:

    public static void swap(Employee x, Employee y) {
        Employee temp = x;
        x = y;
        y = temp;
    }

        初始化域时可以调用方法。

        域初始化顺序:

        (1)初始化为默认值(0、false或null)。

        (2)按照声明的顺序,依次执行所有域初始化语句和初始化块。

        (3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。

        (4)执行构造器的主体。

        从编译器的角度看,嵌套的包之间没有任何关系。

        编译器在编译源文件时不检查目录结构,如果它不依赖于其他包,就不会出现编译错误。但最终程序无法运行,除非将所有文件移动到正确的位置上。如果包与目录不匹配,虚拟机就找到类。

        类路径是所有包含类文件的路径的集合,可以包含目录或jar文件的路径,

  • 相关阅读:
    区块链|学习笔记(三)
    左神算法之获取栈中最小值
    23种设计模式之适配器模式
    二叉树序列化和反序列化
    归并排序
    通过集合构建RDD或者DataFrame
    内核源码分析——shuffle
    问题
    函数参数
    问题记录
  • 原文地址:https://www.cnblogs.com/cbkun/p/11101577.html
Copyright © 2011-2022 走看看