Java基础2-4:构造函数、变量

本文介绍了Java中的构造函数和变量,详细讲解了构造函数的作用、类型及其实例应用,展示了不同参数的构造函数重载。同时,文章提到了变量的三种类型——类变量、成员变量和局部变量,以及它们在内存中的存储位置。通过实例代码加深了理解。
摘要由CSDN通过智能技术生成

一、前言

  本文内容摘自《深入理解Java核心技术:写给Java工程师的干货笔记(基础篇)》一书,2022年出版,作者 张洪亮(@Hollis),阿里巴巴技术专家,著有《Java工程师成神之路》系列文章,《Java工程师成神之路》电子书已开源,可在阿里云开发者社区免费下载。书籍内容比电子书内容要丰富,内容有修改,有需要的读者可以购买正版书籍。
 
  【如何成神:先搬砖,再砌砖,后造砖!】
 
  本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!

  《Java工程师成神之路》下载地址为:
  https://developer.aliyun.com/ebook/395?spm=a2c6h.20345107.ebook-index.24.4c927863j10ats

深入理解Java核心技术:写给Java工程师的干货笔记(基础篇) 

二、第2章 面向对象的核心概念【构造函数、变量】

1、构造函数

  构造函数是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符在创建对象的语句中一起使用。
 
【构造函数举例(非书中例子)】
 
核心代码:

/**
 * 构造函数样例
 */
public class ConstructorApp {
    /**
     * 姓名
     */
    private String name;
    /**
     * 年龄
     */
    private int age;
    /**
     * 手机号
     */
    private String phoneNumber;

    /**
     * 无参构造函数,手动添加
     */
    public ConstructorApp() {

    }

    /**
     * 带参构造函数:1个参数(String)
     * @param name 姓名
     */
    public ConstructorApp(String name) {
        this.name = name;
    }

    /**
     * 带参构造函数:2个参数(String, int)
     * @param name 姓名
     * @param age 年龄
     */
    public ConstructorApp(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 带参构造函数:2个参数(String, String)
     * @param name 姓名
     * @param phoneNumber 手机号
     */
    public ConstructorApp(String name, String phoneNumber) {
        this.name = name;
        this.phoneNumber = phoneNumber;
    }

    public static void main(String[] args) {
        //实例化对象:无参数
        ConstructorApp app1 = new ConstructorApp();
        System.out.println("**********分割线1**********");
        System.out.println(app1);

        System.out.println("**********分割线2**********");
        //实例化对象:1个参数(String)
        ConstructorApp app2 = new ConstructorApp("老王很棒");
        System.out.println(app2.name);
        
        System.out.println("**********分割线3**********");
        //实例化对象:2个参数(String, int)
        ConstructorApp app3 = new ConstructorApp("张三", 18);
        System.out.println(app3.name + " " + app3.age);

        System.out.println("**********分割线4**********");
        //实例化对象:2个参数(String, String)
        ConstructorApp app4 = new ConstructorApp("李四", "1008611");
        System.out.println(app4.name + " " + app4.phoneNumber);
    }
}

 
运行结果:

**********分割线1**********
cn.zhuangyt.javabase.object_oriented_core.constructor.ConstructorApp@85ede7b
**********分割线2**********
老王很棒
**********分割线3**********
张三 18
**********分割线4**********
李四 1008611

Process finished with exit code 0

  一个类可以有多个构造函数,可根据参数个数的不同参数类型的不同来区分,即构造函数的重载。
 
  构造器没有返回类型,不会被继承,且可以有范围修饰符
 
  构造器的函数名称必须和它所属的类的名称相同, 它承担着初始化对象数据成员的任务
 
  当编写一个可实例化的类时,如果没有专门编写构造函数,在默认情况下,一个Java类中会自动生成一个默认无参构造函数。默认构造函数一般会把成员变量的值初始化为默认值,如 int ->0,Integer -> null
 
  如果手动在类中定义了有参构造函数,那么这个默认的无参构造函数就不会自动添加了,而是需要手动创建。如图所示:
 
手动添加构造函数
 

2、变量

  Java 中共有三种变量,分别是类变量成员变量局部变量,它们分别存放在 JVM的方法区、堆内存和栈内存中。

/**
 * 变量
 */
public class Variables {
    /**
     * 类变量:a
     */
    private static int a;

    /**
     * 成员变量:b
     */
    private int b;

    /**
     * 局部变量:c、d
     * @param c
     */
    public void test(int c) {
        int d;
    }
}
  • 变量a:类变量,保存在方法区中。
  • 变量b:成员变量,和对象一起保存在堆内存中(不考虑栈上分配的情况)。
  • 变量c和d:局部变量,保存在栈内存中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白有点菜

你的鼓励决定文章的质量

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值