Java 中的方法

什么是方法

方法是 Java 中的一段可重用的代码块,用于执行特定的任务,是程序中的最小执行单元。

  • 参数:方法可以接受一个或多个参数,这些参数是传递给方法的值,用于方法内部的逻辑运算。
  • 返回值:方法可以返回一个值,叫做方法的返回值,返回值的类型在方法声明中指定,无返回值使用关键字 void 声明。
  • 方法的声明:
修饰符 返回值 方法名(参数数据类型 参数名称)
{
方法体
}

方法有哪些种

  • 构造方法:构造方法是一种特殊的方法,用于创建类的实例。构造方法的名称必须与类名相同,且没有返回类型(连 void 也没有)。
public class Person {
private String name;
private int age; // 无参构造方法
public Person() {
this.name = "Unknown";
this.age = 0;
} // 带参数的构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
} public static void main(String[] args) {
Person p1 = new Person(); // 使用无参构造方法创建对象
Person p2 = new Person("Johnny", 30); // 使用带参数的构造方法创建对象
}
}
  • 静态方法:静态方法属于类本身,而不是类的实例。静态方法可以通过类名直接调用,也可以通过对象实例调用(不推荐这种方式)。

public class MathUtils {
// 静态方法
public static int add(int a, int b) {
return a + b;
} public static void main(String[] args) {
int result = MathUtils.add(10, 20); // 通过类名调用静态方法
System.out.println("Result: " + result); // 输出: Result: 30
}
}
  • 实例方法:实例方法属于类的实例,必须通过类的实例来调用。每个实例都有自己的一份方法副本,实例方法可以访问类的实例变量和静态变量。

public class Person {
private String name;
private int age; // 实例方法
public void introduce() {
System.out.println("你好,我是" + name + " ,我今年 " + age + " 岁了。");
} public static void main(String[] args) {
Person p = new Person();
p.name = "Johnny";
p.age = 30;
p.introduce(); // 调用实例方法
}
}
  • 抽象方法:抽象方法没有方法体,只有方法签名,且必须在抽象类或接口中定义,并且子类必须实现这些抽象方法。抽象方法的主要目的是定义一个标准的行为,让子类根据自己的需求实现具体的逻辑。

public abstract class Animal {
public abstract void makeSound(); // 抽象方法
} public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks.");
}
}

静态方法和实例方法有何不同

定义

  • 静态方法:静态方法是在类中使用 static 关键字修饰的方法。静态方法属于类本身,而不是类的实例。所以,静态方法可以在没有创建对象的情况下调用。
  • 实例方法:实例方法是在类中定义的普通方法,它们没有 static 关键字修饰。实例方法属于类的实例(对象),而不是类本身。

存储方式

  • 静态方法:静态方法随着类的加载而加载,存储在方法区(Method Area)中。静态方法属于类的成员,而不是类的实例成员。这意味着无论创建多少个对象,静态方法在内存中都只有一份副本。
  • 实例方法:实例方法属于类的实例成员,每个对象都有自己的一份副本。实例方法在对象创建时分配内存,位于堆内存(Heap Memory)中的对象内。

调用方式

  • 静态方法:可以直接通过 类名.方法名 的方式来调用,不需要创建类的实例。例如:ClassName.staticMethod()。也可以通过 对象.方法名 的方式调用,但是不推荐这样做,因为这可能会引起混淆,让人误以为该方法与特定的对象实例有关。
  • 实例方法:必须通过类的实例来调用,也就是通过 对象.方法名 的方式调用,这是因为实例方法需要访问实例变量或其它实例方法,这些都需要通过对象实例来访问。

访问权限

  • 静态方法:只能直接访问类的静态变量和其他静态方法。如果要访问非静态成员(即实例变量或实例方法),则必须通过类的实例对象来访问。
  • 实例方法:可以访问类的所有成员,包括静态变量、静态方法、实例变量和实例方法。实例方法因为依赖于对象,可以通过 this 关键字引用当前对象的属性和行为。

使用场景

  • 静态方法:通常用于工具类,执行一些与对象状态无关的操作,比如数学计算、字符串处理等。静态方法可以看作是类级别的方法,它不依赖于任何实例的状态。
  • 实例方法:用于操作对象的数据或调用其他实例方法,涉及到对象的状态和行为。实例方法通常用于实现面向对象编程的核心特性,如封装、继承和多态。

