百无聊赖之JavaEE从入门到放弃(五)this的本质_对象创建过程的4 步_隐式参数 static
目录
一.this关键字
1.对象创建的过程和this的本质
2.this最常的用法:
二.static关键字
三.变量分类
一.this关键字
1.对象创建的过程和this的本质
构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建。
创建一个对象 分为如下四步:
1.分配对象空间,并将对象成员变量初始化为0或空
2.执行属性值的显式初始化(int id)
3.执行构造方法
4.返回对象的地址给相关的变量
this的本质就是“创建好的对象的地址”!由于在构造方法调用前, 对象已经创建。
因此,在构造方法中也可以使用this代表“当前对象”。
2.this最常的用法:
在程序中产生二 义性之处, 应使用this 来指明当前对象;普通方法中,this 总是指向调用该方法的对象。构造方法中,this 总是指向正要初始化的对象。
使用 this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
this 不能用于static方法中。
public class User {int id;//用户名String name;//账户名String pwd;//密码public User(int id,String name){this.id=id; //用this来避免歧义this.name=name;}public User(int id, String name, String pwd) {//this可以调用其他构造器,且必须位于第一位this(id,name); //相当于调用了上面的构造函数this.pwd = pwd;}public void login(){System.out.println("登陆了:"+this.name); //快捷键sout}public static void main(String[] args) { //快捷键psvmUser u1=new User(100,"hh");u1.login();}
}
二.static关键字
在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。
它有如下特点:
为该类的公用变量, 属于类,被该类的所有实例共享,在类被载入时被显式初始化。
对于该类的所有对象来说, static 成员变量只有一份。被该类的所有对象共享! !
一般用"类名类属性/方法”来调用。 (也可以通过对象引用或类名(不需要实例化)访问静态成员。)
在static方法中不可直接访问非static的成员。
public class User {int id;//用户名String name;//账户名String pwd;//密码static String affection="爱情好苦";public User(int id,String name){this.id=id; //用this来避免歧义this.name=name;}public User(int id, String name, String pwd) {//this可以调用其他构造器,且必须位于第一位this(id,name); //相当于调用了上面的构造函数this.pwd = pwd;}public void login(){System.out.println("登陆了:"+this.name); //快捷键sout}public static void printCompany(){//login();调用非静态成员,编译就会报错System.out.println(affection);}public static void main(String[] args) { //快捷键psvmUser u1=new User(100,"hh");User.printCompany();User.affection="我选择放弃";User.printCompany();}static{System.out.println("类的静态初始化");affection="test";}
}
输出:
类的静态初始化
test
我选择放弃
三.变量分类
百无聊赖之JavaEE从入门到放弃(五)this的本质_对象创建过程的4 步_隐式参数 static相关推荐
- 百无聊赖之JavaEE从入门到放弃(二)基础语法
目录 一.注释(单行,多行,文档) 二.标识符_关键字_驼峰原则 三.bug解决:Welcome.java:6: 错误: 编码GBK的不可映射字符 四.常量constant 五.数据类型 1.整型 2 ...
- 百无聊赖之JavaEE从入门到放弃(七)继承
目录 一.继承 1.继承使用要点 二.instanceof关键字 三.方法的重写(override) 四.final关键字 五.组合 定义啥的就不说了,说说要点,跑跑代码. 一.继承 1.继承使用要点 ...
- 百无聊赖之JavaEE从入门到放弃(三)JVM内存机制
一.从属于线程的内存区域 JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;我们将这部分归为一类. 1.程序计数器(Program Counter Register) 在JVM规 ...
- 百无聊赖之JavaEE从入门到放弃(四)垃圾回收机制(Garbage Collection)
目录 一.垃圾回收原理和算法 1.内存管理 2.垃圾回收过程 3.垃圾回收相关算法 二.通用的分代垃圾回收机制 1.年轻代 2.年老代 3.永久代 4.三种GC 三. JVM调优和Full GC 四. ...
- 百无聊赖之JavaEE从入门到放弃(十二)数组
目录 一.基础知识 1.数组的定义 2.建议 3.注意 4.数组的默认初始化 二.基操示例代码 三.拷贝 四.Arrays类 一.基础知识 1.数组的定义 数组是相同类型数据的有序集合.数组描述的是相 ...
- 百无聊赖之JavaEE从入门到放弃(六)包机制 静态导入
一.包机制 包机制是Java中管理类的重要手段.开发中, 我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理. 包对于类,相当于文件夹对于文件的作用. 我们通过pac ...
- 百无聊赖之JavaEE从入门到放弃(九)封装详解 多态详解
目录 一.封装 1.封装的作用和含义 2.编程中封装的具体优点: 3.封装的实现一使用访问控制符 4.关于protected的两个细节: 5.开发中封装的简单规则 6.javaBean 二.多态(po ...
- 百无聊赖之JavaEE从入门到放弃(十)抽象方法_抽象类 接口
目录 一.abstract 1.抽象方法 2.抽象类 3.抽象类的使用要点 4.示例代码 二.接口 1.接口是什么 2.接口的作用 3.区别 4.格式 (1)声明格式: (2)定义接口的详细说明 (3 ...
- 百无聊赖之JavaEE从入门到放弃(十一)string类 常量池原理 内部类
目录 一.String类和常量池 1.String基础知识 2.常量池 二.内部类 1.概念 2.内部类的作用 3.注意 4.非静态内部类 5.静态内部类 6.匿名内部类 7.局部内部类 一.Stri ...
最新文章
- 创建健壮的isArray()函数(JavaScript中判断对象类型的种种方法)
- idea2019中文版
- 96. (GO)不同的二叉搜索树
- linux shell 时间运算以及时间差计算方法
- AAAI 2021中的目标检测(详细版with code)
- ORA-28002:密码过期时的处理…………
- LNMP环境部署----之Mysql安装部署
- CLP 中关闭自动落实的问题
- undefined和null区别
- Winform UI界面设计例程——侧边框栏折叠
- 【SIGGRAPH】用【有说服力的照片真实】技术实现最终幻想15的视觉特效
- Linux-vi/vim常用命令手册
- 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
- 【微信小程序】上传文件到阿里云OSS
- keras的简单介绍
- python函数关键字参数传递_Python给函数传递不定关键字的参数
- 中国互联网Web2.0百强企业
- c++|纯虚函数之再谈星际争霸
- LeetCode: 868. Transpose Matrix
- 2^29哪个数字没有出现?
热门文章
- python能画k线图吗_k线图怎么画?_Python绘制K线图
- 硬盘分区工具EASEUS Partition Master Home Edition 8.0.1
- 励志!打过杂、送过外卖,他逆袭为昇思MindSpore优秀布道师!
- Linux查看机器CPU、内存使用情况,硬盘大小
- 日语日常用语100句
- cyq.data 连接mysql_CYQ.Data V5 从入门到放弃ORM系列
- CH1-语言模型和解码算法
- 如何设置Pages文稿背景颜色及背景图片?
- dcs程序流程图分析_常见DCS工艺流程图识别教你正确读图
- 极速办公软件怎么给PPT添加页脚呢