java中的动态方法是需要实例化才能调用的。那为什么,变量也能调用方法。

作者&投稿:郜味 (若有异议请与网页底部的电邮联系)
java中为什么实例方法可以调用实例变量也可以调用类变量,而类方法只能调用类变量~

实例方法随着实例的产生而产生,随着实例的消亡而消亡。
并且实例方法是存储在内存中的堆中的,每一个实例,就在内存中存在一个该方法的副本
类方法是static的,和实例没有关系,存储在栈中,多个实例共享一个类方法。
类如果直接调用方法,由于在内存中没有初始化,内存中不存在实例方法,所以类不能调用实例方法。

对于补充的回答:
class A调用class B
class A{
public void funA(){}
}
class B{
public void funB(){
A a=new A();
a.funA();//调用A的方法
}
}
方法的初始化的时候,程序自动会给方法分配内存,不用像成员变量那样还要赋初值。所以方法初始化,楼主可以不用管。呵呵

因为你那是静态的,静态的不需要实例化就可以访问了

修正下你说的问题,首先,一个对下没有实实例化时,可以调用其静态方法或静态变量(也叫类变量),所谓静态变量或静态方法就是使用static修士过后的变量或方法。否则编译器都通不过的。

但是对于实例变量或实例方法,则必须实例化对象之后才能通过对象调用。

String a=null,告诉解析器字符串a是null的,JVM没有为之分配内存地址,所以不能通过a调用a里面的任何属性或者方法,包括类变量或类方法(静态变量或静态方法),否则在运行期间就会出现空指针异常(编译是能正常通过的)。

String a=new String();
这句话告诉JVM要马上为变量a分配存储空间,这样,a就能调用属于它的任何方法。

1--首先string也是一个类,是JAVA中已经事先定义好的,这样就方便我们开发者直接使用(你知道了这点我想你大概应该清楚了)
2--每当我们创建一个对象的时候会在栈内存(或堆内存中开辟空间)
3--string a时,我们就在栈内存中开辟了一个空间,空间的名字就叫a,此时不会在栈内存中开辟空间。
4--string a=null和string a是一样的,当我们用的时候由于没有初始化,所以都不能用的,因为没有a没有指向任何地址,引用
5--string a=new string()有点不一样,不但在内存中开辟了一个空间,空间名为a,还在堆内存总开辟了一段空间,里面存的是你给a赋的值,并会将此空间的地址给a空间,那么a空间中存储的是堆中那个空间的地址。这时a已经有所指向了。

注:你要理解string也是一种类

希望我的回答对你有用

如果是把String a定义成“成员变量”,就是说在方法外部定义的,jvm会自动给这个变量初始化成a=null;a=null是已经实例化了的。当用null的a去调用String中的方法时会报空指针异常,如System.out.println(a.length());//报nullpointexception异常

而把String a定义在方法体内,如main方法中定义了String a2;然后不给a2赋值初始化,马上写
System.out.println(a2.length());//此时,不是报空指针异常,而是编译都不通过(即不符合语法要求),因为此时a2没有初始化化,不能调用方法!a则是已经初始化了的,null值也是一个初始值。

至于null跟 new String()的区别,很好理解的:
a=null; 是说:a还没成形,内存中还没有这个对象;
a=new String(); 是说,a已经成了一个对象,在内存中分配了一个空间给a,只是此时这个空间上时一张白纸,还没有放东西到这快空间上;
简言之:(String比喻成一个碗)
a=null; 还没有这个碗;
a=new String(); 有这个碗,但碗里没有饭菜
a=new String("abcd"); 有这个碗,而且碗里有饭菜。

不知这么说你明不明白。。。仅供参考。

