java,,是不是只有类才能调用静态方法??对象能调用静态方法吗,能举个实例吗?

作者&投稿:刁怪 (若有异议请与网页底部的电邮联系)
Java中可以直接调用类中静态方法,不用实例化么,详解!原理~

好吧,我来试试看,看答案能不能够让你满意。
先通俗的分析下,我们把类看作是一个房子。房子里面有家具,桌椅板凳之类的,房子里面还有人。
房子里面所有的人都应该是共有一套家具的。也就是说,这些家具是唯一的,如果某个家具坏了,那么大家都用不了。
我们再看一看定义,java的静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。非静态变量叫做实例变量,它开始于类的实例的创建,结束语类的实例的消亡。静态变量被所有实例所共享。也就是如上面的例子,座椅板凳是类变量,它们是在房子被建好了之后就被添加放置进来,而且基本都是唯一的。人就相当于实例,每个人都能用这些家具,但是如果家具一旦损坏,那就是坏了,或者你把某一个家具搬走,那么所有的人都用不了这个家具,房子里也不存在这个家具了。
但是房子里可以进很多人,可以进张三,也可以进李四。所以这些人就是类的实例对象,他们身上穿的衣服就可以叫做实例变量。
那么在内存之中又是如何的呢?当一个类被创建并初始化后,内存中会有两个区域,栈区和堆区。栈中主要存放的是引用变量,堆中主要存放的是真实的被实例化后的类。栈中的引用变量会指向堆中的真实对象地址。比如A a=new A(); a这个变量就会在栈中,实际被new出来的类A的对象会放在堆中,a指向实际被new出来的A对象。
如果一个类中有静态变量的话,程序首先会把该静态变量加载进内存中,也就是在堆中开辟一个区域专门存放。以后不管你new多少个类的对象,该静态变量永远都是在那里的。也就是说,静态变量在类的初始化一次后,系统就不会为该变量开辟新的内存空间。而每new一个类的对象,系统就会重新在
堆内存中开辟一个新空间来存放该类的实例对象,并且栈中也会有一个新的引用变量去指向它。
静态方法也是类似,但是有一点要强调,静态方法只中不能调用非静态方法。因为被static修饰的方法会首先被Classloader对象先加载进内存,而这个时候可能其它的非静态方法或者变量还没有被加载进来。就好比我现在想做包子,现在面粉被static修饰,首先已经拿到你身边,可是因为包子馅不是static修饰的,所以可能包子馅儿还没运过来,你说怎么做的出包子呢。
被static修饰过的都是随着类的初始化后就产生了,在堆内存中都有一块专门的区域来存放,所以只需要类名点方法名或者变量名即可。而非静态的就必须通过类的对象去调相应的。就像是你想要红色的衣服,你必须是从穿红色的衣服的人的身上拿过来才行,所以你必须找到穿红色衣服的人,也就是类的实例对象,而你如果要去找一个桌子,而桌子就在房间里摆着,你只要进到房间里直接走过去拿来就可以了~~

java本类的静态方法,直接使用静态的方法名传入参数就可以了,如果是其他类的,权限修饰符必须是public否者无法调用,调用方法是 其他类的类名 . 方法名(参数)

既然类都能调用,那当然实例也可以调用。就拿下面这个例子,我定义一个人类,它有一个方法say(),代表所有人都能说话,测试的时候可以直接通过类名调用。然后我创建两个人一个男人,一个女人,理所当然他们也能说话,也就是通过实例去调用方法。

public class Person{
    public static void say(){
        System.out.println("hello");
    }
    public static void main(String[] args) {
        Person.say();
        Person man=  new Person();
        man.say();
        Person woman=  new Person();
        woman.say();
    }
}
//运行结果
hello
hello
hello


能呀


public class A{
   public static void show(){
      System.out.println("a");
   }
}

调用的时候
A a = new A();
a.show();


