JAVA中的属性、方法、构造器,你真的弄懂了吗?

Java之super调用属性、方法和构造器 说明:Person类为Student类的父类 1、Person类 package com.atguigu.java3; public class Person { String name; int age; int id = 1001;//身份证号 public Person() { super(); } public Person(String name) { super(); this.name = name; } public Person(String name,i 阅读详情

一、变量分类

  • 成员变量:在方法体外,类体内声明的变量称为成员变量;不以static修饰的是实例变量,以static修饰的为类变量
  • 局部变量:在方法体内部声明的变量称为局部变量
成员变量局部变量
声明的位置直接声明在类中方法形参或内部、代码块内、构造器内等
修饰符四种权限修饰符、final等不能用权限修饰符修饰、可以用final修饰
初始化有默认初始化没有默认初始化,必须显式赋值
内存加载位置堆空间或静态域内栈空间

二、初始化赋值

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用数据类型。

成员变量类型初始值
byte0
short0
int0
long0
float0.0
double0.0
char0或写为'\u0000'(表现为空)
booleanfalse
引用数据类型null

三、对象的内存解析

先看一下如下代码:

public class Person {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.age = 20;
        p1.name = "cabbage";
        Person p2 = new Person();
        p2.age = 12;
    }
    private String name;
    private int age;
}

内存解析图:

简单解析一下:以p1对象引用为例,当我们创建该对象时,成员变量就会放在堆空间中,先是默认初始化值null、0,之后通过对象.属性的赋值方式把属性值分别改为:cabbage、20。


四、对象数组的内存解析

先看如下代码:

public class Person {
    public static void main(String[] args) {
        Person[] people = new Person[2];
        people[0] = new Person();
        people[0].name = "cabbage";
        people[0].age = 20;
        System.out.println(people[0].toString());
        System.out.println(people[1]);
    }
    private String name;
    private int age;
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

内存解析图:

简单解析一下:因为是对象数组,所有初始值每个默认值都是null,当给people[0]创建对象时,会在堆空间中开辟一个空间用来储存成员变量name、age;对象赋值的过程与对象内存解析的方式一样。

运行结果:


五、方法使用介绍

1、方法的声明:

  • 权限修饰符 返回值类型 方法名(形参列表){ 方法体 }

2、返回值类型:有返回值 vs 没有返回值

  • 如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量:“return 数据”
  • 如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不需要使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思

3、return关键字的使用:

  • 使用在方法体中,方法中不可以定义方法
  • 作用:结束方法、针对于有返回值类型的方法,使用"return 数据"方法返回所要的数据
  • 注意点:return关键字后面不可以声明执行语句
  • 方法的使用中,可以调用当前类的属性或方法
  • 特殊的:方法A中又调用了方法A:递归方法

六、方法重载

  • 含义:同一个类、方法名一样、形参列表(个数、类型、顺序)不同

下列方法都构成了重载:

public class Person {
    private String name;
    private Integer age;
    public void one() { }
    public void one(Integer age) { }
    public void one(String name) { }
    public void one(String name, Integer age) { }
    public void one(Integer age, String name) { }
}

我们再来看看可变个数的形参:

public class Person {
    public static void main(String[] args) {
        Person person = new Person();
        person.one("one","two","three");
    }
    public void one() { }
    public void one(String... names) { }
}

  • 可变个数形参的格式:数据类型 ... 变量名
  • 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
  • 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。
  • 可变个数形参在方法的形参中,必须声明在末尾且最多只能声明一个可变形参。

最后来看看方法形参的传递机制:值传递

  • 形参:方法定义时,声明的小括号内的参数

  • 实参:方法调用时,实际传递给形参的数据

值传递机制:

  • 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。

  • 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。


七、构造器

构造器说明:

  • 如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
  • 一个类中定义的多个构造器,彼此构成重载
  • 一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
  • 一个类中,至少会有一个构造器。
public class Person {
    public static void main(String[] args) {
        Person person = new Person();
    }
    public Person() {
        System.out.println("我是构造器");
    }
}

运行结果:

八、this关键字

this说明:

  • this可以用来修饰、调用:属性、方法、构造器

  • 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。

  • 在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器

  • 构造器中不能通过"this(形参列表)"方式调用自己

  • 规定:"this(形参列表)"必须声明在当前构造器的首行