1、类在类加载的时候他的静态方法和静态属性会被初始化,就是说就算这个类没有新建对象,他的静态方法和静态属性也是存在的。
2、Object a=null;声明了一个Object类型的引用(相当于一个指针),但是它没有指向任何对象。
3、new Object();这一句会在内存中根据Object类构建出一个Object类的对象,然后将这个对象的内存地址返回。就是说Object a=new Object();这个式子的意思是:赋值号右边的式子返回了一个Object对象的内存地址,然后通过赋值号赋给了a。
4、当声明Object a=null;时,a就算没有指向对象,但是Object这个类已经被加载的话,他的静态变量和方法就已被初始化了,所以可以调用。
5、关于String a=“abc”; 和String a=new String(“abc”);的区别:因为字符串对象是一个非常非常常用的对象,所以jvm会开辟一片公共内存来保存字符串。String a="abc";这一句会直接在公共区创建字符串“abc”,然后让a指向公共区的“abc”。String a=new String("abc");也会在公共数据区新建一个"abc",但是还会另外开辟一片空间保存一个"abc"字符串,然后将这个另外开辟的空间的地址返回给a,即创建了两个"abc"。另外需要注意的是,当String a="abc"; String b=“abc”;时,因为"abc"在公共区在第一句String a="abc";已经创建过,所以在第二句 String b=“abc”;时,不会创建新的"abc",而是将“abc”地址直接返回,所以在a==b这个判断式,会返回true。


ava中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop...
有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用thread的run方法,所以,我们往往使用Thread子类,即new SubThread()。第二种调用runnable的run方法。 有两种实现方法,分别是继承Thread类与实现Runnable接口用synchronized关键字修饰同步方法反对使用stop(),是因为它不安全。它会解除由线程获...

JAVA动态代理设计原理及如何实现
通过实现 InvocationHandler 接口创建自己的调用处理器;通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类;通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型;通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。代理类实例的一些特点 每个实...

java中map的常用遍历方法有哪些?
ava中map的常用遍历的具体方法有:一 、在for-each循环中使用entries来遍历。这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。二、 在for-each循环中遍历keys或values。如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。三、使用Iterator遍历。

超声AVA是什么意思?
超声AVA的检查方法主要有两种,一种是经食道超声检查(TEE),另一种是经股动脉超声检查(TAVI)。TEE是一种非侵入性检查方法,通过将超声探头插入食道来获取更清晰的心脏图像,可以准确评估心脏和主动脉前后隔的狭窄程度和血流动力学状态。TAVI则需要将导管经过大腿动脉插入心脏,通过超声波对心脏进行检查,...

ava闪电是什么意思?
AVA闪电采用的共识机制和节点选择方法为以太坊网络提供了更快的交易确认速度,因此在许多场景中都可以取代传统的以太坊网络。由此,AVA闪电的出现对于以太坊网络的发展起到了重要的促进作用。此外,在其他一些区块链项目中也可以看到AVA闪电运用的身影,从而进一步推动了整个区块链技术的发展。AVA闪电对于加密...

AVA拯救伊娃怎么通关(第三关的)
AVA拯救伊娃第三关的通关方法是:充分利用场景中的掩体和障碍物来躲避敌人的火力,同时保持移动和准确的射击,以最大程度地减少受到伤害的可能性。在AVA拯救伊娃的第三关中,敌人火力密集,地形复杂,因此玩家需要采取一系列策略来确保自己的生存和任务的完成。首先,要充分利用场景中的掩体和障碍物,如墙壁...

