构造方法中 属性与变量名重名 必须使用一个代替词 代替对象 即this关键字
    this关键字的使用
    是一个关键字 代替的是某一个对象 (当前调用属性或方法时的那个对象)

    this既然代替的是一个对象 this可以调用什么?—-调用属性 方法

    this可以调用构造方法吗?
    要想调用构造方法 只能在另一个构造方法内调用构造方法
    通过this();来调用 省略了构造方法的名字
    且必须在构造方法程序的第一行
    构造方法不能来回之间相互调用(编译就不行)

    方法之间能否互相调用?
    在写法上可以(编译好用) 执行时会产生错误StackOverflowError 栈溢出错误(方法执行时在栈内存中开辟临时执行空间)

    this调用的过程可以放置在哪个位置写?
    调用一般属性或一般方法这行代码 可以放在类中的任何成员位置(属性、方法、构造方法、块)中 上下位置随意

    1. public class Person1 {
    2. public String name;
    3. public int age;
    4. public String sex;
    5. public Person1(String name,int age,String sex){
    6. //若不定义构造方法 系统有默认提供无参数的构造方法
    7. //构造方法可以在创建对象的同时实现某些事情
    8. this();//调用构造方法this.Person1();省略了构造方法名 且只能放在第一行
    9. this.name = name;
    10. this.age = age;
    11. this.sex = sex;
    12. //若属性与对象同名 可以使用this关键字
    13. }
    14. //若要自己定义带参数的构造方法
    15. //可以将系统提供的默认的无参数构造方法也一起写出来 构成构造方法重载
    16. public Person1(){}
    17. {
    18. System.out.println("我是一个程序块");
    19. //每调用一次构造方法就执行一次程序块
    20. //可以有多个程序块
    21. }
    22. public void eat(){
    23. this.sleep();
    24. System.out.println("吃饭");
    25. }
    26. public void sleep(){
    27. this.eat();//方法之间来回调用会产生栈溢出错误
    28. System.out.println("睡觉");
    29. }
    30. public static void main(String[] args){
    31. Person1 p1 = new Person1();//调用Person1类中的构造方法
    32. //构造方法结构上没有返回值类型 但是有返回值 即对象
    33. p1.eat();
    34. }
    35. }