zoukankan      html  css  js  c++  java
  • 类与对象的问题

    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

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

  • 相关阅读:
    Docker学习笔记之常用的 Docker Compose 配置项
    Docker学习笔记之使用 Docker Compose 管理容器
    qt无法使用终端启动的解决方法
    实践卡尔曼滤波--小球追踪
    高斯分布 笔记
    蒙特卡罗定位(Particle Filter Localization)笔记
    珊格地图笔记
    ubuntu14.04 下安装 gsl 科学计算库
    SLAM学习资料汇总
    矩阵的SVD分解
  • 原文地址:https://www.cnblogs.com/jccjcc/p/9820978.html
Copyright © 2011-2022 走看看