码迷,mamicode.com
首页 > 其他好文 > 详细

类与对象的问题

时间:2018-10-20 11:47:12      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:object   tst   string   equal   如何   als   没有   定义   out   

1、

早期经常这样定义变量 int value=100;

前面的示例中这样定义变量 MyClass obj = new MyClass();

第一种仅仅定义了一个变量并为它赋了一个值。而第二种是定义了一个类的对象,通过这个对象可以调用该类中的所有内容。

2、

package jiecheng;

public class Test {
public static void main(String[] args)
{
Foo obj1=new Foo();
Foo obj2=new Foo();
System.out.println(obj1==obj2);
}
}
class Foo
{
int value=100;
}

运行该代码结果为false,我们肯定认为结果为true, 

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

3、如何比较两个对象的“内容”是否一样?    

Demo: ObjectEquals.java

很明显 ==的为false,equals为true。

4、Equals( )方法从哪来?

当你定义一个类的时候,

如果不显式指明它的“父亲”类是哪个,则默认是Object。

Object是Java的最顶层基类,其中定义了equals( )方法。

5、class MyTestClass

{

public MyTestClass(int initValue)

{

Value=initValue;

}

}

该函数名与类名相同,为构造函数。

6、

public class TESTcc {
public static void main(String[] args)
{
Foo obj=new Foo();
}
}
class Foo
{
int value;
public Foo(int initValue)
{
value=initValue;
}
}

该代码无法编译的原因是,Foo类中只有一个构造函数,如果光定义Foo的对象obj,是无法编译的,如果改成Foo obj=new Foo(0)的话,就没有问题了,这是调用了类中的构造函数。

7、编译InitializeBlockDemo。

结果为100  300.

在主函数中调用时,还是主要调用刚定义的时候的值。

8、TestStaticInitializeBlock.java

在主函数中调用时,先调用最小辈分的类的第一个函数,然后依次往后调用中间辈分第一个,最大辈分的一个,之后直接调用最小辈分剩余的函数,中间辈分剩余函数,最大辈分剩余函数。

 

类与对象的问题

标签:object   tst   string   equal   如何   als   没有   定义   out   

原文地址:https://www.cnblogs.com/jccjcc/p/9820978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!