ava的大方向是什么
ava的大方向就是j2eej2ee不仅仅是socket编程,具体包括13中核心技术J2EE的核心API与组J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):方法\/步骤 1.JDBC(Java...

求AVA各兵种技能及其作用。
各瞄准。。瞄准的速度。。如开镜。。用狙击的话很明显 DSR-1装快闪用大花和列兵绝对不是一个效果。。侦察 着路。。落地掉血少。。因为呢。。有种东西叫军靴。。所以基本忽略。侦察。。就是用望远镜的时候速度变快。。哈哈,,,其实是红点会亮更长时间 各兵种什么弹药啊。。就是子弹多点。每种兵...

微信上的AVA云直播电脑上怎么播放?
在微信上观看AVA云直播时,电脑上播放的方法相对简单。首先,确保你的电脑已经安装了微信客户端,并且登录了你的微信账号。接下来,按照以下步骤操作即可:首先,在电脑上打开微信客户端,确保你已经登录了自己的微信账号。然后,找到包含AVA云直播的微信公众号或者聊天窗口。通常,直播链接会以图文消息的形式...

AVA游戏中出现的红色方框还有红色三角框代表的什么意思?
三角雷达,查动态敌情 识雷达:AVA的雷达真的可以说步入进信息化了,它的显示方面基本上能囊括进去的都囊括进去了:比如击毙敌人的位置在雷达上显示的是红色的小X,牺牲友军的位置则是白色的小X,正在交火的友军白色的方块边上会有黄框在闪烁,被友军雷达发现的敌人则会在雷达上以红色的方块来显示。

肃北蒙古族自治县18331302487: java中的动态方法是需要实例化才能调用的.那为什么,变量也能调用方法. -
肥明金抗: 1、类在类加载的时候他的静态方法和静态属性会被初始化,就是说就算这个类没有新建对象,他的静态方法和静态属性也是存在的. 2、Object a=null;声明了一个Object类型的引用(相当于一个指针),但是它没有指向任何对象. 3、new ...

肃北蒙古族自治县18331302487: java静态方法和动态方法的区别,本人初学者,要有例子的.详细的话可以给精彩. -
肥明金抗: 1.静态的方法在整个应用程序其间存储在内存中,速度快,但占用内存.class A{public static string b(){return "Hello";} }用法: A.b(); //调用方便 静态方法可以通过类名直接调用, 2.动态的方法在先声明类实例才能调用类中的方法....

肃北蒙古族自治县18331302487: 偶是一名java初学者,请问一下,如何理解静态方法和动态方法,并且如何使用?
肥明金抗: 方法中 用static修饰的方法 称为静态方法 java的工作机制简单说 我们所编写的代码 计算机是必能识别的 要通过java虚拟机的变异 转换成机器码 然后交给计算机分配内存 执行. 静态方法在编译以后 会在内存中 划出空间来存放此实例 所以 不需...

肃北蒙古族自治县18331302487: java中的动态方法和静态方法的区别 -
肥明金抗: 静态方法可以直接用类名点出来方法,而普通方法需要创建类的对象后才能调用! public class Plus1 { public static void text() { System.out.println("静态方法"); }public void text1() { System.out.println("非静态方法"); }public static ...

肃北蒙古族自治县18331302487: 在java中什么静态方法,什是非静态方法.谢谢了 -
肥明金抗: 在方法声明是使用了关键次词 static的就是静态方法,如果一个类中定义了静态方法,那么调用该方法就不需要实例化,直接用类名调用,例如:student类中定义了一个eat方法,public static void eat(){ System.out.println("eat......") } 那么我们在其他类中调用该方法就只需要这样 student.eat();就可以了.不需要 student stu = new student(); stu.eat();

肃北蒙古族自治县18331302487: java语言里 同一个类中 动态方法调用动态方法为什么不用实例化? -
肥明金抗: 1. 在一个类里面默认的方法前面是加上this.也就是编译是 本类调用本类的方法会在前面加上this.add this.sub其实相当于调用静态方法加了类名.方法名2.new DS()就是实例化了啊 已经在堆内存加载这个类的实例了 只不过只栈内存没有引用指向 你只能用一次 就被虚拟机自动回收了

肃北蒙古族自治县18331302487: java中什么时候该用static修饰方法?有什么好处或者坏处? -
肥明金抗: 当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static.用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用 比如 person这个类里面有一个方法public static add(){} 那么可以直接用person类调用 person.add();当然也可以用下面的方法先出一个对象在调用也是可以 如果这个方法前面没有static 比如 public add(){} 那么先要person p=new person(); 然后用p.add(); 类加载器在加载这个类的时候就已经实例化了这个类.坏处:初始化加载,比较占内存,所以不经常用的方法,不建议加此关键字.

肃北蒙古族自治县18331302487: 在JAVA中, 静态方法和一般方法有什么区别? -
肥明金抗: 静态方法在JVM刚加载的时候就编译过了...在程序的运行过程中随时可以调用...不需要去实例化某个对象然后再去调用...可以直接用类名去调用...不过你想一下,在JVM刚加载的进修就编译过了..也就是说它一直存在着...也就是说它一直占用这内...

肃北蒙古族自治县18331302487: JAVA方法调用
肥明金抗: 不是的,静态方法是可以直接调用,而非静态方法需要定义这个类的对象,通过对象名调用. 静态方法实例: public class Demo {public static long fun(){ System.out.println("helloworld"); } public static void main(String args[]){ fun(); } } 在这个...

肃北蒙古族自治县18331302487: java中静态方法不能调用动态方法,那么在一个包含有main的类中如何调用同一个类中的实例方法?? -
肥明金抗: 静态方法,只能调用静态的方法,或实例的方法functionA不是静态方法,当然不行了你说的没错不过可以这样:public static void main(){ new A().functionA(); //这样不会报错 }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网