class MergeSort {
// Merge two subarrays L and M into arr
void merge(int arr[], int p, int q, int r) {
}
// Divide the array into two subarrays, sort them and merge them
void mergeSort(int arr[], int l, int r) {
}
// Print the array
static void printArray(int arr[]) {
}
// Driver program
public static void main(String args[]) {
int arr[] = { 6, 5, 12, 10, 9, 1 };
MergeSort ob = new MergeSort();
ob.mergeSort(arr, 0, arr.length - 1);
System.out.println("Sorted array:");
printArray(arr);
}
}
Я совершенно новичок в java, я начал его с сегодняшнего дня, но я знаю основы концепций ООП. мой вопрос Почему мы создаем экземпляр (ob) MergeSort в void main? main метод уже присутствует внутри класса MergeSort, он может напрямую обращаться к функции mergeSort, верно? и почему мы не используем созданный объект MergeSort для вызова printArray(обр), мы можем напрямую вызывать printArray, так почему бы не использовать метод mergeSort.
Также, пожалуйста, предложите мне несколько источников для лучшего изучения Java, если они у вас есть.
Спасибо за помощь.
it can directly access the function mergeSort right ?
Нет, не может, потому что mergeSort
не объявлена как статическая функция, а это значит, что вам нужен экземпляр MergeSort
для ее вызова. Вот почему вы можете вызывать printArray
, потому что он является static, что означает, что вам не нужен экземпляр окружающего класса для его вызова.
Дополнительная информация о статических членах и методах: https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html.
Хорошо :), Спасибо за вашу помощь и ресурс.