public class Student {
    public String name; //名字
    public Integer age; //年龄
    public static String nickName; //别名
    public Student(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    //实例方法
    public String getName(){
        return this.name;
    }
    //类方法
    public static  String getNickName(){
        return nickName;
    }
    public static void main(String[] args) throws Exception {
        Student s = new Student("张三", 10);

        s.getNickName(); //对象调用类方法
        s.getName();  //对象调用是实例方法
        Student.getNickName(); //类调用类方法
        Student.getName();  //类调用实例方法 。报错,编译不过
    }
}


对象可以调用静态方法,但是实际上调用的过程当中与这个对象是没有关系的,还是和通过类调用一模一样的结果,这也就是为什么静态方法只能获取类静态变量的值,而不能获取非静态变量的。


我的电脑玩AVA游戏时FPS值只有30 正常吗
不正常!FPS60以下就是显卡的问题了。你可以把所有特效关了。试试。在显卡驱动里设置。游戏里也要设置!然后再试试

AVA好玩吗?
很好玩的首先 它的引擎很好 效果也很好其次 他的军衔系统、枪支系统十分完善,地图、模式较多再次 与CF相比 作弊的明显少了很多 而且BUG几乎没有接着 由于AVA与QQVIP为联合会员,所以即使是会员,也不会比普通玩家好多少然后 平衡性好 可玩性高 独特的跑步、队长、战车都是目前其他国内网游所不能及的...

AVA一进去只有黑屏和鼠标
先在下载处检测能否玩,若能,应先下载最新补丁再下载客户端。若不,则记下建议的配置,到销售处购买该配罝安装

AVA进去了就黑屏只有一个鼠标
内存,硬盘太低了吧 或者显卡不符合要求,AVA配置要求比较高的。有条件的话换一台新电脑,参考官网的配置标准 一定要拿分啊

为什么AVA里按X,9可以发出‘不要迷恋哥,哥只是一个传说’的无线电_百...
你好,在游中X9是发送挑衅无线电,不要迷恋哥,这个无线电是系统设置好了的,当你在游戏中杀死对方一名队员点X9,就能发送出,

7300le能玩AVA吗?不要求效果,只想知道能否玩?
绝对可以!

如何成为AVA会员,如果是qq会员的话是不是就已经是AVA会员了吗?一个月...
在AVA官网左边并联框,下载游戏的下面,新闻的左面,有个红new的就是战地之王VIP(附图中可看)。QQ的VIP只能给部分加成,不能总体代表战地之王的VIP。战地之王VIP是30元(不包括QQ会员、财付通等渠道打折)

Java认证难不难
需要想要考java认证的小伙伴的第一个问题可能就是,java认证难不难,我能不能通过之类的,本文章来回答你。ava认证难,并且从低级到高级只会越来越难,初级需要的只是理论知识,而到了中级和高级就需要进行上机操作了,如果没有几年的工作经验,在上机操作中很容易出错。资料拓展:Java认证分为两个级别...

ava太卡---不是配置问题!!!100分
直接原因还是因为同时在线的用户太多,造成服务器超负荷.要想解决的话,只能叫腾讯再花钱增加带宽.不过这个好像不大现实呵呵 pin值怎么看,在游戏里按TAB键,在你名字的后面是SD比分,就是你杀了多少人死了多少次.再往右,就是你的PIN了.这个我一般是40左右.90就卡的很了.FPS值怎么看,在游戏里按TAB键,...

AVA怎么安装啊,安装完桌面上只有个快捷方式,文件夹只有卸载之类的东西...
我也遇到了这个问题。打开安装文件之后会自动解压,然后进入安装步骤,一直点下一步,安装之后只剩下一个卸载程序。我是这么解决的, 先下载一个7ZIP。它是一个解压文件的程序。然后运行你那个安装程序,等弹出来安装窗口的时候不要安装。找到它解压的三个文件复制到其他盘符。建立一个文件夹,放进去。

乌兰县18875296735: java中静态方法只能被静态类调用吗 -
熊溥人参: Java中当然可以在一个类中调用另一个类的静态公有方法.首先公有方法,其他类是可以访问的.调用静态方法的语法是, 类名.方法名(参数...) 所以,比如另一个类叫OtherClass,它的静态公有方法是publicMethodA(),假设它还有返回值,是int类型,那么在你自己的类里调用的方式就是:int result = OtherClass.publicMethodA(); 另外,调用非静态方法(也叫成员方法),比如方法叫int publicMethodB(),就必须先创建这个对象再调用其方法,例如:int result2 = new OtherClass().publicMethodB();

乌兰县18875296735: java,,是不是只有类才能调用静态方法??对象能调用静态方法吗,能举个实例吗? -
熊溥人参: 既然类都能调用,那当然实例也可以调用.就拿下面这个例子,我定义一个人类,它有一个方法say(),代表所有人都能说话,测试的时候可以直接通过类名调用.然后我创建两个人一个男人,一个女人,理所当然他们也能说话,也就是通过...

乌兰县18875296735: java,静态方法为什么不能调用类成员? -
熊溥人参: 你想想,假如你用静态方法调用非静态变量,当类没有初始化的时候就可以使用静态方法,但是这个时候,非静态变量还未产生呢. 编译都会报错的 . 这么说吧,静态的对象,在内存中实默认实例化的,在加载的时候就会存放到内存中. 也就是...

乌兰县18875296735: Java中可以直接调用类中静态方法,不用实例化么,详解!原理 -
熊溥人参: 好吧,我来试试看,看答案能不能够让你满意. 先通俗的分析下,我们把类看作是一个房子.房子里面有家具,桌椅板凳之类的,房子里面还有人. 房子里面所有的人都应该是共有一套家具的.也就是说,这些家具是唯一的,如果某个家具坏...

乌兰县18875296735: JAVA的类方法和静态方法是一个东西吗 -
熊溥人参: 一些中文资料或者中文翻译资料上写的类方法和静态方法指的都是用static修饰的方法,因此是静态方法,而称之为类方法是因为调用该方法仅需要类名点方法名,比如Math.sqrt().相应的另一种方法叫实例方法,必须得创建实例之后才能访问到该方法.

乌兰县18875296735: 在java语言中,静态变量是不是不能在方法中定义?只能在类里面,方法外面定义? -
熊溥人参: 额,还是你啊. 你还是不太理解静态变量.静态的东西是类加载的时候初始化的.如果是一般方法,类加载的时候不会初始化.你想定义静态变量可以定义在静态方法里嘛.(多看看类、对象初始化时那个图) ======================= 修正下,是静态方法里面可以使用静态变量,不可以定义.静态变量一般定义在类里.不好意思.

乌兰县18875296735: java中类的某个方法是不是只能由这个类及其子类的对象才可以调用 -
熊溥人参: 不完全是,如果方法是静态方法的话,不是不需要当前类或者子类的实例就能调用

乌兰县18875296735: Java中!泛型中的静态方法是不是不用类名加方法名?还是直接通过方法名就可以调用啊!下面图片为静态 -
熊溥人参: 亲,你这里面不牵涉泛型.静态方法里只能调用本类的静态方法,所以你的toarray必须是静态才能被main调用.静态方法在其他类中可以直接通过类名.方法调用

乌兰县18875296735: java 类调用静态方法不需要实际对象存在吗,仅仅将类装载到内存中就可以了吗 -
熊溥人参: 静态方法在类加载的时候就已经存在了,第一次调用这个方法时,这个类对象就会加载如jvm中(内存),并且只会加载一次,全类公有,可以用类名加 . 访问,也可以用这个类的对象调用,当用这个对象调用该方法时,就会调用jvm事先加载好的类对象的这个方法,且这个类对象在内存中只有一个,所以无论是哪个对象调用该方法时,都会调用事先加载好的方法,故不用new 这个类的对象,直接可以用类名加 . 调用

乌兰县18875296735: java 中是不是 只有静态方法 才能调用静态的成员变量 -
熊溥人参: 应该是静态方法只能调用静态变量你想想,假如你用静态方法调用非静态变量,当类没有初始化的时候就可以使用静态方法,但是这个时候,非静态变量还未产生呢. 编译都会报错的

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