java学习遇到的问题 无法从静态上下文中引用非静态变量、方法。

java无法从静态上下文中引用非静态一些错误 java初学者在编写类,在调用方法,在静态方法与动态方法使用会出现的一些错误。 学习后 能初步了解自己的错误的原因 以及遇到这种错误的改正方法 避免下次踩坑 立即下载

在写java的斐波那契数列递归时遇到了一个问题。

public class Fibonacci
{
	public static void main(String []args)
	{
		int x = f(6);
		System.out.println(x);
	}
	
	public int f(int x)
	{
		if(x==1||x==2){
			return 1;
		}else{
			return f(x-1)+f(x-2);
		}
	}
}

发现报错了
在这里插入图片描述
编译后出错,无法在静态上下文中引用非静态。

原来,在静态的方法中不能直接调用非静态的方法或属性。因为一个类的静态方法在这个Class文件被加载之后,就可以由这个Class类型对象来调用,而非静态的方法需要一个实例对象,有可能还未被创建,所以为了避免在静态方法中调用一个还不存在的实例对象的非静态方法,编译期就会直接阻止这个行为。

解决的方法有两种,

  1. 第一种是将被调用的方法设置成静态方法;
  2. 第二种是new本类,然后通过实例来调用。

第一种:

public class Fibonacci
{
	public static void main(String []args)
	{
		int x = f(6);
		System.out.println(x);
	}
	
	public static int f(int x)
	{
		if(x==1||x==2){
			return 1;
		}else{
			return f(x-1)+f(x-2);
		}
	}
}

第二种

public class Fibonacci
{
	public static void main(String []args)
	{
		Fibonacci fibonacci= new Fibonacci();
		int x = fibonacci.f(6);
		System.out.println(x);
	}
	
	public int f(int x)
	{
		if(x==1||x==2){
			return 1;
		}else{
			return f(x-1)+f(x-2);
		}
	}
}
NVIDIA NCCL 安装和测试实战教程 ibrary)是用于深度学习应用的高性能通信库,可加速多GPU通信和同步。它能够在多个GPU之间进行高效的数据传输和集体操作,显著提高了分布式GPU系统上深度学习训练和推理的性能。NVIDIA NCCL是加速多GPU系统上深度学习应用的必不可少的工具。其高效的通信原语和集体操作显著提高了分布式训练和推理的性能,使其成为现代深度学习基础架构的关键组成部分。 阅读详情

相关推荐

数据仓库的复用性:设计和构建一个高复用性的数仓

数据仓库的复用性是指在数据仓库的设计和使用过程中,能够实现数据、模型、流程、工具等多个层面的重复利用,减少重复开发,提高开发效率,降低维护成本,并增强灵活性和可扩展性。

z1941563559的博客 1307

无法从静态上下文中引用非静态方法

静态方法中无法引用非静态方法

m0_54250366的博客 1万+

grpc安装与简单demo测试

grpc安装: 由于工作需要,最近在学google的rpc开源框架;由于本人菜鸟一枚,而且是从Windows开发转到Linux;由于之前版本控制使用的是svn,没有使用过git,所以从GitHub上下载代码是通过浏览器下载zip格式的压缩文件,折腾了好几天了,发现了各种坑,各种缺少库,各种不知道怎么把这个库给装机器上。对于一个不熟悉Linux的人来说,这个体验简直糟糕透了。没办法了又在机器上装了...

old__captain的博客 4833

错误: 无法从静态上下文中引用非静态 变量 this

【JAVA菜鸟笔记】 错误: 无法从静态上下文中引用非静态 变量 this #1 09.17 Hello.java 错误: 无法从静态上下文中引用非静态 变量 this 错误原因:main方法是一个静态方法,而静态方法中无法引用非静态变量 因为静态方法可以通过所在类直接调用而不需要实例化对象,非静态成员变量则是一个对象的属性它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用静态变量的 改正方法:将Student类从Hello类中划出。 ...

JAVA_Rush的博客 1万+

旋转矩阵推导

