当前位置: 首页 > news >正文

使用静态方法接受对象参数

我们先来看一个例子

public class MyInteger {  private int value;  // 构造函数  public MyInteger(int value) {  this.value = value;  }  // 实例方法  public boolean isEven() {  return value % 2 == 0;  }  // 静态方法接受int参数  public static boolean isEvenStatic(int value) {  return value % 2 == 0;  }  // 静态方法接受MyInteger参数  public static boolean isEvenStatic(MyInteger myInteger) {  return myInteger.value % 2 == 0;  }  // 提供一个getter方法来获取value字段的值(尽管在这个示例中不是必须的,但通常是个好习惯)  public int getValue() {  return value;  }  
}

接下来,我们演示如何使用这三种方法:

public class Main {  public static void main(String[] args) {  // 创建一个MyInteger对象  MyInteger myInteger = new MyInteger(10);  // 使用实例方法  boolean isEvenInstance = myInteger.isEven();  System.out.println("Is 10 even using instance method? " + isEvenInstance);   // 使用静态方法接受int参数  boolean isEvenStaticInt = MyInteger.isEvenStatic(10);  System.out.println("Is 10 even using static method with int parameter? " + isEvenStaticInt);  // 使用静态方法接受MyInteger参数  boolean isEvenStaticMyInteger = MyInteger.isEvenStatic(myInteger);  System.out.println("Is 10 even using static method with MyInteger parameter? " + isEvenStaticMyInteger); // 也可以这样使用静态方法接受MyInteger参数(如果已经有MyInteger对象的话)  boolean isEvenStaticMyIntegerAgain = myInteger.isEvenStatic(myInteger); // 注意这里调用静态方法时,仍然通过类名来调用,但我们可以使用myInteger对象作为参数  System.out.println("Is 10 even using static method with MyInteger parameter again? " + isEvenStaticMyIntegerAgain); }  
}

注意几点:

  1. 实例方法isEven()是通过MyInteger的实例myInteger来调用的。
  2. 静态方法isEvenStatic(int value)是通过类名MyInteger直接调用的,并传递了一个int类型的值。
  3. 静态方法isEvenStatic(MyInteger myInteger)也是通过类名MyInteger直接调用的,但传递了一个MyInteger类型的对象作为参数。

在实际编程中,我们通常直接通过类名来调用静态方法。


静态方法的特点

  1. 不依赖于对象实例:静态方法可以在没有创建类实例的情况下调用。
  2. 通过类名直接调用:你可以使用类名来调用静态方法,而不是通过类的实例。
  3. 可以访问静态变量:静态方法可以访问和修改类的静态变量。
  4. 不能访问非静态变量或方法:除非在静态方法中创建一个类的实例,否则静态方法不能直接访问类的非静态变量或方法。

// Main.java  class MyInteger {  private int value;  // 构造函数  public MyInteger(int value) {  this.value = value;  }  // Getter方法  public int getValue() {  return value;  }  // toString方法,用于打印MyInteger对象的信息  @Override  public String toString() {  return "MyInteger{" + "value=" + value + '}';  }  // 静态方法,接受两个MyInteger对象作为参数,返回它们的和  public static MyInteger add(MyInteger a, MyInteger b) {  int sum = a.getValue() + b.getValue();  return new MyInteger(sum);  }  
}  public class Main {  public static void main(String[] args) {  // 创建两个MyInteger对象  MyInteger num1 = new MyInteger(5);  MyInteger num2 = new MyInteger(10);  // 使用静态方法add计算两个MyInteger对象的和  MyInteger sum = MyInteger.add(num1, num2);  // 打印结果  System.out.println(sum); // 输出: MyInteger{value=15}  }  
}

 在这个例子中,add方法是一个静态方法,它接受两个MyInteger对象作为参数,并返回一个新的MyInteger对象,该对象表示这两个数的和。这个方法不需要MyInteger类的实例来调用,因为它是通过类名MyInteger直接调用的。

http://www.lryc.cn/news/373022.html

相关文章:

  • cocos creator如何使用cryptojs加解密(及引入方法)
  • 安装台式电脑网卡驱动
  • JavaEE-多线程(1)
  • 【计算机视觉】人脸算法之图像处理基础知识(五)
  • 工业 web4.0 的 UI 风格,独树一帜
  • BSP驱动教程-CAN/CANFD/CANopen知识点总结分享
  • 微服务之远程调用
  • Opencv数一数有多少个水晶贴纸?
  • AI Agent智能应用从0到1定制开发(完结)
  • 事件驱动架构:新时代的软件设计范式
  • 【机器学习】机器学习与物流科技在智能配送中的融合应用与性能优化新探索
  • web前端何去何从:探索未来之路
  • yolov8通过训练完成的模型生成图片热力图--论文需要
  • Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
  • Zadig vs. Jenkins 详细比较
  • 航拍无人机像素坐标转世界坐标
  • Linux系统学习——指令二
  • 【逻辑回归】和【线性回归】的区别和联系-九五小庞
  • 富格林:正视欺诈阻挠交易被骗
  • 如何在WPS中加载EndNote X9插件
  • vb.net小demo(计算器、文件处理等/C#也可看)
  • 【vue3|第8期】深入理解Vue 3 computed计算属性
  • 《精通ChatGPT:从入门到大师的Prompt指南》附录C:专业术语表
  • YOLOv8可视化界面PYQT5
  • 远程代码执行和远程命令执行是一个东西吗
  • C++ 20新特性之线程与jthread
  • 赶紧收藏!2024 年最常见 20道并发编程面试题(七)
  • HAL库开发--第一盏灯
  • Linux C语言:变量的作用域和生命周期(auto、register、static和extern)
  • AI Stable diffusion 报错:稳定扩散模型加载失败,退出