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

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

  • 相关阅读:
    常用的16个Java实用工具类,Java开发人员请收藏!
    JVM内存区域与垃圾回收
    听说你还不知道Java代码是怎么运行的?
    Java 到底是值传递还是引用传递?
    Java线程池实现原理及其在美团业务中的实践
    别再说Java对象都是在堆内存上分配空间的了!
    面试常问的Java虚拟机内存模型,看这篇就够了!
    好用的Java工具类库,GitHub星标10k+你在用吗?
    MySQL 全文索引实现一个简单版搜索引擎
    laravel 数据库里的图片重命名
  • 原文地址:https://www.cnblogs.com/jccjcc/p/9820978.html
Copyright © 2011-2022 走看看