推导前提: 坐标使用右手坐标系,角度逆时针旋转为正。 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一、平面二维坐标点的旋转 如右图所示,根据三角函数关系,可以列出向量OP与OP’的坐标表示形式: x = |OP|•cosα x′ = |OP|•cos(α+β) y = |OP|•sinα y′ = |OP|•sin(α+β) 将P′(x′,y′)表达式展开: x′ =

suixinger_lmh的随笔 1384

旗鱼优化算法(SFO)详解:从海洋猎手到智能优化

旗鱼优化算法(SFO)是一种新型群体智能优化算法,灵感来源于旗鱼的群体捕食行为。该算法采用双种群机制,模拟旗鱼(精英个体)与沙丁鱼(普通个体)的交互过程,通过交替攻击策略实现探索与开发的平衡。核心机制包括:基于猎物密度的旗鱼位置更新、随迭代衰减的攻击力度控制、以及捕食替换机制。SFO具有参数少、全局搜索能力强等特点,在高维复杂优化问题中表现优异。算法通过模拟自然界中的群体智能行为,为解决工程优化问题提供了新思路。

qq_42212808的博客 163

Java错误:无法从静态上下文中引用非静态变量this

非静态成员变量()则是一个对象的属性它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用非静态变量!这里的出错是因为将Vip1类与Customer1类置于SuperTest05类中,并在静态方法中调用。静态方法可以通过所在类直接调用而不需要实例化对象,实例方法则反之 构造方法也需要。

dnyfgu的博客 3184

【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

AUTOSAR架构下MCAL Modules软件分区问题分析

qq_36056498的博客 939

“无法从静态上下文中引用非静态变量,非静态方法”原因及解决

1.原因         (1)用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。这两个从属于类,没有创建实例也可以使用。         (2)而非静态的成员变量是对象的属性,他们的存在依

qq_32732581的博客 2万+

中兴交换机如何配置?有哪些常用的配置命令,本文值得收藏!

中兴交换机是一种常见的网络设备,用于构建和管理企业网络。它提供了丰富的功能和灵活的配置选项,使网络管理员能够根据特定需求进行定制化配置。本文将详细介绍中兴交换机的配置过程,包括登录、基本设置、VLAN配置、接口配置和安全配置等内容。

网络技术联盟站 1万+

古月居ros2入门21讲里面7.节点:机器人的工作细胞,报错:QSocketNotifier: Can only be used with threads started...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1825

非静态变量 ... 不能在静态上下文中被引用的解决方案

在Java等面向对象的编程语言中,变量可以分为静态变量(static variables)和非静态变量(非static变量或实例变量)。静态变量属于类,而非静态变量属于类的实例(即对象)。静态变量和方法可以在没有创建类的实例的情况下直接通过类名来访问,而非静态变量和方法则需要通过类的实例来访问。

2301_79779756的博客 1310

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JAVA错误:无法从静态上下文中引用非静态变量 this

