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

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

  • 相关阅读:
    Vue--会员管理列表页面,抽取BASE_URL
    Vue--系统权限拦截
    写译-冲刺班
    看到一篇有收获的博文【关于外挂生涯的忠告】(转载)
    笔记管理-vscode-印象笔记-git-博客园
    1.4条件和循环
    1.3撰写表达式
    1.2对象定义与初始化
    1.1如何写一个c++程序
    send()函数 recv()函数
  • 原文地址:https://www.cnblogs.com/jccjcc/p/9820978.html
Copyright © 2011-2022 走看看