Java基础学习:8、构造器(构造方法)和this
一、构造器:
1、定义:构造器是类的特殊方法,它的主要作用是完成对象的初始化。
即在创建对象时初始化对象。
本质是方法。
2、特点:
a、方法名和类名一致。
b、无返回值。
c、构造器的调用由系统完成。
d、构造器修饰符可以默认也可以指定。
3、基本语法:
public class Overload {
public static void main(String[] args) {
Person person = new Person("张三", 20);
System.out.println(person.name);
System.out.println(person.age);
}
}
class Person {
String name;
int age;
/*
1、构造器无返回值,也不能写void。
2、构造器名称和类名一样。
3、(String pName, int pAge)形参列表。
* */
public Person(String pName, int pAge) {
name = pName;
age = pAge;
}
}
4、注意事项:
a、一个类可以定义多个不同构造器,即构造器重载。构造器本质是方法,可以进行重载。
public class Overload {
public static void main(String[] args) {
Person person = new Person("张三", 20);
Person person2= new Person("张三");
}
}
class Person {
String name;
int age;
public Person(String pName, int pAge) {
name = pName;
age = pAge;
}
public Person(String pName) {
name = pName;
}
}
b、构造器是完成对象的初始化,而不是创建对象。
c、如果没有定义构造器,系统默认生成一个无参构造器。
public class Overload {
public static void main(String[] args) {
Person person = new Person();
}
}
class Person {
String name;
int age;
}
d、一旦定义了构造器,默认构造器就被覆盖了,就不能再使用了,除非自己显示的定义一下。
如何显示定义:
修饰符 类名() {};
对象创建流程内存图:

具体实现步骤:
1、加载person类信息(Person.class),只会加载一次。
2、在堆中分配空间(地址)。
3、完成对象的初始化:
a、默认初始化:age=0 name=null
b、显示初始化:age = 90 name = null
c、构造器初始化:age=20 name=小倩
4、把对象在堆中的地址返回给栈中的 p (p是对象名,也可以理解为对象的应用)。真正的对象实在堆中new出来的那个。
二、this:
1、定义:
每一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this,
this代表的就是当前对象。
简单的说:哪个对象调用,this就代表哪个对象。

2、注意细节:
a、this关键字可以用来访问本类的属性、方法、构造器。
b、this用于区分当前类的属性和局部变量。
c、在本类方法中访问另外方法:this.方法名(参数列表)。this写在第一行。
class Person {
public int sum(int n1, int n2) {
this.cla(12,22);
return n1 + n2;
}
public int cla(int a1, int a2) {
this.sum(12, 22);
return a1 - a2;
}
}
d、在构造器中访问另一个构造器:this(参数列表)。this要放在第一条语句,只能在构造器中访问另一个构造器。
class Person {
String name;
int age;
public Person(String pName, int pAge) {
this("jack");
name = pName;
age = pAge;
}
public Person(String pName) {
name = pName;
}
}
e、this不能在类定义的外部使用,只能在类定义的方法中使用。
f、this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关 联,而不和类关联,同一个类的不同对象有不同的this。
’
Java基础学习:8、构造器(构造方法)和this的更多相关文章
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- [转帖]java基础学习总结——多态(动态绑定)
https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态
- Java基础学习(2)
Java基础学习(二) 面向对象 对象:客观存在的事物 面向对象:人具体关注的事物的某些信息 类:是模子,确定对象会拥有的特征(属性)和行为(方法) 对象的属性:对象具有的各种特征 对象的方法:对象能 ...
- java基础学习笔记五(抽象类)
java基础学习总结——抽象类 抽象类介绍
- java基础篇 之 构造器内部的多态行为
java基础篇 之 构造器内部的多态行为 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- java基础学习总结——开篇
java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...
随机推荐
- 【unity】EventSystem.current.IsPointerOverGameObject()报空指针错误的解决
我前几天遇见了EventSystem.current.IsPointerOverGameObject()这么个问题,只要我一触发就给我报空指针!!我那时根本就没动这段码,但就是报错!!!卡了老子十小时 ...
- 二分查找 & 移除元素
一.二分查找 704.二分查找 leetcode链接 1.二分查找方法概述 二分查找是针对有序数组的一种查找方式.是利用(letf+right)/2 = mid的方式来对半缩短搜索范围的一种方法,一次 ...
- echarts入门到应用学习笔记
背景: 做疫情数据管理可视化,需要用到热点图在web端进行数据可视化,而地图就是必不可少的一个,看完文档,可以解决大部分小白的问题,保姆级攻略,即使你的js,这些学得不咋样(我就是小菜鸟) 步骤 环境 ...
- Jetpack Compose学习(10)——使用Compose物料清单BOM,更好管理依赖版本
原文地址:Jetpack Compose学习(10)--使用Compose物料清单BOM,更好管理依赖版本 - Stars-One的杂货小窝 本期讲解下关于Android推出的BOM来简化我们添加co ...
- IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
上一篇文章 IoT 边缘集群基于 Kubernetes Events 的告警通知实现 目标 告警恢复通知 - 经过评估无法实现 原因: 告警和恢复是单独完全不相关的事件, 告警是 Warning 级别 ...
- el-transfer 数据量过大加载慢卡顿解决办法:el-transfer虚拟滚动懒加载的实现
参考链接 1)https://github.com/GreenHandLittleWhite/blog/issues/152)https://github.com/GreenHandLittleWhi ...
- CSS常用属性(2)
(4) position(定位) fixed 一般用来写网页顶端的固定导航条,或者两侧的菜单. <!--对于块级标签来说加上position:fixed之后,该div就不会占一整行,一般需要手动 ...
- vue3 setup语法糖下,vue自定义指令的实现,以及指令全局挂载,自定义v-loading的实现
最近一段时间,在做h5的移动端项目,UI组件库使用的vant,vant组件中的loading实在难用,无法包裹某个块进行loading,也无法对非组件的标签进行loading,所以想着自定义写个指令, ...
- .Net 6 使用Log4Net
1.首先引入Log4Net的 Nuget包 第一个就是 2.复制所需配置文件(文件中包含写入文本日志和数据库日志, 自行根据注释选择所需) 取名 log4net.Config <?xml ...
- 基于shp2pgsql将shape文件导入到postgresql中
1. 概述 Shapefile是常用的空间数据文件格式,PostgreSQL数据库是常用的关系型数据库 PostGIS是一个PostgreSQL的空间数据库扩展 ,提供空间信息服务功能,更详细的信息可 ...