第五周课后动手动脑

 

两者不一样,早期的形式简单点

当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null

定义一个原始类型的变量时,会马上给其分配内存

比如以下代码将无法通过编译:

 

 

如果不给变量赋初值,那么系统一般会默认为零,但也有特殊情况,为避免麻烦,在定义变量时,Java要求必须显式初始化变量;

对象变量如果不引用一个真实的对象,则必须声明为null

对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等

对象变量也可以使用==”判断两变量值是否相等吗?

可以,当“==”施加于“引用类型”变量时,是比较这两个变量是否引用同一对象。引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同当两个对象变量在同一个地址下则可以判等

 

 

这是判断两个对象名是否相等,即判断的是对象所处的空间地址,判断内容则需要用对象名.数据成员的方式进行访问判断是否想等,

==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等

==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。

引用代表地址,所以==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。

Equals( )方法从哪来?

当你定义一个类时,如果不显式指明它的“父亲”类是哪个,则默认是Object

ObjectJava的最顶层基类,其中定义了equals( )方法

 

请总结一下,这个方法有哪些“与众不同之处”,你能列出几条?

没有返回值类型,构造方法,不需要return语句,

当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法”

 以下代码为何无法通过编译?哪儿出错了?

 

 

如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。所以可以将“Foo obj1 = new Foo();”改为“Foo obj1 = new Foo(1);”

 

 

 

 

有参数的函数赋了实参就输出实参计算出来的结果;如果是没有参数的函数,如果哪一种初始化靠后,就输出靠后的那一种初始化计算出来的结果。

 

 

 

静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

public class text4 {

 

    public static void main(String[] args) {

    // TODO Auto-generated method stub

        //静态

        System.out.println("(静态变量)total_employees =  "+Employee.clear());

        //实例

        Employee e = new Employee();

        System.out.print("(实例变量)name =  "+e.name);

    }

 

}

class Employee

{

    String name = "lihui";

    //long salary;

    //short employee_id;

    static int total_employees = 0;

    static int clear(){

        return total_employees;

    }

    }

原文地址:https://www.cnblogs.com/wj1998/p/7700096.html