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

什么是方法的返回值?方法有哪几种类型?静态方法为什么不能调用非静态成员?静态方法和实例方法有何不同?

什么是方法的返回值?方法有哪几种类型?

方法的返回值 是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。返回值的作用是接收出结果,使得它可以用于其他的操作!

我们可以按照方法的返回值和参数类型将方法分为下面这几种:

1、无参数无返回值的方法

public void f1() {//......
}
// 下面这个方法也没有返回值,虽然用到了 return
public void f(int a) {if (...) {// 表示结束方法的执行,下方的输出语句不会执行return;}System.out.println(a);
}

2、有参数无返回值的方法

public void f2(Parameter 1, ..., Parameter n) {//......
}

3、有返回值无参数的方法

public int f3() {//......return x;
}

4、有返回值有参数的方

public int f4(int a, int b) {return a * b;
}

 静态方法为什么不能调用非静态成员?

这个需要结合 JVM 的相关知识,主要原因如下:

  1. 静态方法是属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。而非静态成员属于实例对象,只有在对象实例化之后才存在,需要通过类的实例对象去访问。
  2. 在类的非静态成员不存在的时候静态方法就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。
public class Example {// 定义一个字符型常量public static final char LETTER_A = 'A';// 定义一个字符串常量public static final String GREETING_MESSAGE = "Hello, world!";public static void main(String[] args) {// 输出字符型常量的值System.out.println("字符型常量的值为:" + LETTER_A);// 输出字符串常量的值System.out.println("字符串常量的值为:" + GREETING_MESSAGE);}
}

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

1、调用方式

在外部调用静态方法时,可以使用 类名.方法名 的方式,也可以使用 对象.方法名 的方式,而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象

不过,需要注意的是一般不建议使用 对象.方法名 的方式来调用静态方法。这种方式非常容易造成混淆,静态方法不属于类的某个对象而是属于这个类。

因此,一般建议使用 类名.方法名 的方式来调用静态方法。

public class Person {public void method() {//......}public static void staicMethod(){//......}public static void main(String[] args) {Person person = new Person();// 调用实例方法person.method();// 调用静态方法Person.staicMethod()}
}

 

2、访问类成员是否存在限制

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员(即实例成员变量和实例方法),而实例方法不存在这个限制。

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

相关文章:

  • Qt开发——Qt项目打包、整合以及生成安装包保姆级教程(Windows系统)
  • 大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索
  • 大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
  • 【Java后端】之 ThreadLocal 详解
  • 2.链表(代码随想录——python版本)
  • 6个解决“由于找不到vcruntime140_1.dll无法继续执行代码”问题的方法
  • 常用数据库获取表,视图,列,索引信息
  • 架构设计笔记-16-嵌入式系统架构设计理论与实践
  • SpringSecurity使用介绍
  • # Js 回调函数
  • COOLSHELL文章:从Code Review 谈如何做技术【阅读笔记】
  • 3.1.1 ReactOS系统中二叉树创建一个MEMORY_AREA节点
  • 三、Linux 安装全攻略
  • Ansible自动化工具
  • Flutter Container组件
  • IPv6 DNS简介
  • 【Python-AI篇】数据结构和算法
  • VideoCLIP-XL:推进视频CLIP模型对长描述的理解
  • 【vue】vue-router_ vue3路由管理器
  • 昇思MindSpore进阶教程--Diffusion扩散模型(上)
  • Nginx:proxy_pass指令
  • 【AI学习】Mamba学习(十):HiPPO总结
  • AI编程新纪元:Cursor与V0引领的技术变革
  • python——类
  • 走廊泼水节——求维持最小生成树的完全图的最小边权和
  • LC:动态规划-买卖股票
  • FLINK SQL 任务参数
  • HCIP——以太网交换安全(四)DHCP Snooping
  • k8s worker 节点关机 sts 管理的 pod 无法迁移
  • 排序04 视频播放建模