两者不一样,早期的形式简单点
当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null。
定义一个原始类型的变量时,会马上给其分配内存,
比如以下代码将无法通过编译:
如果不给变量赋初值,那么系统一般会默认为零,但也有特殊情况,为避免麻烦,在定义变量时,Java要求必须显式初始化变量;
对象变量如果不引用一个真实的对象,则必须声明为null。
对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等
对象变量也可以使用“==”判断两变量值是否相等吗?
不可以,当“==”施加于“引用类型”变量时,是比较这两个变量是否引用同一对象。引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。当两个对象变量在同一个地址下则可以判等
这是判断两个对象名是否相等,即判断的是对象所处的空间地址,判断内容则需要用对象名.数据成员的方式进行访问判断是否想等,
当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。
Equals( )方法从哪来?
当你定义一个类时,如果不显式指明它的“父亲”类是哪个,则默认是Object。
Object是Java的最顶层基类,其中定义了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;
}
}