一、构造器:

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. 基于 Ubuntu 服务器配置原生的 Socks5 网关代理服务器

    常见的代理协议有 http.https.socks4/5 这三种,http协议的代理搭建方案最简单,但是http代理无法访问https网站,https代理无法实现调用远端dns,所以我个人推荐使用Sc ...

  2. Codeforces Round #851 (Div. 2) A-E

    比赛链接 A 题意 给一串只包含 \(1,2\) 的数,找到最小的 \(k\) 使得 \(\prod_{i=1}^k a_i = \prod_{i=k+1}^n a_i\) . 题解 知识点:枚举. ...

  3. 【一句话】 OAuth 2

    OAuth 就是一种授权机制.数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据.系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用

  4. CC1链详解

    前言:这篇文章是对CC1的总结,个人学习,如有不对请多指教.谢谢! 环境:jdk8u71以下,因为在该jdk版本以上这个漏洞已经被修复了 下载链接:https://www.oracle.com/cn/ ...

  5. Sentinel入门到实操 (限流熔断降级)

    微服务保护--Sentinel 介绍Sentinel 1.背景 Sentinel是阿里巴巴开源的一款微服务流量控制组件.官网地址:https://sentinelguard.io/zh-cn/inde ...

  6. P10_组件-text和rich-text组件的基本用法

    常用的基础内容组件 text 文本组件 类似于 HTML 中的 span 标签,是一个行内元素 rich-text 富文本组件 支持把 HTML 字符串渲染为 WXML 结构 text 组件的基本使用 ...

  7. 如何通过C#/VB.NET代码在Word中更改字体颜色

    在日常工作中,我们有时会需要修改字体的颜色来突出文本重点,让读者更容易抓住文章要点.在今天这篇文章中,我将为大家介绍如何以编程方式,在Word更改字体颜色.本文将分为两部分分别介绍如何实现此操作.以下 ...

  8. ubuntu安装ROBOWARE

    https://github.com/tonyrobotics/RoboWare/ https://blog.csdn.net/lixujie666/article/details/80139112 ...

  9. js获取时间戳的方法

    js获取时间戳的方法 转载脚本之家: https://www.jb51.net/article/77066.htm 转载博客园八英里: https://www.cnblogs.com/deepalle ...

  10. Yapi安装配置(CentOs)

    环境要求 nodejs(7.6+) mongodb(2.6+) git 准备工作 清除yum命令缓存 sudo yum clean all 卸载低版本nodejs yum remove nodejs ...