一、构造器:

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的更多相关文章

  1. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  2. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  3. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  4. Java基础学习(2)

    Java基础学习(二) 面向对象 对象:客观存在的事物 面向对象:人具体关注的事物的某些信息 类:是模子,确定对象会拥有的特征(属性)和行为(方法) 对象的属性:对象具有的各种特征 对象的方法:对象能 ...

  5. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

  6. java基础篇 之 构造器内部的多态行为

    java基础篇 之 构造器内部的多态行为 ​ 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...

  7. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  8. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  9. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  10. java基础学习总结——开篇

    java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...

随机推荐

  1. VMware 虚拟机安装 OpenWrt 作旁路由 单臂路由 img 镜像转 vmdk 旁路由无法上网 没网络

    重要注意事项 由于布线原因笔记本只能采用无线的方式连接路由器,在Windows10的环境下使用无线网卡桥接,结果软路由无法上网,翻阅了各种帖子最终发现跟系统底层的协议栈有关系,随即放弃使用有线网卡,不 ...

  2. npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    出现问题原因: vscode运行前端命令,没有为安装的npm配置环境变量 解决办法: 配置环境变量,可查看前一篇文章nodejs 环境变量配置 配置完后还出如题原因: 重新启动vscode终端powe ...

  3. 三元运算符整体执行情况:Object obj = true? Integer.valueOf(1): Double.valueOf(2.0);

    /* * @author YAM */public class Test01 { public static void main(String[] args) { Object obj = true? ...

  4. pytest基本使用指南

    注:关于pytest的基础要点个人已经总结好了, 一. 启动: 在主函数main下启动:pytest.main(['-q','test_demo.py']) 在命令行启动:pytest ./test_ ...

  5. 基于电商直播SDK快速实现一个淘宝直播APP【内附源码】

    现在各大互联网APP都标配电商直播带货了,没有直播带货开发经验都感觉自己跟不上技术的进步.今天快速基于Java实现一个安卓端电商直播APP,深入理解整个电商直播开发流程.我们最终实现效果如下: 按照惯 ...

  6. 流量加密之:使用Openssl反弹加密shell

    流量加密之:使用Openssl反弹加密shell 目录 流量加密之:使用Openssl反弹加密shell 1 背景 2 生成SSL证书 3 Linux平台下 3.1 在Kali上使用 OpenSSL ...

  7. CSS 页面整体变灰色

    body {-webkit-filter: grayscale(100%) !important;-moz-filter: grayscale(100%) !important;-ms-filter: ...

  8. xr32f429开发环境搭建

    XR32是全志科技的一款MCU芯片,基本参数如下所示: 环境的搭建首先是下载芯片对应的资料和手册(QQ群723687715)软硬件资料 官网工具下载:注册全志服务平台 下载无线连接工具和无线MCU 工 ...

  9. AI 能多强「GitHub 热点速览」

    不知道 AI 在你那边是什么样的具象,在我这就是各种搞图:从给线稿图上色,到直接给你生成一张小色图,AI 最近是真出风头,本周热点速览也收录了 2 个 AI 项目,也和图像有关.还有一个和 AI 相关 ...

  10. Apinto 网关 V0.11.1 版本发布,多协议互转,新增编码转换器,接入 Prometheus...

    憋了那么久,Eolink 旗下 Apinto 开源网关再次更新啦~ 一起来看看是否有你期待的功能! 1.协议转换功能上线 之前发布的 Apinto v0.10.0 已经支持了多协议的基本功能,实现多协 ...