FaceToJava直白讲解:

本文详细讲解了Java编程中的类、构造方法、this关键字、局部变量和成员变量等核心概念。通过实例解析了构造代码块和局部代码块的执行顺序,以及浅层复制和垃圾处理器的工作原理。此外,还探讨了链式编程在Java中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

类:

构造方法:

this关键字

局部变量和成员变量:

构造代码块 局部代码块:

总共的执行顺序:

浅层复制:

垃圾处理器:

首先明确:

链式编程:


类:

用来描述一个类型事物的特征,里面有属性和方法
属性:类的特性,定义变量,比如String name,int age
方法:类的行为,定义方法,比如public void sleep(){ }
一般定义属性时不赋值,只定义就行

构造方法:

对于类的属性的初始化,可以给属性赋值,没有返回值类型
即 public people(){}  而不是public void people(){}或者public int people(){} 
name = "陈独秀";age=10086;
构造方法本质是一个方法,可以传参也可以不传参,可以重载

对于私有的方法,外界想要调用,就生成个新的公开的方法,调用这个方法
比如 private 的方法eat,想在main里调用,正常调用不出来,报错
但是可以写一个 eat2 ,方法里{ eat();}
这样调用eat2的时候就会去执行一下eat,单独调用eat又调用不出来
eat2就是个第三方,接口,工具人,保护了eat

对于私有的属性,外界想要调用,就要用到get set方法
get方法是帮助获取这个私有的属性,set方法是为了设置这个私有属性
比如:初始定义String name,调用输出name是 默认值null
            在构造方法中赋值"陈独秀",调用输出name是 陈独秀
            经历get set重新赋值"李大钊",调用输出name是 李大钊
一般set方法是void,那么调用时,对外输出的是这个方法
一般get方法是对应的数据类型,调用时,对外输出的是返回值
链式的set方法是对应数据类型,调用时,对外输出的是返回值
浅显理解:如果对外输出的是方法,那就是执行方法的代码块
                    不能放在输出语句,不能.出东西来
                    如果对外输出的是返回值,执行完方法代码后返回值
                    可以放在输出语句里,能.出东西来

this关键字

代表的就是对象名,代表这个对象专有的
比如对象名是cat,调用cat的name属性
在cat类里是this.name,对应main方法cat.name
每次创建对象调用这个方法,this就代表当前这个对象
this()或this(参数)可以在构造方法中使用,必须放在第一行,且两个构造方法之间不能相互调用

局部变量和成员变量:

比如在类里定义了私有的String name,为了让外界能调用私有name,得用get set
利用get方法获取信息,利用set方法设置信息,得到this.name=name
这时name是成员变量,所用域是整个class,this.name就是当前对象的name
但在方法中又String name,这时的name是局部变量,只在方法中有效
想要用对象属性,就得用this.name
浅显理解:定义一个类,String name,在构造方法中设置名字是"张三"
                    在类中定义方法kill,也有个String name,设置名字是"李四"
                    想要表达张三杀李四,需要在kill方法输出语句中同时用上两个人的名字
                    表达为:System.out.println(this.name+"杀死了"+name);
                    this.name是类的主人张三,name是方法的主人李四
                    如果只写:System.out.println(name+"杀死了"+name);
                    这时两个name都是李四,是不能指代两个不同的人的
                    在kill方法中 name是指李四,this.name是指张三
                    在kill方法外class内,name和this.name都是张三
                    因为超过李四的管辖范围了

构造代码块 局部代码块:

构造代码块是写在类里面的,比如一个类写了三个构造方法
第一个构造方法输出:冯老师  睡觉 
第二个构造方法输出:冯老师  吃饭 
第三个构造方法输出:冯老师  上课
这样冯老师这句就是重复的,可以写进构造代码块
{  System.out.println("冯老师");  } 
每次调用这个类,都会执行构造方法,再执行普通方法
如果有构造代码块,就是:构造代码块,构造方法,普通方法
局部代码块是写在普通方法里的,构造方法没有返回值类型,普通方法有
也是{ }里写东西,在调用普通方法时,就按照顺序执行,从上到下

总共的执行顺序:

创建对象: Car  c1;
指向地址:c1=new Car(); 
其实也就是  Car  c1=new Car(); 
然后:构造代码块-->构造代码,相当于给他初始化
最后:按照从上到下顺序,调用啥执行啥,不调用的不执行

浅层复制:

生成对象: Car  c1=new Car();   这个c1就生成了自己的地址
但是如果是:Car c2; 就只创建了对象,没有开辟地址
如果把:c2 = c1; 就是把c2指向了c1的地址,住进他家占他地址
c1  ---> 地址 <-----c2    如果c2里有东西改变了,就改变了地址里东西,c1也会变

垃圾处理器:

再生成对象 Car  c3=new Car(); 生成了c3,有自己的地址
重新赋值:c3=null 给c3赋值为null,地址没了,地址就被放进垃圾处理器了


首先明确:

如果这个方法没有返回值,那么调用方法就只是方法体本身,执行完就完事
如果这个方法有返回值,那么调用方法执行完方法体本身后,还能返回一个东西,就看return后边写啥
无论是否有返回值,无论调用还是赋值,只要出现这个方法,就一定把方法中所有东西执行一遍
比如一个计算加和的方法     sum
第一个有void,{  输出语句:输出a+b}
第二个是int类型,{  输出语句:输出a+b ,return a+b }
第一个方法,就是执行输出语句,调用sum(),就执行输出语句,输出结果是:输出a+b
第二个方法调用,也是执行输出语句,但因为返回了一个值,所以只能放在输出语句里
System.out.println( sum() );先执行本身方法,在输出返回值,输出结果是:输出a+b a+b

链式编程:

和正常写代码是一样的,只不过改变了一点点东西让代码好看点
正常写get和set代码是:

public String getName() {
        return name;
}
public void setName(String name) {
        this.name = name;
}


就是:get的有返回值,set的没有返回值
get是获取,获取到变量值并且返回,这样调用get方法就能得到一个数,放进输出语句里
set是设置,设置传递参数并且把这个参数赋值给this.name,执行方法没有返回值,就运行一遍
设置参数就是

 dog.setName("雪球 ");
 dog.setColor("white ");


总之就是一句一换行写,不咋好看
但是!链式编程:

public String getName() {
        return name;
    }
public Dog setName(String name) {
        this.name = name;
        return this;
}


get的不变,set的变成了有返回值,void ->数据类型返回的是对象,也就是类名Dog
这样调用set方法,执行完代码之后返回了 this,this又可以.出东西来,就可以写一串

dog.setName("雪球 ").setColor("white ").setAge(2); 
相当于 this         .       this       .   this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值