构造器

在我们初始化对象时,如果希望设置一些默认值,那么就可以使用构造器,在Java中,构造器使用和类同名的名字且没有返回值,如下

class Test{
private String name;
Test(String n){
name = n;
}
public String getName(){
return name;
}
} public class app {
public static void main(String[] args){
Test test = new Test("小王");
String n = test.getName();
System.out.println(n);
}
} // 小王

并且可以发现这个构造器是在new的时候执行的。如果是继承至某个父类,那么我们可以在子类中调用super来手动执行父类中的构造器。

class Test{
private String name;
Test(String n){
name = n;
}
public String getName(){
return name;
}
} class Test2 extends Test{
Test2(String n){
super(n);
}
} public class app {
public static void main(String[] args){
Test2 test = new Test2("老王");
String n = test.getName();
System.out.println(n);
}
} // 老王

前面之所以说是手动是因为,就算你不去调用父类的构造器,它还是会被执行,只是它执行的是没有参数的构造器。我们不妨来看看下面这段代码

class Test{
Test(){
System.out.println("Test");
}
} class Test2 extends Test{
Test2(){
System.out.println("Test2");
}
} public class app {
public static void main(String[] args){
Test2 test = new Test2();
}
} // Test
// Test2

不竟程序自动调用了父类的构造器,而且还比子类构造器先执行,之所以父类的构造器先执行是有原因的,你想啊,子类往往需要用到父类中的一些变量或方法,如果不先初始化父类中的构造器,那么肯定就会出现一些问题。

垃圾回收

我们知道一个方法,可以无数次的被调用,因此如果没有一个合理的规范,那么每次执行都会加大内存的消耗,而且有些方法执行完毕以后就没有任何意义了,因此一些语言中加入了垃圾回收,对于一些没有用处的进行回收,当然垃圾回收不仅仅针对方法。

但是话说回来你也不能乱回收对吧,得有一个规范,而这个规范就是,如果一个对象没有被引用,或被设置成null,又或者当前对象被其他对象所覆盖,那么它就会变成垃圾,会被垃圾收集器所回收。

Java中的构造器与垃圾回收的更多相关文章

  1. Java中内存泄露及垃圾回收机制

    转自:http://blog.sina.com.cn/s/blog_538b279a0100098d.html 写的相当不错滴...................... 摘  要 Java语言中,内 ...

  2. Java中的分代垃圾回收策略

    一.分代GC的理论基础 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大 ...

  3. Java虚拟机内存模型及垃圾回收监控调优

    Java虚拟机内存模型及垃圾回收监控调优 如果你想理解Java垃圾回收如果工作,那么理解JVM的内存模型就显的非常重要.今天我们就来看看JVM内存的各不同部分及如果监控和实现垃圾回收调优. JVM内存 ...

  4. Java虚拟机学习笔记——JVM垃圾回收机制

    Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...

  5. [Java] 理解JVM之三:垃圾回收机制

    JVM内存中的各个区域都会回收吗? 首先我们知道 Java 栈和本地方法栈在方法执行完成后对应的栈帧就立刻出栈销毁,两者的回收率可以认为是100%:Java 堆中的对象在没有被引用后,即使用完成后会被 ...

  6. 简单聊聊java中如何判定一个对象可回收

    背景 说到java的特性,其中一个最重要的特性便是java通过new在堆中分配给对象的内存,不需要程序员主动去释放,而是由java虚拟机自动的回收.这也是java和C++的主要区别之一:那么虚拟机是如 ...

  7. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  8. C#中IDisposable的用法-垃圾回收

    在Net中,由GC垃圾回收线程掌握对象资源的释放,程序员无法掌控析构函数的调用时机.对于一些非托管资源,比如数据库链接对象等,需要实现IDisposable接口进行手动的垃圾回收.那么什么时候使用Id ...

  9. Java中是构造器创建对象吗?

    首先,这里说明” Java中是构造器创建对象 “这句话是完全错误的. Java中构造器的作用主要是为了初始化变量的值...其实在执行构造器之前,Java对象所需要的内存空间,已经产生了... 一般可以 ...

随机推荐

  1. css3种引入方式,样式与长度颜色,常用样式,css选择器

    # CSS三种引入方式 ## 一.三种方式的书写规范 #### 1.行间式 ```html<div style="width: 100px; height: 100px; backgr ...

  2. 20171126--idleHadnler的理解使用

    相关参考文献: http://www.jianshu.com/p/94d6131a53b2 http://bbs.51cto.com/thread-1094228-1.html https://zhu ...

  3. include require include_once require_once

    include 使用方法: include "test.php"; 一般是放在流程控制的处理部分中使用,将文件内容引入.PHP程序在遇到include语句时,才将它读进来,这种方式 ...

  4. php email

    项目中用到了发邮件的功能.代码很简单,但是其中碰到了一些奇怪的问题. smtp error: could not authenticate 163 ======================== 新 ...

  5. glob

    主要是用来在匹配文件,相当shell中用通配符匹配. 用法: glob.glob(pathname) # 返回匹配的文件作为一个列表返回 glob.iglob(pathname) # 匹配到的文件名, ...

  6. hadoop 的HDFS 的 standby namenode无法启动事故处理

    standby namenode无法启动 现象:线上使用的2.5.0-cdh5.3.2版本Hadoop,开启了了NameNode HA,HA采用QJM方式.hadoop的集群的namenode的sta ...

  7. ionic3.x angular4.x ng4.x 自定义组件component双向绑定之自定义计数器

    本文主要示例在ionic3.x环境下实现一个自定义计数器,实现后最终效果如图: 1.使用命令创建一个component ionic g component CounterInput 类似的命令还有: ...

  8. [leetcode.com]算法题目 - Symmetric Tree

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  9. Linux系统磁盘与分区管理(7)

    Linux最传统的磁盘文件系统(filesystem)使用的是EXT4格式,所以要了解文件系统就得要由认识EXT4开始,而文件系统是创建在硬盘上面的,因此我们得了解硬盘的物理组成才行,下面我们回来详细 ...

  10. 拿 .properties 这种里面的数据 在不同的地方

    1 在xml中 2 在.java中 @Value("#{configProperties['key']}")    configProperties不是固定(根据配置时的id)  ...