Java学习记录01
2016-12-13 00:54
225 查看
构造代码块
一个class里面出现一个大括号里面包含一些代码的东西,我们称之为构造代码块 , 构造代码块是先于构造函数执行的,用来初始化对象共有的内容。而构造函数是用来给相应的对象初始化的。
class Person{ private int age; private String name; //构造代码块,每一个人对象建立的时候都是哭着来到人间的 { System.out.println("crying..."); } //构造函数 Person(){} Person(int age, String name){ this.age = age; this.name = name; } } public class PersonDemo{ public static void main(String[] args){ Person wangwu = new Person(); Person lisi = new Person(20, lisi); } }
main函数执行完之后,控制台打印两句crying…,原因就是因为构造代码块 是用来给对象共性初始化的,而构造代码块 是给对应的对象初始化的(上面例子中wangwu
和lisi
用的构造函数是不相同的,各自有自己对应的构造函数
this关键字的用法
为了防止局部变量和成员变量赋值的时候,同名引起的局部变量将成员变量覆盖掉的。引入了this关键字class Person{ private int age; Person(int age){ /* age = age; 这样子编译运行时没问题的,但是结果不是我们想要的结果,这里就发生了我们所说的局部变量(参数中的age)将成员变量(private int age)给覆盖了,说的通俗点就是编译器采取的原则就是“自己家里有(局部变量)就用自己家(局部)里面的,没有了就去外边(这里指的就是它自己所属类里面)找。如果还是找不到就会报错*/ //为了避免这种尴尬,有让程序有可读性就有了下面这种写法 this.age = age; } }
this后面直接接一对括号,我们称之为this语句,只用于构造函数之间的相互调用,并且只允许放在第一行使用
class Person{ private int age; private String name; Person(int age){ this.age = age; } Person(int age, String name){ this(age); this.name = name; } }
这里的this(age)
就相当于调用了Person(int age){}
.放在第一行的原因就是应该想让人家之前的所有初始化结束了,在执行最新的初始化操作,这样子就不会最新的操作被原来的初始化覆盖(如果Person后面还有一句this.name = "hahahahah"
,这样子如果this语句放在了this.name = name
, 后面就会发生最后name的值时”hahahahah”)。
所以记住这个原则,this 语句出现在构造函数之间相互调用,但是出现的位置必须时第一行
相关文章推荐
- 学习记录--Beetl2.4 Java新一代的模板引擎【01】
- Java加密与解密学习记录01-加密分类
- 黑马程序员_学习记录01:Hello Java
- 深入I/O学习记录-01java I/O工作机制
- Java基础学习之感悟01
- 2009-03-10学习记录:NetBeans+Wicket开发JavaWeb应用程序
- Java学习日志01
- Java学习日志01
- 用java连接数据库的学习记录
- java集合实现--01 --源代码学习--创建集合对象
- Java基础学习(01学习方法与学习心态)
- java学习记录20061008
- JAVA 学习记录
- 学习记录——【转】java中打开explorer
- 【JAVA学习笔记】01 标志符号、关键字、类型
- Java基本数据类型的学习记录
- Java集合框架学习记录
- 终于在csdn上安家了!这个博客将作为我学习java历程,记录我心得的一个地方
- Java语言介绍(04)开源项目(11)其它(01)学习
- 类与对象01_旺旺老师Java学习解决方案_第一季