java非静态方法可以调用静态变量吗?

问题描述

java非静态方法可以调用静态变量吗?

初学java,看到书上的编纂,可能出现了错误。

第二版(中文版)284页中原话:
问:非静态的方法可以存取静态的变量吗?
回答:当然可以。非静态方法不可以调用该类静态的方法或静态的变量。

实在是头大,网上查询都说非静态方法可以调用静态的方法和变量。但我自己试了一下
class Duck{

private int size;
static int duckCount=0;

public Duck(){
    duckCount++;
}

}

public class DuckTest{
public static void main(String[] args){
System.out.println(Duck.duckCount);

    Duck a=new Duck();
    System.out.println(Duck.duckCount);
}

}
main函数前,不加static是会报错,无法通过的。一定要加static。
那就感觉一定要静态方法才能调用静态变量的感觉,和网上的说法又有冲突。

我知道静态方法是不可以调用非静态的变量和非静态方法的。
对于非静态方法现在混乱了。求解答

解决方案

可以调用

大哥 main函数必须静态呀 不然你运行程序的时候 同一个class里面有几个main对象怎么办 那系统不懵了吗?

静态的意思是只有一个对象,所以不存在new多个 这才符合main函数的要求嘛

别混淆了

你重新写一个不是main的方法 不是静态的也能调用它。

这里必须静态使用该方法是main方法和静态变量没关系

解决方案二:

可以的,用类名.方法名就可以。

解决方案三:

前提是这个方法是public的(类的外部)

静态方法也可以访问非静态方法,只是需要先用new实例化,用对象名.方法名就可以。

解决方案四:

静态变量直接访问就行了,只要是public的你就可以在任何地方使用 类名.xxx访问,如果是保护的,那就在内部类中使用

解决方案五:

main函数的写法是固定的。
调用静态方法可以直接使用 类名.静态方法名 的形式。

解决方案六:

可以的,静态变量访问类名.变量名

解决方案七:

可以啊,用类名调用静态变量

解决方案八:

静态变量访问类名.变量名

解决方案九:

需要懂得类加载,和实例化。静态的在实例化的时候已经加载了。非静态的数据只有实例化后才可以使用。

解决方案十:

Java静态变量和静态方法
java静态变量和静态方法的集成
Java中静态变量与静态方法的继承
----------------------

时间: 2016-09-20

java非静态方法可以调用静态变量吗?的相关文章

java 中类的静态方法怎么调用成员变量

问题描述 java 中类的静态方法怎么调用成员变量 除了把成员加static修饰 还有别的办法吗 总是在这纠结啦 能说说他们的原理吗 谢谢啦! 解决方案 static是类级别方法 也就是可以 类名.方法调用不加static是实例级别的 也就是必须 先有实例(对象) 才能调用其方法如new A().test()除了把成员加static修饰 还有别的办法吗 可以new个对象再调用解决方案二:static修饰的在加载时是先于非静态的加载,也就是如果在static中如果调用了非静态的方法或变量会报错,因

groovy脚本中(非类中)可以使用静态变量吗

问题描述 groovy脚本中(非类中)可以使用静态变量吗 如问题: 在一个groovy脚本中以下代码: static int a = 1; //现在这样是报错 // 业务逻辑 // xxxx a++: 我只希望a初始化一次,注意是在脚本中,不是在定义class中 换句话说,我是想在脚本groovy.lang.Script子类里放静态变量

JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)

调用非静态方法首先就是调用的静态方法得到要调用的java的类对象然后通过调用 minfo.env->CallVoidMethod(activityObj, minfo.methodID);方法把对象和要调用的方法以及参数(如果有 )传递个java类对象中的非静态方法: java类: // c++中調用的方法     public static Object rtnActivity() {         System.out.println("----------rtnActivity&q

Java 中的 static 使用之静态变量·静态方法·静态初始化块

Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.静态成员可以使用类名直接访问,也可以使用对象名进行访问.当然,鉴于他作用的特殊性更推荐用类名访问~~ 使用 static 可以修饰变量.方法和

JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量

       转载请注明出处:http://blog.csdn.net/xyang81/article/details/42836783        在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过[类名.变量名]来访问.实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修

static java-java中静态方法不能调用非静态方法

问题描述 java中静态方法不能调用非静态方法 静态方法中不能调用非静态方法,那么在静态方法中通过实例化一个非静态的对象, 来实现对非静态方法的调用应该怎么理解 public class test1{ public static void main(string []args){//静态的方法 test2 t=new test2(); t.do;//调用非静态的方法 } } class test2{ void do(){} } 解决方案 静态方法中不能调用非静态方法,原因是因为静态方法没有thi

Java中static静态变量的初始化完全解析_java

静态变量初始化顺序 1.简单规则 首先先看一段最普遍的JAVA代码: public class Test { public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); } } class Test1

JAVA基础培训(4) 熟悉属性/变量的访问权限

和前一个教程一样,我们也建了一个子目录,用来存放不同package的类 属性分为2种, 1 类实例的属性,属于某个类的实例所有,必须通过实例访问 2 类级的静态属性,属于类和所有实例所有,可通过类或者实例都可以访问 属性的权限分为 1 private 私有属性 2 [default] 默认属性,也就是啥都不写的那种,运行同一个package的访问 3 protected 被保护的属性,允许同一个package的访问,以及子类访问 4 public 公开的属性,可以被任何类访问 先看主类 less

static-为什么静态变量在构造方法里面使用不报错?

问题描述 为什么静态变量在构造方法里面使用不报错? public class test { public static int staticVar = 0; public int instanceVar = 0; public test() { staticVar++; instanceVar++; System.out.println("staticVar=" + staticVar + ",instanceVar=" + instanceVar); } } 不是