Что такое ошибка «не-статического метода» и как «это» работает?

У меня есть пара ЧРЕЗВЫЧАЙНО основных вопросов по Java, которые я хотел бы, наконец, понять раз и навсегда. У меня есть следующий короткий фрагмент кода:

public class VeryBasicJava{
    public static void main(String[] args){
        int x = 3;
        int y = 4;
        swapMe(x, y);
    }
    private void swapMe(int a, int b){
        int a;
        int b;
        int tmp = a;
        this.a = b;
        this.b = a;
    }
}

Когда я компилирую, я получаю ужасную ошибку "не-статический метод swapMe(int,int)не может быть указан из статического контекста". Кроме того, я получаю «a уже определено в swapMe(int,int)» и «b уже определено в swapMe(int,int)»

. Что мне нужно, чтобы, наконец, пройти через мой толстый череп, ошибка "не-статического метода", как (почему)она возникает и как ее избежать.

Кроме того, я исходил из того, что вы можете делать то, что я пытаюсь сделать, с моими переменными «a» и «b» в методе «swapMe». Я подумал, что могу передать «a» и «b», но также создать новые переменные «a» и «b» и сослаться на них с помощью ключевого слова «this».

Я знаю, что это очень просто, но эти две «проблемы» являются двумя основными камнями преткновения, которые у меня есть с Java, и по какой-то причине я не могу их правильно изучить.

Спасибо всем, что нашли время, чтобы прочитать это. Хорошего дня.

7
задан Reinstate Monica 20 March 2012 в 16:34
поделиться