您的位置 首页 java

【Thinking in Java】初始化

前言

随着计算机革命的发展,“ 不安全 ”的编程方式已逐渐成为编程代价高昂的主要原因之一。

初始化 ”与“ 清理 ”,对应一个对象的生命周期。C++中引入“ 构造器 ”的概念,在创建对象时被自动调用的特殊方法。 JAVA 中同样采用这种特殊方法,并自动提供了“垃圾回收器”。

1、用构造器确保初始化

Java中“初始化”的动作,是由 构造函数 来完成的,他不会返回任何值,区别于返回 void 。构造函数的名字与类名完全相同,分为无参构造函数(通常叫做 默认构造函数 ),有参构造函数。那么他是如何调用的呢?在new一个对象时,将会为对象分配存储空间,并调用相应的构造器。相当于Java在你创建对象时,帮助你自动调用了一个类似initialize的方法对对象进行初始化。确保在操作对象前,它已经被恰当的初始化了。

2、 方法重载

在Java中,构造器是强制重载方法名的另一个原因。创建一个对象时,若想以不同的方法初始化,无参或者有参,那么这里就涉及到了 方法重载 。尽管方法重载是构造器所必需的,他也可以应用于其他方法。尽管方法重载具有相同的名字,但是在每个重载的方法中都有一个独一无二的参数类型列表(甚至参数类型顺序不同依然可以区分方法,但不建议这么做)。值得注意的是,根据返回方法区分方法重载是行不通的。下面一个很容易出错的两个场景:

两个方法重载,参数类型分别为int,double。传入的实参类型若有对应的 形参 类型时,会被正常调用。但是下面两种情况呢?

(1)当传入实参类型小于声明中的形参类型时:实际数据类型会被自动提升。

(2)当传入实参类型大于声明中的形参类型时:需要将类型进行转换,否则会报错。

3、默认构造函数

何为默认构造函数在前面已经说明,这里不再重复。值得注意一个问题,当类中并没有构造器时,编译器会自动帮你创建一个默认构造函数。但是当你已经定义了一个构造器(无论是否有参),编译器则不会帮助你自动创建默认构造函数。

4、this关键字

三个用法:

(1)表示对“调用方法的那个对象”的引用

(2)将当前操作对象传递给其他方法,放到方法的参数位置,例如:

class Apple{

Apple getPeeled(){ return Peeler.peel(this); }

}//削平果的动作

(3)用于在构造器中调用构造器,这种情况this是可以带参数的;值得注意的有几点(1)不能在非 构造方法 中是this(args)的方式调用构造函数(2)在一个构造函数中使用this,只能调用一个构造函数,一个以上会报错。

5、 static 关键字

static 静态方法 就是没有this的方法,某种意义上具有全局函数的语义,可以在没有创建任何对象的情况下,仅仅通过类本身来调用静态方法,所以他并不是“向对象发送消息”的方式来完成。static使用虽然可以避免内存分配开销,但是,static修饰后在第一次加载分配内存(方法区)后,并不会释放内存,知道程序结束。所以要避免出现大量static。

先就这些,明天再写喽

文章来源:智云一二三科技

文章标题:【Thinking in Java】初始化

文章地址:https://www.zhihuclub.com/195767.shtml

关于作者: 智云科技

热门文章

网站地图