【Java驿站】持续给大家更新
扫描下方二维码
关注【Java驿站】公众号

Java基础面试:Java中的方法的更多相关文章

  1. Java基础系列--03_Java中的方法描述

    方法 (1)方法的定义:就是完成特定功能的代码块. 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法. (2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ...

  2. Java基础:HashMap中putAll方法的疑惑

    最近回顾了下HashMap的源码(JDK1.7),当读到putAll方法时,发现了之前写的TODO标记,当时由于时间匆忙没来得及深究,现在回顾到了就再仔细思考了下 @Override public v ...

  3. Java基础面试系列(一)

    Java基础面试总结(一) 1. 面向对象和面向过程的区别 面向过程 面向对象 性能 高于面向对象 类加载的时候需要实例化,比较消耗资源 三易(易维护,易复用,易扩展) 不如面向对象 具有封装,继承, ...

  4. Java基础技术-Java其他主题【面试】

    Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...

  5. Java基础面试知识点总结

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  6. Java基础关于Map(字典)的方法使用

    Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...

  7. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  8. Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...

  9. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  10. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

随机推荐

  1. CSS – PostCSS

    前言 我第一次接触 PostCSS 是在学 Tailwind CSS 的时候. 它类似 JavaScript 的 Babel. 我没有用过 Babel, 因为 TypeScript 用的早. Post ...

  2. element plus 2.3.14(完成 指南 部分)

    https://element-plus.org/zh-CN/guide/design.html 设计 控制反馈: 通过界面样式和交互动效让用户可以清晰的感知自己的操作: 页面反馈: 操作后,通过页面 ...

  3. QT6新旧版本功能模块对比:QT6做了哪些优化重组?QT6新增加了哪些功能模块?QT6做了哪些改进、提升和优化?

    简介 本文介绍了QT6新旧版本都有的功能模块.QT6优化掉了或转移了的功能模块.QT6新增加的功能模块,以及QT6做了哪些改进.提升和优化. 文章目录 QT6新旧版本都有的功能模块 QT6优化掉了或转 ...

  4. P1438 无聊的数列 题解

    背景 看到题解都是差分,竟然还有建两颗线段树和二阶差分的大佬. 我感到不理解,很不理解. 题目正解 本题正解很明显就是:线段树 是的,你没有看错,就只有线段树. 很显然我们直接按照线段树板题写就可以了 ...

  5. 用于 Wi-Fi 密码破解

    wpa-dictionary 用于 Wi-Fi 密码破解. Linux 篇(推荐) 1. 安装 aircrack-ng 使用相应包管理工具安装,例如 Debian/Ubuntu 使用 apt 安装: ...

  6. k8s的ReplicationController

    ReplicationController 存活探针 Kubemetes有以下三种探测容器的机制: HTTPGET探针对容器的IP地址(你指定的端口和路径)执行HTTPGET请求,如果探测器收到响应, ...

  7. 云原生爱好者周刊:开源替代品开始围剿 Docker Desktop

    云原生一周动态要闻: Docker 更新和扩展了产品订阅 NGINX Ingress Controller 1.0.0 发布 Tanzu 应用平台的公开测试版发布 IBM 开源 Tornjak Kub ...

  8. 痞子衡嵌入式:瑞萨RA系列FSP固件库分析之外设驱动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是瑞萨RA系列FSP固件库里的外设驱动. 上一篇文章 <瑞萨RA8系列高性能MCU开发初体验>,痞子衡带大家快速体验了一下瑞萨 ...

  9. 串(C语言实现)

    文章目录 1.串的数据类型定义 数据对象 1.1 数据关系 1.2 基本操作 2.串的存储结构 2.1 串的顺序存储 2.2 串的链式存储 3.串的模式匹配算法 3.1BF 算法 3.2KMP 算法 ...

  10. pandas的一些基本操作

    Pandas 是一个开源的数据分析和操作库,它是 Python 编程语言的一个扩展.Pandas 提供了快速.灵活和表达能力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行. 1.为什么要学习p ...