龙海市城乡建设局网站,河北建设工程信息网官网 费用中项网,临沂定制网站建设公司,网站建设公司加优化目录
1、this引用
1.1、为什么要有this引用
1.2、什么是this引用
1.3、 this引用的特性
2、 对象的构造及初始化
2.1、 如何初始化对象
2.2、构造方法
2.2.1、概念 2.2.2、特性 2.3、默认初始化 2.4、就地初始化 上篇#xff1a;【JavaSE】基础笔记 - 类和对象#… 目录
1、this引用
1.1、为什么要有this引用
1.2、什么是this引用
1.3、 this引用的特性
2、 对象的构造及初始化
2.1、 如何初始化对象
2.2、构造方法
2.2.1、概念 2.2.2、特性 2.3、默认初始化 2.4、就地初始化 上篇【JavaSE】基础笔记 - 类和对象上-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/134232584?spm1001.2014.3001.5501
接上篇继续对类和对象的知识展开讲述。
1、this引用
1.1、为什么要有this引用 先看一个日期类的例子 public class Date {public int year;public int month;public int day;public void setDay(int y, int m, int d){year y;month m;day d;}public void printDate(){System.out.println(year / month / day);}public static void main(String[] args) {// 构造三个日期类型的对象 d1 d2 d3Date d1 new Date();Date d2 new Date();Date d3 new Date();// 对d1d2d3的日期设置d1.setDay(2020,9,15);d2.setDay(2020,9,16);d3.setDay(2020,9,17);// 打印日期中的内容d1.printDate();d2.printDate();d3.printDate();}} 以上代码定义了一个日期类然后main方法中创建了三个对象并通过Date类中的成员方法对对象进行设置和打印代码整体逻辑非常简单没有任何问题。 但是细思之下有以下两个疑问 1、形参名不小心与成员变量名相同 public void setDay(int year, int month, int day){year year;month month;day day;} 那函数体中到底是谁给谁赋值成员变量给成员变量参数给参数参数给成员变量成员变量参数估计自己都搞不清楚了。 再说了每次都需要起不同的变量名非常不方便有没有一种办法可以允许我们直接使用相同的变量名省去繁琐的起名环节 2、 三个对象都在调用setDate和printDate函数但是这两个函数中没有任何有关对象的说明setDate和printDate函数如何知道打印的是哪个对象的数据呢 一切让 this 引用来揭开这层神秘的面纱。 1.2、什么是this引用 this引用指向当前对象(成员方法运行时调用该成员方法的对象)在成员方法中所有成员变量的操作都是通过该引用去访问。只不过所有的操作对用户是透明的即用户不需要来传递编译器自动完成。 public class Date {public int year;public int month;public int day;public void setDay(int year, int month, int day){this.year year;this.month month;this.day day;}public void printDate(){System.out.println(this.year / this.month / this.day);}} 注意this引用的是调用成员方法的对象。例如当调用a.setDay()是此时的this就代指a如下图。同理b也一样。 1.3、 this引用的特性 this的类型对应类类型引用即哪个对象调用就是哪个对象的引用类型this只能在成员方法中使用在成员方法中this只能引用当前对象不能再引用其他对象this是“成员方法”第一个隐藏的参数编译器会自动传递在成员方法执行时编译器会负责将调用成员方法对象的引用传递给该成员方法this负责来接收。 在代码层面来简单演示一下隐藏参数this注意下图右侧中的Date类也是可以通过编译的 2、 对象的构造及初始化
2.1、 如何初始化对象 通过前面知识点的学习知道在Java方法内部定义一个局部变量时必须要初始化否则会编译失败。 public static void main(String[] args) {int a;System.out.println(a);}
// Error:(26, 28) java: 可能尚未初始化变量a 要让上述代码通过编译非常简单只需在正式使用a之前给a设置一个初始值即可。如果是对象 public static void main(String[] args) {Date d new Date();d.printDate();d.setDate(2021,6,9);d.printDate();}
// 代码可以正常通过编译 需要调用之前写的SetDate方法才可以将具体的日期设置到对象中。通过上述例子发现两个问题 每次对象创建好后调用SetDate方法设置具体日期比较麻烦那对象该如何初始化局部变量必须要初始化才能使用为什么字段声明之后没有给值依然可以使用 2.2、构造方法
2.2.1、概念 构造方法(也称为构造器)是一个特殊的成员方法名字必须与类名相同在创建对象时由编译器自动调用并且在整个对象的生命周期内只调用一次。 public class Date {public int year;public int month;public int day;// 构造方法
// 名字与类名相同没有返回值类型设置为void也不行
// 一般情况下使用public修饰
// 在创建对象时由编译器自动调用并且在对象的生命周期内只调用一次public Date(int year, int month, int day){this.year year;this.month month;this.day day;System.out.println(Date(int,int,int)方法被调用了);}public void printDate(){System.out.println(year - month - day);}public static void main(String[] args) {
// 此处创建了一个Date类型的对象并没有显式调用构造方法Date d new Date(2021,6,9); // 输出Date(int,int,int)方法被调用了d.printDate(); // 2021-6-9}
} 注意构造方法的作用就是对对象中的成员进行初始化并不负责给对象开辟空间。 2.2.2、特性 名字必须与类名相同没有返回值类型设置为void也不行创建对象时由编译器自动调用并且在对象的生命周期内只调用一次(相当于人的出生每个人只能出生一次) 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法) public class Date {public int year;public int month;public int day;// 无参构造方法public Date(){this.year 1900;this.month 1;this.day 1;}// 带有三个参数的构造方法public Date(int year, int month, int day) {this.year year;this.month month;this.day day;}public void printDate(){System.out.println(year - month - day);}public static void main(String[] args) {Date d new Date();d.printDate();}
} 上述两个构造方法名字相同参数列表不同因此构成了方法重载。 5、如果用户没有显式定义编译器会生成一份默认的构造方法生成的默认构造方法一定是无参的。 public class Date {public int year;public int month;public int day;public void printDate(){System.out.println(year - month - day);}public static void main(String[] args) {Date d new Date();d.printDate();}
} 注意一旦用户定义编译器则不再生成。 2.3、默认初始化 在上文中提出的第二个问题为什么局部变量在使用时必须要初始化而成员变量可以不用呢 要搞清楚这个过程就需要知道 new 关键字背后所发生的一些事情 Snake si new Snake(); 在程序层面只是简单的一条语句在JVM层面需要做好多事情下面简单介绍下 检测对象对应的类是否加载了如果没有加载则加载为对象分配内存空间处理并发安全问题比如多个线程同时申请对象JVM要保证给对象分配的空间不冲突初始化所分配的空间即对象空间被申请好之后对象中包含的成员已经设置好了初始值比如 设置对象头信息调用构造方法给对象中各个成员赋值 2.4、就地初始化 在声明成员变量时就直接给出了初始值。 public class Date {public int year 1900;public int month 1;public int day 1;public Date(){}public Date(int year, int month, int day) {this.year year;this.month month;this.day day;}public static void main(String[] args) {Date d1 new Date(2021,6,9);Date d2 new Date();}
} 博主推荐 【LeetCode力扣】42. 接雨水-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/134104222?spm1001.2014.3001.5502
【LeetCode力扣】189 53 轮转数组 | 最大子数组和-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/134095703?spm1001.2014.3001.5502
如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力
如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力
如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力 文章转载自: http://www.morning.lmjkn.cn.gov.cn.lmjkn.cn http://www.morning.zsgbt.cn.gov.cn.zsgbt.cn http://www.morning.knlbg.cn.gov.cn.knlbg.cn http://www.morning.jfqpc.cn.gov.cn.jfqpc.cn http://www.morning.btns.cn.gov.cn.btns.cn http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn http://www.morning.ryrpq.cn.gov.cn.ryrpq.cn http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.gdgylp.com.gov.cn.gdgylp.com http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.lynmt.cn.gov.cn.lynmt.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.xnbd.cn.gov.cn.xnbd.cn http://www.morning.wjmb.cn.gov.cn.wjmb.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.qjngk.cn.gov.cn.qjngk.cn http://www.morning.rnwmp.cn.gov.cn.rnwmp.cn http://www.morning.plxnn.cn.gov.cn.plxnn.cn http://www.morning.rykmf.cn.gov.cn.rykmf.cn http://www.morning.fwqgy.cn.gov.cn.fwqgy.cn http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn http://www.morning.mcpby.cn.gov.cn.mcpby.cn http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn http://www.morning.clnmf.cn.gov.cn.clnmf.cn http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn http://www.morning.wdhhz.cn.gov.cn.wdhhz.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.qgdsd.cn.gov.cn.qgdsd.cn http://www.morning.sjwws.cn.gov.cn.sjwws.cn http://www.morning.ykgp.cn.gov.cn.ykgp.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.rlqwz.cn.gov.cn.rlqwz.cn http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn http://www.morning.skrrq.cn.gov.cn.skrrq.cn http://www.morning.zzjpy.cn.gov.cn.zzjpy.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.mlfgx.cn.gov.cn.mlfgx.cn http://www.morning.grynb.cn.gov.cn.grynb.cn http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn http://www.morning.hmpxn.cn.gov.cn.hmpxn.cn http://www.morning.hclqy.cn.gov.cn.hclqy.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.plhhd.cn.gov.cn.plhhd.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.rdng.cn.gov.cn.rdng.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.lctrz.cn.gov.cn.lctrz.cn http://www.morning.wrqw.cn.gov.cn.wrqw.cn http://www.morning.pabxcp.com.gov.cn.pabxcp.com http://www.morning.sdecsd.cn.gov.cn.sdecsd.cn http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn http://www.morning.tmcmj.cn.gov.cn.tmcmj.cn http://www.morning.ccdyc.cn.gov.cn.ccdyc.cn http://www.morning.kfwqd.cn.gov.cn.kfwqd.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn http://www.morning.bydpr.cn.gov.cn.bydpr.cn http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn http://www.morning.nydtt.cn.gov.cn.nydtt.cn http://www.morning.kghss.cn.gov.cn.kghss.cn http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.spsqr.cn.gov.cn.spsqr.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn http://www.morning.ngcw.cn.gov.cn.ngcw.cn http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.chzbq.cn.gov.cn.chzbq.cn http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn http://www.morning.npxht.cn.gov.cn.npxht.cn