第十一章 对象的生命周期

第11章 对象的生命周期

11.1  创建对象的方式

  1. 用new语句创建对象
  2. 运用反射手段,调用java.lang.Class 或者 java.lang.Constructor 类的newInstance()实例方法。
  3. 调用对象的clone()方法。
  4. 运用反序列化手段

11.2 构造方法

  在多数情况下,初始化对象的最终步骤是去调用这个对象的构造方法。构造方法负责对象的初始化工作,为实例变量赋予合适的初始化值。

  构造方法满足的语法规则:

  • 方法名必须与类名相同

     1 public class Sample{
     2         private int x;
     3         public Sample(){   //不带参数的构造方法
     4               this(1);
     5         }
     6         public Sample(int x){   //带参数的构造方法
     7              this.x = x;
     8         }
     9
    10        public int Sample(int x ){ //不是构造方法
    11              return x++;
    12        }
    13
    14 }
    15
    16     
  • 不要声明返回类型
  • 不能被static,final,synchronized,abstract和native修饰

   构造方法不能被子类继承,所以用final和abstract修饰没有意义。

   构造方法用于初始化一个新建的对象,所以用static修饰没有意义。

   多个线程不会不会同时创建内存地址相同的同一个对象,因此用synchronized修饰没有意义。

   此外,java语言不支持native类型的构造方法。



原文地址:https://www.cnblogs.com/twinkle-star/p/9250989.html

时间: 2024-08-26 12:21:00

第十一章 对象的生命周期的相关文章

《精通C#》第十三章 对象的生命周期

在C#中,程序员无法直接在C#中删除一个托管对象,因为C#不提供这个功能,那么类的实例就需要通过CLR调用垃圾回收机制进行清除,回收内存..NET垃圾回收器会压缩空的内存块来实现优化,为了辅助这一功能,托管堆会保存一个指针,它指向下一个对象将被分配的位置.那么CLR是如何使用垃圾回收机制呢?首先,类实例化之后具体的对象会被分配到一块叫托管堆的内存区域上,将托管堆中的对象的引用地址返回给函数中的引用变量,引用变量保存在栈内,要使用对象中的方法只需要使用点操作就可以.特别需要说一下的是,结构是数值类

《深入Java虚拟机学习笔记》- 第7章 类型的生命周期

一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令,或者通过不明确的创建.反射.克隆和反序列化): 当调用某个类的静态方法时(即在字节码中执行invokestatic指令): 当使用某个类或接口的静态字段,或者对该字段赋值时(用final修饰的静态字段除外,它被初始化为一个编译时常量表达式): 当调用Java API中的某些反射方法: 当初始化某个

MyBatis入门——核心对象的生命周期(SqlSessionFactoryBuilder,SqlSessionFactory, SqlSession和Mapper)

二.核心对象的生命周期 从上一篇文章中,我们可以看出mybatis操作数据库主要使用了4个核心对象:SqlSessionFactoryBuilder,SqlSessionFactory, SqlSession和Mapper.那么,在软件系统中,这个几个对象的生命周期是什么样的呢?什么时候创建?什么时候销毁? 1. SqlSessionFactoryBuilder SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder(

hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)

三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据.已经持久化,添?到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Session缓

Java对象的生命周期与作用域的讨论(转)

导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对象的使用时间,而T3则表示其清除时间.由此,我们可以看出,只有T2是真正有效的时间,而T1.T3则是对象本身的开销.下面再看看T1.T3在对象的整个生命周期中所占的比例. 我们知道,Java对象是通过构造函数来创建的,在这一过程中,该构造函数链中的所有构造函数也都会被自动调用.另外,默认情况下,调用

[原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

C++ 匿名对象的生命周期

//匿名对象的生命周期 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Point{ public: Point(){ cout << "自定义的无参构造函数被调用了1" << endl; } ~Point(){ cout << "自定义的析构函数被调用了2" << endl; } }; void P

Java 对象的生命周期

Java对象的生命周期 在Java中,对象的生命周期包含下面几个阶段: 1.      创建阶段(Created) 2.      应用阶段(In Use) 3.      不可见阶段(Invisible) 4.      不可达阶段(Unreachable) 5.      收集阶段(Collected) 6.      终结阶段(Finalized) 7.      对象空间重分配阶段(De-allocated) 图1. JavaObject Life Cycle 1.创建阶段(Create

sqlite3语句对象的生命周期--举例说明

 语句对象的生命周期:  1.使用sqlite3_prepare_v2或相关的函数创建这个对象  2.使用sqlite3_bind_*()给宿主参数绑定值  3.通过调用sqlite3_step一次或多次来执行这个sql  4.使用sqlite3_reset()重置这个语句,然后回到第2步,这个过程做0次或多次  5.使用sqlite3_finalize()销毁这个对象 例子: 1 //查询指定商品 2 - (Product *)selectProductById:(int)proId { 3