为什么这个基本java程序没有编译
编译此程序时出现错误:为什么这个基本java程序没有编译,java,arrays,methods,Java,Arrays,Methods,编译此程序时出现错误: class ArraysInMethods { public static void main(String[] args) { int array[]={1,6,2,5,3,8,9,0,5}; Add5(array); for(int y : array){ System.out.println(y); } } public void Add5(int x[]
class ArraysInMethods {
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
现在,将Add5方法设置为静态:
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
基本上,这意味着只能从静态方法中调用静态方法,而Java中的主方法是静态的
编辑:
你为什么要这么做?因为类的静态成员不存在类的实例,而非静态成员不存在。如果您在不创建类的实例的情况下调用静态方法,而该类的实例将尝试调用非静态方法,那么它将无法工作,因为没有类的实例,非静态方法就不存在。静态方法可以在java中调用静态方法
Add5不是静态方法,所以编译时异常出现
package com.org.test; class ArraysInMethods {
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
静态方法和变量位于类级别,可以通过引用类名来调用,而非静态方法位于对象级别,可以使用类的对象来调用 你可以做两件事 将方法更改为static 类排列方法{
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
new ArraysInMethods().Add5(array);
for(int y : array){
System.out.println(y);
}
}
public void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
创建类的对象并使用该对象调用类的方法
类排列方法{
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
new ArraysInMethods().Add5(array);
for(int y : array){
System.out.println(y);
}
}
public void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
是的,它工作了,谢谢你的回复,但是为什么我们必须在这里使用static呢?编译器错误消息中对此进行了解释,但我会在我的答案中添加解释。给我5分钟。好的,请给我解释一下。我会非常感谢你的。提前谢谢,对不起!我是个新手这是我的第一个问题。我不知道那个按钮,所以误按了一下。