zoukankan      html  css  js  c++  java
  • 从头认识java-4.1 创建与初始化对象

    这一章节我们来聊聊创建与初始化对象。

    这个需要讨论的问题源自于c语言,在c语言中,很大部分的错误是忘记了初始化某些东西,他把库的构建的使用需要完成两个操作-创建与初始化,但是在java里面,使用构造器来创建与初始化,他们是在一起的,因此避免了一部分忘记初始化的错误。

    package com.ray.testobject;
    
    public class Test {
    	public static void main(String[] args) {
    		TestClass t1=new TestClass();
    		TestClass t2=new TestClass();
    	}
    }
    
    class TestClass {
    	public TestClass() {
    		System.out.println("TestClass created");
    	}
    
    	public TestClass(int param) {
    		System.out.println("TestClass created");
    		System.out.println(param);
    	}
    
    }

    输出:

    TestClass created
    TestClass created
    1

    从输出结果我们可以看到,其实在创建对象的时候我们利用构造器已经进一步的进行初始化,而不需要特定的运行初始化函数。

    如果构造器不传入任何参数,那么,就会创建一个没有任何属性的对象。


    需要注意的是:即便我们没有对对象初始化属性,编译器也会为我们初始化,这样就可以减少一定的错误。

    我们修改一下上面的代码:

    package com.ray.testobject;
    
    public class Test {
    	public static void main(String[] args) {
    		TestClass t1 = new TestClass();
    		TestClass t2 = new TestClass(1);
    	}
    }
    
    class TestClass {
    
    	private String name;//增加属性
    	private int id;//增加属性
    
    	public TestClass() {
    		System.out.println("TestClass created");
    		System.out.println(id);
    		System.out.println(name);
    	}
    
    	public TestClass(int param) {
    		System.out.println("TestClass created");
    		System.out.println(param);
    		System.out.println(id);
    		System.out.println(name);
    	}
    
    }


    输出:

    TestClass created
    0
    null
    TestClass created
    1
    0
    null

    从输出结果可以看见,对象在初始化的时候,已经把里面的属性初始化。

    我们再来修改一下程序,然后看看构造器初始化的参数与对象初始化的参数两者之间有什么不同。

    package com.ray.testobject;
    
    public class Test {
    	public static void main(String[] args) {
    		TestClass t1 = new TestClass();
    		TestClass t2 = new TestClass("1");
    	}
    }
    
    class TestClass {
    
    	private String name;
    
    	public TestClass() {
    		System.out.println("TestClass created");
    		System.out.println(name);
    	}
    
    	public TestClass(String param) {//修改了param 的类型
    		System.out.println("TestClass created");
    		System.out.println(param);
    		System.out.println(name);
    	}
    
    }

    输出:

    TestClass created
    null
    TestClass created
    1
    null

    因为如果需要使用具有param构造器来构造对象,必须初始化param,因此,param是认为的设置,而name这个属性域,则是由编译器自动初始化。


    总结:这一章节讨论了创建与初始化对象的一些话题。


    这一章节就到这里,谢谢。

    -----------------------------------

    目录


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    smarty对网页性能的影响--开启opcache
    1stopt8.0 代码示例
    1stopt、matlab和python用morris、sobol方法实现参数敏感性分析
    MATLAB 实现sobol参数敏感性分析
    matlab中自带的sobol的函数提供的sobol序列
    matlab和fortran混合编程
    mathematic语法基础
    fortran常用语句--读写带注释文档、动态数组等语法
    fortran语言调用fortran写的dll
    C语言函数指针与 c#委托和事件对比
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944479.html
Copyright © 2011-2022 走看看