新学习:构造方法的重载,给成员变量赋值 错误代码: class Student { public static void main(String[] args) { Person p = new Person(); p.setAge(24); p.setName("杨洋"); p.show(); System.out.println("Hello World!"); ...

wangyang20170901的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java中静态方法,非静态方法,静态变量,非静态变量四者之间的关系

Java学习笔记之静态方法(类方法),非静态方法(成员方法),静态变量(类变量),非静态变量(成员变量)之间的关系 首先明白这几个名词的意思: 静态方法:即类方法,在类之中,以static关键字申明的方法。 使用方法:直接使用类名.类方法名来进行调用。 非静态方法:即成员方法,没有static关键字申明。 使用方法:需要先创建类对象,使用类对象名.成员方法名来进行调用。 静态变量:即类变量,在类...

Doit_kang的博客 8278

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

非静态方法可以访问Java中的静态变量/方法吗?

“非静态方法可以访问静态变量或调用静态方法”是Java中有关静态修饰符的常见问题之一,答案是, 是的 ,非静态方法可以访问静态变量或调用静态方法。 Java中的方法。 这没有问题,因为有静态成员,即静态变量和静态方法都属于一个类,并且可以根据其访问修饰符从任何位置调用。 例如,如果静态变量是私有的 ,则只能从类本身访问它,但是您可以从任何地方访问公共静态变量。 类似地,可以从同一类的非静...

最佳 Java 编程 1万+

Java中静态上下文中无法引用非静态变量的解决办法以及偶然发现的stack overflow

Java中静态上下文中无法引用非静态变量的解决办法: 一、为什么不能引用? 初学者经常会遇到 non-static variable mainframe cannot be referenced from a static context  因为静态类的方法可以在没有创建实例对象时直接调用,而非静态的成员变量是一个对象属性,只有在对象存在时才可以引用。因此,如果在对象未创建实例时,我们在静...

会飞的小小猪的博客 1万+

java中静态方法中调用非静态方法

java初学者经常会遇到的问题:无法从静态上下文中引用非静态变量 ?non-static variable mainframe cannot be referenced from a static context 即在静态方法中不能引用非静态变量 为什么? 因为我们知道静态的方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对象未创建实...

lvhdbb的博客 1万+

完全理解Java中静态代码块,静态方法,静态变量,非静态代码块,非静态变量,构造函数初始化顺序

一、定义 1、静态代码块(静态初始化块,静态域): 使用static关键字和{}声明的代码块,格式如下: public class People{ static{ System.out.println("静态代码块"); } } 作用: 需要在项目启动时就执行的代码,一般放在静态代码块中。比如一个项目启动时需要加载大量的配置文件,静态资源等信息。并且静态代码块指初始化一...

JSai的博客 5001

非静态方法 ... 不能在静态上下文中被引用的解决方案

在Java等面向对象的编程语言中,方法可以分为静态方法(static methods)和非静态方法(非static方法或实例方法)。静态方法属于类,可以在没有创建类的实例的情况下直接通过类名来调用。而非静态方法则需要通过类的实例来调用,因为它们依赖于具体的对象实例。

2301_79779756的博客 1940

Error:java: 无法从静态上下文中引用非静态 变量 this

Error:java: 无法从静态上下文中引用非静态 变量 this 分析: 出现这种错误首先先分清什么是静态什么是非静态,它们之间的关系是什么? 静态方法中不能引用非静态变量 非静态方法中能引用静态变量 其次要明白类与类之间要分开定义,不能嵌套,这是语法规定 错误原因代码如下: public class Demo { public static void main(String[] arg...

纳兰青华的博客 4044

无法从静态上下文中引用非静态变量

编译错误显示为:无法从静态上下文中引用非静态变量k 代码如下: // 2012/3/9 16:57:08 public class hitest {   int k = 99999;  public static void main(String args[]) {  System.out.println("Hellow Java");

作者:yytry8 2333

JAVA学习【2】错误:无法从静态上下文中引用非静态

编程时遇到“错误:无法从静态上下文中引用非静态”。

tiandawangliang的专栏 1万+

java: 无法从静态上下文中引用非静态 方法

经过了解知道了因为静态类的方法可以在没有创建实例对象时直接调用,而非静态的成员变量是一个对象属性,只有在对象存在时才可以引用。因此,如果在对象未创建实例时,我们在静态方法中调用了非静态成员方法自然就是非法的。经典灯下黑,手搓代码的时候下意识选择大写,排查了半天就是没看这个,也是我眼不好使了,引用错了,记录下来希望提醒自己。静态方法可以不用创建对象就调用,非静态方法必须有了实例对象才能调用。因此在静态方法中引用非静态方法是不可能的。这是搜到其他博主的标准答案,但是我的解决很离谱。一、为什么不能引用?

asd147852as的博客 6723

无法从静态上下文中引用非静态变量,非静态方法

java初学者经常会遇到的问题:无法从静态上下文中引用非静态变量 non-static variable mainframe cannot be referenced from a static context 即在静态方法中不能引用非静态变量 为什么? 因为我们知道静态的方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对

afa的专栏 8万+
上一篇: java 初学 成员变量和局部变量的区别
下一篇: postMessage和onmessage Cross-document messaging
wen_binObject
博客等级 码龄10年 51粉丝 63原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值