复习java基础---初始化(完善)---11.05

1.用构造器确保初始化。

由于构造器的名称必须与类名完全相同,所以“每个方法的首字母小写”的编码风格不适用于构造器。而且我们又知道,构造器,分为有参构造和无参构造。

构造器没有返回值,这与返回值为void明显不同,构造器不会返回任何东西,尽管new表达式确实返回了对新建对象的引用,但构造器本身没有返回任何值。

用代码来了解一下吧;

2.方法重载、

简单点说,重载就是当我们想做一件事时,要想给他不同的条件,去执行不同的情况。比如呢,我让你写代码,这时我什么都没有给你,你想怎么写怎么写。然后呢,我对另一个人呢,他水平比较高,我想让他给我写出有用的代码,ok,我给他一个编辑器,eclipse,这时,我给他了编辑器。又来一个人,他水平和第二个人一样,但是他提出了要求,我不仅要编辑器,他还要一个分屏,ok,条件能给。用代码写出来是这样的。

 

每个重载的方法都有自己独一无二的参数类型列表,甚至参数顺序的不同也可以区分两个方法,不过一般没人这么做。

涉及基本类型的重载会怎么样呢?我们先来看一下代码

 

 

 

 

由于代码较长,分了四个图,可以从图中看出,常数5经常被当做int值处理,所以当有方法接受int参数时,就会被调用。如果传入的数据类型小于方法中声明的参数类型,实际数据类型就会被提升。char类型不同,如果没有找到接受char类型的方法,会被直接提升为int。但是当我们传入的参数类型大于重载方法声明的形式参数,该怎么办呢?来看下代码吧。

 

 

可以看到,只有进行窄化转换才能运行。

 

3、默认构造器

对于默认构造器,当你的类中没有定义构造器的话,编译器会帮你提供一个默认构造器。但是当你创建了有参构造,但是又没写无参构造时,去用new无参构造就是错的。来看代码

4.this关键字的用法。

this关键字只能在方法内部调用,表示对“调用方法的那个对象”的引用。

可以从输出的代码中可以看出,this和f的引用相同。同时,this关键字对于将当前对象传递给其他方法调用也很有用。

 

一样的结果。为了将自身传递给外部方法,Apple必须使用this关键字。

 

5、在构造器中调用构造器。

当我们在一个类中写了多个构造器,想在其中一个构造器中调用另一个构造器时,就会用到this方法,以避免重复代码。下面通过代码来看一下怎么使用的吧。

 

从图中可以看出,可以通过this来调用另一个构造器。并且,除了构造器之外的其它方法都不可以这么做。

 

代码解释了注释中的话,就是一个构造器只能调用一次构造器,并且,必须将调用置于方法的最起始处。

在this的最终提一次,static方法中不能使用this关键字(至于原因,之后会做出一个关于关键字详细解释)。

 

6.  成员初始化

在java中,所有变量在使用前都得到恰当的初始化,对于方法的局部变量,java以编译时错误的形式来提醒程序员进行初始化。对于类的数据成员来说,如果是基本数据类型,就会有初始值。

 

 

通过上面的输出结果可以看出每个成员变量都有初始值,对于对象成员变量时,没有初始化使用会默认为null。但是对于最后一个图片的局部变量,没初始化使用时不可行的。

7.指定初始化

在对某个变量进行初始化时,我们可以直接为其赋值,也可以调用方法为其赋值。example:

上面f,j 的初始化是通过调用方法来实现的初始化,但是有个限制是Dog的每个对象都有相同的初始值。

8.构造器初始化

可以使用构造器来进行初始化,在运行期间,可以调用方法或者执行某些动作来确定初值,但是无法阻止自动初始化的执行,在构造器调用前会执行一次自动初始化,因此编译器不会强制你在构造器之前对变量进行初始化。在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量散布于方法定义之间,仍会在任何方法被调用之前得到初始化。

 

可以从控制台看到,在构造方法调用之前,w1,w2,w3已经进行了初始化。

 

9.静态数据的初始化

无论创建多少个对象,静态数据只会占用一份存储区域,因此static关键字不能作用于局部变量,只能作用于成员变量。如果一个成员变量是静态的基本类型,且没有对它进行初始化,那马它就会获得基本数据类型的标准初值。如果是一个对象引用,那么默认初始值为null;

下面来了解一下静态存储区域是什么时候初始化的。

 

 

从输出结果来看,b1,b2,b4,b5只进行一次初始化,并且,可以看出在定义了b3之后才定义了b4,b5,但是先初始化了b4,b5。由此来看,静态对象只会在必要时刻进行初始化,并且只初始化一次。初始化的顺序是先静态对象,而后是非静态对象。

现在来看一下静态代码块。

 

 

当首次生成Cups的对象时候,或者首次访问属于Cups的静态数据时,会执行代码块进行初始化。

非静态代码块:

 

 

对于非静态代码块,每次调用构造器时都会执行一次初始化。

    中间一些原因,又中断了几天学习,继续

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值