简单问题

sir_marlow 2012-02-29 08:56:59
在main方法外声明并创建一个字符串(比如String s = "Hello World"),再声明并创建一个参数类型是字符串的方法比如 int aaa(String s),然后在main方法中创建对象并调用该方法(比如 e.aaa(s), e为创建的对象),这时编译器警告说"cannot make a static reference to the non-static field s",这是什么问题?我不需要解决方法,只问原理
...全文
148 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sir_marlow 的回复:]
编译器报错了
[/Quote]

当然报错。。。问题是一样的啊,main不能直接访问成员属性。


我的意思是:如果你认为应该能执行的话,那么你觉得应该咋执行?
sir_marlow 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ldh911 的回复:]

问题的焦点不是是否静态,而是是否这个属性存在以及如何被访问。

而成员属性必须在对象创建(new)的时候才能完成初始化,而且你必须经由该对象去访问这个成员属性,类似于:ojb.attribute,因此main函数根本无法直接访问这个成员属性,对不?

而main函数所定义的变量(也就是局部变量),第一它存在了,第二它确实可被直接访问。


你再换个角度思考这个问题:
Java c……
[/Quote]

编译器报错了
MiceRice 2012-02-29
  • 打赏
  • 举报
回复
问题的焦点不是是否静态,而是是否这个属性存在以及如何被访问。

而成员属性必须在对象创建(new)的时候才能完成初始化,而且你必须经由该对象去访问这个成员属性,类似于:ojb.attribute,因此main函数根本无法直接访问这个成员属性,对不?

而main函数所定义的变量(也就是局部变量),第一它存在了,第二它确实可被直接访问。


你再换个角度思考这个问题:

public class Test {
public String s;

public Test(String news) {
this.s = news;
}

public static void main(String[] args) {
Test a = new Test("AAA");
Test b = new Test("BBB");
System.out.println(s); //请问系统应该显示啥?
}
}
dxqrr 2012-02-29
  • 打赏
  • 举报
回复
静态方法不能调用非静态变量啊
sir_marlow 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ldh911 的回复:]

原理?原理就是 main函数是静态函数,只能直接访问static属性,而不能直接访问成员属性(因为没有实例化的对象,该成员属性就根本不存在)。
[/Quote]

那么在main方法内部声明并创建对象为什么就可以了?难道在静态函数内创建的对象就是静态属性?
MiceRice 2012-02-29
  • 打赏
  • 举报
回复
原理?原理就是 main函数是静态函数,只能直接访问static属性,而不能直接访问成员属性(因为没有实例化的对象,该成员属性就根本不存在)。
DriftKing 2012-02-29
  • 打赏
  • 举报
回复
无法在静态方法中引用非静态变量
将S改成 static就可以。
内容概要:本文围绕使用Koopman理论识别机器人动力学的非线性系统展开,提出了一种基于数据驱动的方法,通过Koopman算子将复杂的非线性动力学系统映射到高维线性空间,从而实现对机器人系统动态行为的有效建模与辨识。文中系统阐述了Koopman理论的核心思想、观测函数的设计原则以及动态模式分解(DMD)算法在系统辨识中的具体应用,并结合Matlab代码实现了完整的建模与仿真流程。通过仿真实验验证了该方法在处理强非线性机器人系统时的高精度与鲁棒性,展示了其在模型降阶、状态预测、控制器设计等方面的重要应用价值。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事机器人控制、非线性系统建模、数据驱动控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①实现对复杂机器人非线性动力学系统的精确建模与辨识;②为先进控制器(如模型预测控制MPC、线性二次型调节器LQR等)提供高质量的线性化模型支撑;③推动数据驱动方法在实际机电系统与智能机器人中的工程化应用。; 阅读建议:读者应结合所提供的Matlab代码进行动手实践,深入理解Koopman观测函数构造、DMD算法实现及参数调优过程,建议在不同类型的非线性系统上复现并改进算法,以全面提升理论认知与实际应用能力。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