Java中java调用main函数数只能调用同类中的静态方法?

→ 为什么主函数也是静态函数却可以调用静态的和非静态的成员变量和方法?
选取类型:
观点标题:
观点内容:(不支持HTML)
请以客观、真实地作出评论,并注意语言文明;
观点发表后不能作出更改;
您是本帖的第 3204 个阅读者
为什么主函数也是静态函数却可以调用静态的和非静态的成员变量和方法?
等级:小学生
为什么主函数也是静态函数却可以调用静态的和非静态的成员变量和方法?
疑问:安Beef老师所讲的“静态方法函数只能调用静态的成员变量和方法”,而main主函数也是静态函数方法,但在主函数内却可以调用静态的和非静态的成员变量和成员方法,何解?壁虎老师和同学们要多多解疑,谢了。
等级:大专生
经验:3140
金钱:1690
疑问:安Beef老师所讲的“静态方法函数只能调用静态的成员变量和方法”,而main主函数也是静态函数方法,但在主函数内却可以调用静态的和非静态的成员变量和成员方法,何解?壁虎老师和同学们要多多解疑,谢了。main是调用不了非静态的成员变量和成员方法的,除非在构造函数中可以调用,因为构造函数是非静态的.
等级:学前班
还不懂啊。我还得继续学啊。
等级:小学生
疑问:按Beef老师所讲的“静态方法函数只能调用静态的成员变量和方法”,而main主函数也是静态函数方法,但在主函数内却可以调用静态的和非静态的成员变量和成员方法,何解?壁虎老师和同学们要多多解疑,谢了。原来问题的答案是:Beef老师所讲的“静态方法函数只能调用静态的成员变量和方法”,这个是狭义的相对的讲法,并不是绝对的。在特定的情况下,静态方法函数是可以调用静态的成员变量和方法的,这个特定的情况就是:在静态方法函数内对非静态的类用new新建对象进行调用,用“新建对象名.成员变量名”和“新建对象名.方法名”进行调用,所以main主函数也是静态函数方法,但在主函数内就可以调用静态的和非静态的成员变量和成员方法。Beef老师所讲的“静态方法函数只能调用静态的成员变量和方法”,并不是绝对的,是相对的。是不是,Beef老师老师,你也许口误了。
等级:大专生
经验:3140
金钱:1690
楼主可能是语言理解能力有问题,老师并没有讲错总之,&&& 静态只能调用静态&&& 非静态可以调用静态和非静态
等级:中学生
经验:2205
new对象的原因之一,就是想用类的方法,但方法不是静态的。只要类有构造,就可以用new对象的方法,使用类的方法。至于用的位置在哪,好像没限制(包括楼主说的静态方法内)------------感觉,我也被绕晕了
等级:幼儿园
林子川:楼主可能是语言理解能力有问题,老师并没有讲错总之,&&& 静态只能调用静态& 林子川这句:应改为“静态只能直接调用静态,通过NEW方法也能间接调用非静态”&&& 非静态可以调用静态和非静态&
本论坛言论纯属发表者个人意见,与本站立场无关,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! 粤ICP备号
Copyright © 2007
Powered By
页面执行时间 0.11328 秒, 4 次数据查询一个方法没有用static去修饰,在main方法里面就不能调用问题。【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:671,145贴子:
一个方法没有用static去修饰,在main方法里面就不能调用问题。收藏
如果非要调用的话,为什么得new一个对象出来才能使用这方法。
java多少钱?万和专注it教育24年,优秀的师资团队,雄厚的教学环境,赢得数万学子的好评,万和24年不开分支机构,只为专注教学品质,传承万和不朽品牌!
比如public class
Tjj{ public static void main(String [] args){
我的main方法里面的run会编译出错,但是public class Tjj{public static void main(String [] args){//这样就不会出错了,为什么newTjj.run();}run(){ }}
只有静态方法才能被类来使用,不然只能由对象来使用。
new Tjj.run();是隐含的定义的没有具体命名的对象
我觉得会不会是你先用run()再定义的缘故,你把run()方法的定义放在main之前试试啊
new Tjj.run();是因为这个对象就是在 main 方法中生成的所以可以调用这个对象的非静态方法
用static修饰的属性或者方法 是全局的,调用的时候是通过 (类名.属性 || 类名.方法),没有用static修饰的呢? 就是局部的比如:public class User{private Spublic void show(){
//该方法有效范围是这个User类}}如果想调用这个方法的话,必须有这个User类的对象User user = new User()。通过对象调用方法
user.show();所以。。。。。
你用了匿名对象
不然这个关键字放着好看的吗
java编程,0基础 0首付,企业项目实战,全程总监授课,9000元学费优惠火爆报名中!
run方法前面要加void好吗?new Tjj调用run方法的时候要这么写,new Tjj().run()
还有主函数是静态的,想直接调用某个成员也只能用,该成员也必须是静态。不是静态想调用就一定要创建对象。
因为run()是成员方法也就是具体某个对象的方法你对象都没有是没办法使用的但是你使用static修饰以后该方法就上升到类方法了类方法是可以直接通过类名调用的而且在同一个类中还可以省略类名于是就可以直接使用run()以上
看一下Java的类和对象
明明不依赖对象就能调,你为什么非要不加static呢
Java【类加载】除了一些保证程序运行的基本类,在JVM使用到相关类时,内存才对相关类进行加载。【方法区】方法区用于存储静态变量、常量池(编译期产生的常量)、类数据,即各线程共享的区域。静态方法和非静态方法都是加载到方法区的,只不过调用非静态方法时要先实例化一个对象。调用非静态方法即为“&实例对像&.方法”,先在堆中找到实例对象,再由实例对象的虚拟方法表找到存储于方法区中的非静态方法。调用静态方法即为“&类名&.方法”,先在方法区中找到对应的类,再由类信息找到存储于方法区中的静态方法。特注:以上一段笔录需验证,但从java语法结构和内存利用率来讲,可信度并不算太低。【栈】先进后出First In Last Out(FILO)、后进先出Last In First Out(LIFO)方法栈帧:由局部变量区、操作数栈、帧数据区组成,其中局部变量区和操作数栈的大小依据方法区中的类数据确定,每个方法在调 用时都会同时创建该方法的栈帧(即方法入栈)。............局部变量区:数组模式,元素长度为一个(int)字长32位,存储引用变量指向的地址、............基本型变量值(包括返回地址),通过数
组索引来访问,对实例(非静态)方法来说方............法栈帧局部变量区第一个值为该实例的引用(即this —— 间接实现
全局变量)。............操作数栈:
栈模式,存储计算时临时数据(计算所需数据及计算结果)。............*帧数据区: 用于常量池解析、正常方法返回、异常派发机制。....................................常量池解析:
通过常量池指针实现。....................................正常方法返回:return正常结束,则当前栈帧从Java栈中弹出,返回....................................值压入主调方法的操作数栈。....................................异常派发机制:发现异常时,立即抛出异常并执行相关catch,如无....................................相关catch,则帧数据区终止当前被调方法,返回主调方法的栈帧,....................................主调方法再依据上下文重新抛出异常。系统栈:整个程序所调用的所有方法栈按调用次序链接成一个整体栈就是程序所用到的系统栈,每个方法栈为该系统栈的一个栈帧。线程栈:一个线程的系统栈即为该线程的线程栈。ESP(Extended Stack Pointer):栈顶指针寄存器(栈指针),指向栈顶,即下一个入栈活动的地址(压/出栈入口)。EBP(Extended Base Pointer): 栈底指针寄存器(帧指针),指向帧头,即该栈帧第一个入栈元素的地址。小注:栈底指整个系统栈栈底,帧头指系统栈中当前方法栈帧的底部(开头部位)。系统栈中,只有栈顶的栈帧是有效的,称为当前栈帧,当前栈帧关联的方法称为当前方法。特注:【堆】被所有线程共享的一块内存区域,JVM启动时创建,主要用于存放对象实例、数组等引用变量的最终值。堆是垃圾收集器管理的主要区域。【程序计数器】指向当前线程所执行程序的执行位置。多线程情况下,每个线程都有其独立的程序计数器,以确保线程切换后能恢复到正确的执行位置。
这是面向对象的设计思想,学C的刚开始可能无法理解
登录百度帐号推荐应用

我要回帖

更多关于 调用main函数 的文章

 

随机推荐