百无聊赖之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 ...
最新文章
- Zend framework重定向的方法
- SQL Server 2000查询n到m条记录
- 划重点!通俗解释协方差与相关系数
- 来自ERP的product属性修改
- 笨方法“学习python笔记之random
- java consul服务发现_分布式项目(七)consul 服务注册与发现
- 【TensorFlow】Win10+TensorFlow+Anaconda+CUDA+cuDNN
- eclipse显示包名的方式
- Web App 前端构建(纯净版)
- 文件夹病毒残余文件的解决办法
- 二维非对心弹性碰撞的算法
- 鼠标失灵c语言代码,[转载]键盘和鼠标操作失灵代码
- longitudinal models | 纵向研究 | mixed model
- KVM中给windows虚拟机安装virtio驱动
- 第四届中国(广东)国际“互联网+”博览会今日在佛山开幕 聚集工业“智慧”推动产业加速转型...
- 高通AR加视屏解决方案
- 以太坊Geth 共识算法源码解析
- PIM SM模式下BSR与RP选举机制
- Android动态换肤实现原理解析,原理+实战+视频+源码
- 网络_04 访问控制