package helloworld;
public class Helloworld {
public static void main(String[] args) {
private int n;
n = 25;
System.out.println("hi"+n);
}
}
我在运行时遇到此错误:这是由私有关键字引起的。如果我删除它是有效的。感谢
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.ClassFormatError: Method "<error>" in class helloworld/Helloworld has illegal signature "(Ljava/lang/Object;)Lprintln;"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
/Users/rafi/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
答案 0 :(得分:2)
import语句只能用于指定包中的类。但是java.lang是一个包。编译器隐式导入java.lang中的类,可以从代码中省略它。
答案 1 :(得分:0)
一些基本理论:
Instance
:以简单的方式,可以将其解释为您班级的所有功能。
Static variable
:属于类
Instance variable
:属于实例的变量
Local variable
:属于特定方法的变量
现在重要的事情
该类的每个实例都有自己的所有实例变量的副本,但所有实例变量只共享一个静态变量副本 实例。 其他静态方法也属于该类,因此不能更改任何实例变量的值 不知道实例。
所以我们可以说 静态方法可以直接调用其他静态方法 实例方法可以直接调用静态方法 实例方法可以直接调用其他实例方法 但 对于静态方法来调用任何实例方法或使用任何实例变量,我们需要一个实例 可以将此实例传递给方法,也可以使用新实例。
要创建班级的新实例,请使用“new”关键字
<class-name> <instance-name> = new <class-name>();
像
Test test = new Test();
这里test是实例的名称
进一步回答你的问题 变量可以在方法内声明,但它们只能是方法的本地变量。 它们不会被视为实例变量。
本地变量不能标记为私有,受保护或公开 它们是声明它们的方法或块的本地,并且在它之外的任何地方都不可见。
您收到错误是因为您已将本地变量标记为私有
public class Test {
private static int m;// this is a static variable
private int n;// this is an instance variable
public static void main(String[] args) throws Exception {
printM();//no need for any instance as printM() is static
// since 'n' is an instance variable it cannot be used without an instance inside a static method
// creating instance
Test test = new Test();
test.printN();//instance is need to call printN()
}
private static void printM() {
m = 25;
System.out.println("hi from static method 'm' is: " + m);
}
private void printN() {
n = 15;
System.out.println("hi from instance method 'n' is: " + n);
}
}
答案 2 :(得分:-2)
如何将n声明为字符串然后打印出来?