  • 构造器内部,最多只能声明一个"this(形参列表)",用来调用其他的构造器

写个代码验证一下:

public class Person {
    public static void main(String[] args) {
        Person person = new Person("cabbae", 20);
    }
    private String name;
    private Integer age;
    public Person(String name, Integer age) {
        this(name);
        this.name = name;
        this.age = age;
    }
    public Person(String name) {
        System.out.println("我的名字是:" + name);
    }
}

运行结果:

RK3588工业开发板实战:如何用IgH EtherCAT主站精准控制伺服电机(附完整代码) 本文详细介绍了如何利用RK3588工业开发板和IgH EtherCAT主站实现伺服电机的精准控制。从硬件选型、实时内核配置到EtherCAT主站安装和核心代码实现,提供了一套完整的工业自动化解决方案,特别适合需要高精度运动控制的场景。 阅读详情

相关推荐

【抖音滑动验证码风控分析】

文章摘要:通过对比正常响应与验证码风控响应的头部信息,发现两者存在显著差异。正常响应返回JSON格式数据(Content-Type: application/json)并采用分块传输(Transfer-Encoding: chunked),而风控响应仅返回空文本(Content-Type: text/plain,Content-Length: 0),并通过X-Vc-Bdturing-Parameters等特殊头字段传递风控信息。这些差异主要体现在内容类型、数据传输方式和风控标识参数上,为风控识别提供了关键特

qq_44990881的博客 1099

Java属性详解|属性的定义、调用方法、限制语句,以及带参构造方法对属性赋值

在类里面1、把属性定义为private,就是将访问的范围限制到了内部。比如在一个类中,【通常属性的定义也是在类的内部, 这样类里面的方法也可以进行属性访问和调用】【防止属性被 随意更改赋值】比如subjectName被定义为private,而subjectLife是默认的public在另外一个类的方法中,创建好这个类的对象后,会发现能够调用的属性,只有subjectLife,subjectName被隐藏了,只能通过那个类中的方法调用、赋值。【限制属性的值或范围】......

mengxiang_的博客 1万+

Win10系统VS2019+Cmake+qhull_8.0.0环境配置

1 qhull 1.1 简要介绍 qhull是一个强大的计算几何库,可以用于计算高维的convex hull, Delaunay triangulation, Voronoi diagram等。 1.2 依赖库 qhull不依赖其他库。 1.3 源码包下载 qhull源码地址:github:https://github.com/qhull/qhull.git 2 Cmake构建项目 2.1 路径 源代码路径:D:/ThirdParty/qhull/qhull_8.0.0构建项目路径:D:/Thi.

wangchenxue的博客 2489

java 内部类

在Java中,可以将一个类定义在另一个类里面或者一个方法里边,这样的类称为内部类,广泛意义上的内部类一般包括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。 1.成员内部类 (1)该类像是外部类的一个成员,可以无条件的访问外部类的所有成员属性和成员方法(包括private成员和静态成员); (2)成员内部类拥有与外部类同名的成员变量时,会发生隐藏现象,即默认情况下访问的是成...

aiqing2015的博客 431

ego-planner启动参数深度解析:从配置到实战避障应用

本文深入解析EGO-Planner启动参数的配置与实战应用,重点探讨无人机自主导航中的避障性能优化。通过环境感知、运动约束和算法控制三类参数的详细说明,结合ROS和RViz工具,提供从基础配置到高级调优的完整指南,帮助开发者提升无人机在复杂场景下的规划效率和安全性。

rum55的博客 245

el-upload自定义上传dwg/dxf文件并且携带额外参数(CAD)

需求:需要使用el-upload自定义上传cad的图片或普通图片,这边需要判断区分下,以及上传后清空上传文件列表。

请叫我欧皇!的博客 1535

this 调用属性,方法,构造器

知识点一:this 调用属性,方法,构造器 1.this调用属性和方法 this 理解为当前对象或者当前正在创建的对象 1.1 在类的方法中,我们可用this.属性或this.方法的方式,调用当前对象的属性或方法 通常:省略this 特殊:方法的形参和类的属性同名时,我们必须使用this.变量的方式,表明此变量是属性,而非形参 1.2在类的构造器中,我们可用this.属性或this.方法的方式,调用当前正在创建对象的属性或方法 2.this调用构造器 2.1 在类的构造器中,可以显式的使用this(形参列表

weixin_49263647的博客 1580

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7496

Java基础-属性

Java属性又称之为成员变量,用于储存数据,成员变量又分为了静态成员变量和实例成员变量。

m0_70716664的博客 956

【保姆级教程/代码】使用PRIDE PPP-AR软件解算ZTD、反演GNSS PWV,并评估精度

在本算例中,我下载了BJFS站2024年的IGS ZTD产品,用于评估PRIDE PPP-AR软件解算出ZTD结果的精度。

weixin_43910227的博客 2365

中台战略-第五章、中台建设方法论

文章目录第五章、中台建设方法论5.1 中台架构整体策略5.2 业务顶层设计5.3 业务中台设计方法论5.3.1 能力支撑是基础5.3.2 中心自治是承载形式5.3.3 3层模型是骨架5.3.4 5步法是指导思想1. 业务抽象2. 高阶设计3. 组件建模4. 开发交付5. 持续运营5.4 数据中台设计方法论5.4.1 总体规划5.4.2 数据集成5.4.3 模型建设5.4.4 通用研发5.4.5 资产管理5.4.6 数据服务5.5 应用向中台迁移的3中途径和方法5.5.1 方法1:新应用替换旧应用5.5.2

沧海之巅的专栏 1458

java对象中的属性,方法

1、什么是属性?有几类属性? 属性是用于修饰或者对对象拥有的某一个基础名词,如颜色,年龄。 目前java有的是 静态属性 跟着类初始化,在所有的类的实例化对象内都可以取到,存放在方法区内。和应用程序的生命周期相同。 对象属性 跟着对象初始化,在创建的对象内才可以取到,存放在内存的堆中。随着GC的回收而销毁。 局部变量 跟着方法初始化,在方法内部才可以取到,存放在内存的栈中。当方法运行完后就会被销毁。 2、属性的修饰词 private 修饰后为私有属性,仅当前类可以使用,子类不可使用不可继

sober_chen的博客 7903

2026全网最新华为OD机试真题目录A+B+C+D+E卷(持续收录中)-Python版

🔔本文收录于「最新最全华为OD机试真题(Python版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!本人所写题库均精心搜集于互联网。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅读使用!

**My Coding Family** 10万+

Java构造器(构造方法)详解

Java构造器(构造方法)详解 什么是构造器 构造器通常也叫构造方法、构造函数,构造器在每个项目中几乎无处不在。当你new一个对象时,就会调用构造器。构造器格式如下: [修饰符,比如public] 类名 (参数列表,可以没有参数){ //这里不能有return} 文章目录Java构造器(构造方法)详解Java构造器怎么定义构造器构造器的使用构造器的继承**构造器、静态代码块、构造代码块的执行顺序,详见下文实例**实例1.默认构造器2.禁止对象被外部创建3.构造器重载4.构造器的继承**5. 构造器、静态代码

qq_47897078的博客 4万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java中类的三大结构:属性、方法、构造器

java中类的三大结构:属性、方法、构造器一、类的成员之一:属性(field)1、语法格式:2、变量的分类:成员变量与局部变量3、成员变量(属性)和局部变量的区别?4、对象属性的默认初始化赋值二、类的成员之二:方法(method)1、什么是方法(method、函数):2、方法的声明格式:3、方法的分类:按照是否有形参及返回值4、方法的调用5、对象数组的内存解析6、方法的重载7、可变个数的形参8、方...

仰望与追逐的博客 7061

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java面向对象 构造器

类中定义任何构造器或初始化属性,所以当你尝试访问这些属性时,它们的值将是默认的(例如,对于int类型的属性,默认值为0;Java中的构造器是一种特殊的方法,用于初始化新创建的对象。它主要用于设置对象的初始状态,也可以用于执行一些必要的操作,例如分配资源或执行一些初始化任务。:构造器是一种特殊的方法,用于初始化新创建的对象。在这个构造器中,有一些被注释掉的代码,这些代码原本是用来初始化对象的属性(如。如果你想在创建对象时初始化这些属性,你可以取消构造器中的注释,这样在创建对象时这些属性就会被初始化。

Code-5的博客 2884

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JAVA-构造器

构造器 用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义。 构造器的名称必须与类名同名,包括大小写。 构造器没有返回值,但也不能写void,也不能写return。 构造器的参数:一般是初始化对象的前提条件。 用new调用!且对象一建立,构造器就运行且仅运行一次。一般方法可被调用多次。 类一定有构造器!这是真的,不需要质疑! 如果类没有声明(定义)任...

CSII@王大仙的博客 7974

Java中的构造器

构造器是一种特殊的方法,它与类同名,没有返回类型(甚至不写void),用于初始化对象。构造器在对象创建时由Java虚拟机(JVM)自动调用,确保对象的初始状态。构造器是Java中用于创建和初始化对象的重要方法。通过构造器,可以确保对象在创建时有一个有效的初始状态。理解构造器的工作原理、类型及其重载用法,有助于编写更灵活、可维护的代码。在实际开发中,合理使用构造器,能够提升代码的清晰度和可读性。

muxiuyulin871的博客 4866

通过反射来调用属性、方法和构造器【Java】

写在前面的话: 参考资料:尚硅谷视频 本章内容:如何通过反射调用属性与方法【在前面文章的基础上拓展】 IDE:eclipse JDK:Java8 1.调用属性 1.1 调用声明为public的属性 主要分为5步骤: 创建Class类的实例 【点击这里,学习如何创建Class类的实例】 获取构造器【点击这里,学习如何获取构造器】 通过获取的构造器,创建对象 获取属性【核心,点击这里,学习如何获取属性】 调用获取到的属性,并通过设置来改变属性的值 代码示例 import j.

qq_56402474的博客 1233

Java通过反射调用类中的指定方法、指定属性、指定构造器

Java通过反射调用类中的指定方法、指定属性、指定构造器1.调用指定方法2. 调用指定属性3. 调用指定构造器 1.调用指定方法 通过反射,调用类中的方法,通过Method类完成。步骤: 通过Class类的getMethod(String name,Class…parameterTypes)方法取得一个Method对象,并设置此方法操作时所需要的参数类型。 之后使用Object invoke(O...

码农回顾 2866

Java构造器【总结】

家人们,今天关于 Java 构造器的知识就跟你们唠到这儿啦。从为什么要有构造器,到它的样子、用法,还有重载和默认构造器这些要点,希望你们都有了一个清晰的认识。构造器虽然看起来只是一个小小的语法点,但它对于我们创建和管理对象起着至关重要的作用,是 Java 编程中不可或缺的一部分。要是之后我又学到什么好玩的编程知识,再回来跟大伙分享,祝家人们生活愉快,拜拜!

潜意识Java的博客 1394

Java 反射机制:获取构造器、方法和属性的强大工具

Java反射

BIAO13095314378的博客 1611

Java——构造器(构造方法)和 this

我们之前在实例化一个类时,对创建的对象的属性初始化都是依靠一个个访问对象的属性然后一个个赋值的,这样实在太麻烦。person.name = "张三";Sring name;int age;//...这时,我们就可以使用构造器,构造器实际上是在创建对象时自动被调用的。Person person = new Person("张三", 19);int age;//构造器这样我们就能再创建对象时就直接将对象的属性初始化好了。[修饰符] 类名(参数列表) {/...this。

Stewie Lee的博客 1459

Java中的构造器详解

还可以用于调用同一个类的其他构造器。这被称为构造器链接或构造器委托。在Java中,构造器(也称构造方法)是一种特殊的方法,:构造器链接必须在构造器的第一行进行,且只能调用一次。关键字可以用于引用当前对象的属性或方法。

2301_79842503的博客 982

Java中类中的构造器(构造方法)

1、java中类的构造器是什么:它是一个方法 2、它有什么作用,它用于类的实例化对象的初始化 3、我们用代码来说明它是怎么一回事儿: (1)、我们先来创建一个main类,在他里面用于实现其他类的实例化以及方法属性的调用。 public class Main { public static void main(String[] args) { } } (2)、我们都知道,类是对一类事物的抽象,抽象出他们所具有的共同属性和方法,这里我们抽象出来一个动物类,动物有很多,动物的名字,颜

BaoITcore的博客 2282
上一篇: “北头条,南BIGO”,BIGO社招Java三面面经分享 怒斩心动offer
下一篇: Java 入门:装箱与拆箱
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值