zoukankan      html  css  js  c++  java
  • 构造器和对象

    构造器

    构造器是一个特殊的方法,定义构造器的语法格式与定义方法的语法格式很像,定义构造器的语法格式如下:
    [修饰符] 构造器名(形参列表)
    {
    //由零条到多条可执行性语句组成的构造器执行体
    }
    构造器语法格式的详细说明如下。
    修饰符:修饰符可以省略,也可以是public、protected、private其中之一。
    构造器名:构造器名必须和类名相同
    形参列表:和定义方法形参列表的格式完全相同。
    值得指出的是,构造器既不能定义返回值类型,也不能使用void定义构造器没有返回值。
    如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但Java会把这个所谓的构造器当成方法来处理。 

    构造器问题

    构造器不是没有返回值吗?为什么不能使用void修饰呢?
    简单地说,这个是java的语法规定。实际上类的构造器是有返回值的,当我们用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意:不能在构造器里显示使用return来返回当前类的对象,因此构造器的返回值是隐式的 

    对象的产生和使用 

    创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例。如果访问权限允许,类里定义的方法和Field都可以通过类或实例来调用。类或实例访问方法或Field的语法是:类.Field|方法,或者实例.Field|方法,在这种方式中,类或实例是主调者,用于访问该类或该实例的指定Field或方法。static修饰的方法和Field,即可通过类来调用,也可通过实例来调用;没有使用static修饰的普通方法和Field,只可通过实例来调用。

    对象、引用和指针 

    在创建一个实例的代码(Person p= new Person())中实际产生了两个东西:一个是引用变量(栈),一个是对象(实例)(堆)。
    类也是一种引用数据类型,因此我们产生出来的引用类型变量实际上只是个引用,它被存放在栈内存中,指向实际的对象;而真正的对象则存放在堆内存中。
    栈内存中的引用变量并未真正存储对象的数据,对象的数据实际存放在堆内存里;当一个对象被创建成功以后,这个对象将保存在堆内存中,java程序不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象。也就是说,不管是数组还是对象,都只能通过引用来访问它们。
    堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象。
    如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,java的垃圾回收机制将回收该对象,释放该对象所占的内存区。因此,如果希望通过垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null。

  • 相关阅读:
    springboot-pom文件报错问题
    php-session永不过期
    linux mysql 配置
    jmeter
    性能指标
    ab
    php--xdebug调试
    logstash6-mysql同步数据到es
    php--宝塔环境
    linux-centos7安装错误解决
  • 原文地址:https://www.cnblogs.com/t0404/p/10291100.html
Copyright © 2011-2022 走看看