Java - Yöntemler
Java yöntemi, bir işlemi gerçekleştirmek için birlikte gruplandırılan ifadeler koleksiyonudur. System.out'u aradığınızda.println() yöntem, örneğin, sistem konsolda bir mesaj görüntülemek için aslında birkaç deyimi yürütür.
Şimdi, dönüş değerleri olan veya olmayan kendi yöntemlerinizi nasıl oluşturacağınızı, parametreli veya parametresiz bir yöntemi nasıl çağıracağınızı ve program tasarımında yöntem soyutlamasını nasıl uygulayacağınızı öğreneceksiniz.
Yöntem Oluşturma
Bir yöntemin söz dizimini açıklamak için aşağıdaki örneği göz önünde bulundurarak -
Syntax
public static int methodName(int a, int b) {
// body
}
Buraya,
public static - değiştirici
int - dönüş türü
methodName - yöntemin adı
a, b - resmi parametreler
int a, int b - parametrelerin listesi
Yöntem tanımı, bir yöntem başlığı ve bir yöntem gövdesinden oluşur. Aynısı aşağıdaki söz diziminde gösterilmektedir -
Syntax
modifier returnType nameOfMethod (Parameter List) {
// method body
}
Yukarıda gösterilen sözdizimi şunları içerir -
modifier - Yöntemin erişim türünü tanımlar ve kullanımı isteğe bağlıdır.
returnType - Yöntem bir değer döndürebilir.
nameOfMethod- Bu yöntem adıdır. Yöntem imzası, yöntem adı ve parametre listesinden oluşur.
Parameter List- Parametrelerin listesi, bir yöntemin türü, sırası ve parametrelerinin sayısıdır. Bunlar isteğe bağlıdır, yöntem sıfır parametre içerebilir.
method body - Yöntem gövdesi, yöntemin ifadelerle ne yaptığını tanımlar.
Example
İşte adı verilen yukarıda tanımlanan yöntemin kaynak kodu min(). Bu yöntem iki parametre num1 ve num2 alır ve ikisi arasındaki maksimum değeri döndürür -
/** the snippet returns the minimum between two numbers */
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
Yöntem Çağrısı
Bir yöntemi kullanmak için çağrılmalıdır. Bir yöntemin çağrılmasının iki yolu vardır, yani yöntem bir değer döndürür veya hiçbir şey döndürmez (dönüş değeri yok).
Yöntem çağırma süreci basittir. Bir program bir yöntemi çağırdığında, program kontrolü çağrılan yönteme aktarılır. Bu çağrılan yöntem, daha sonra iki koşulda arayana denetimi döndürür:
- dönüş ifadesi yürütülür.
- kapanış ayracını sonlandıran yönteme ulaşır.
Void döndüren yöntemler bir ifadeye çağrı olarak kabul edilir. Bir örnek düşünelim -
System.out.println("This is tutorialspoint.com!");
Değer döndüren yöntem aşağıdaki örnekle anlaşılabilir -
int result = sum(6, 9);
Aşağıda, bir yöntemin nasıl tanımlanacağını ve nasıl çağrılacağını gösteren örnek verilmiştir -
Example
public class ExampleMinNumber {
public static void main(String[] args) {
int a = 11;
int b = 6;
int c = minFunction(a, b);
System.out.println("Minimum Value = " + c);
}
/** returns the minimum of two numbers */
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
Bu, aşağıdaki sonucu verecektir -
Output
Minimum value = 6
Boş Anahtar Kelime
Void anahtar sözcüğü, bir değer döndürmeyen yöntemler oluşturmamızı sağlar. Burada, aşağıdaki örnekte bir void method methodRankPoints düşünüyoruz . Bu yöntem, herhangi bir değer döndürmeyen void yöntemidir. Bir void yöntemine yapılan çağrı bir ifade olmalıdır, yani methodRankPoints (255.7); . Aşağıdaki örnekte gösterildiği gibi noktalı virgülle biten bir Java ifadesidir.
Example
public class ExampleVoid {
public static void main(String[] args) {
methodRankPoints(255.7);
}
public static void methodRankPoints(double points) {
if (points >= 202.5) {
System.out.println("Rank:A1");
}else if (points >= 122.4) {
System.out.println("Rank:A2");
}else {
System.out.println("Rank:A3");
}
}
}
Bu, aşağıdaki sonucu verecektir -
Output
Rank:A1
Parametreleri Değere Göre Geçirme
Çağırma süreci altında çalışırken, argümanlar iletilmelidir. Bunlar, yöntem spesifikasyonundaki ilgili parametreler ile aynı sırada olmalıdır. Parametreler değere göre veya referans olarak aktarılabilir.
Parametreleri Değere Göre Geçirme, bir parametresi olan bir yöntemi çağırmak demektir. Bu sayede argüman değeri parametreye aktarılır.
Example
Aşağıdaki program, parametreyi değere göre geçirmenin bir örneğini göstermektedir. Bağımsız değişkenlerin değerleri, yöntem çağrıldıktan sonra bile aynı kalır.
public class swappingExample {
public static void main(String[] args) {
int a = 30;
int b = 45;
System.out.println("Before swapping, a = " + a + " and b = " + b);
// Invoke the swap method
swapFunction(a, b);
System.out.println("\n**Now, Before and After swapping values will be same here**:");
System.out.println("After swapping, a = " + a + " and b is " + b);
}
public static void swapFunction(int a, int b) {
System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
// Swap n1 with n2
int c = a;
a = b;
b = c;
System.out.println("After swapping(Inside), a = " + a + " b = " + b);
}
}
Bu, aşağıdaki sonucu verecektir -
Output
Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30
**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45
Yöntem Aşırı Yükleme
Bir sınıf aynı ada ancak farklı parametrelere sahip iki veya daha fazla yönteme sahip olduğunda, bu yöntem aşırı yükleme olarak bilinir. Geçersiz kılmaktan farklıdır. Geçersiz kılmada, bir yöntem aynı yöntem adına, türüne, parametre sayısına vb. Sahiptir.
Minimum tam sayı türü sayısını bulmak için daha önce tartışılan örneği ele alalım. Diyelim ki minimum sayıda double türü bulmak istiyoruz. Daha sonra aynı isimde ancak farklı parametrelere sahip iki veya daha fazla yöntem oluşturmak için aşırı yükleme kavramı tanıtılacaktır.
Aşağıdaki örnek aynı şeyi açıklıyor -
Example
public class ExampleOverloading {
public static void main(String[] args) {
int a = 11;
int b = 6;
double c = 7.3;
double d = 9.4;
int result1 = minFunction(a, b);
// same function name with different parameters
double result2 = minFunction(c, d);
System.out.println("Minimum Value = " + result1);
System.out.println("Minimum Value = " + result2);
}
// for integer
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
// for double
public static double minFunction(double n1, double n2) {
double min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
Bu, aşağıdaki sonucu verecektir -
Output
Minimum Value = 6
Minimum Value = 7.3
Aşırı yükleme yöntemleri programı okunabilir hale getirir. Burada iki yöntem aynı isimle ancak farklı parametrelerle verilmektedir. Tam sayı ve çift türlerden minimum sayı sonuçtur.
Komut Satırı Bağımsız Değişkenlerini Kullanma
Bazen, çalıştırdığınızda bir programa bazı bilgileri aktarmak isteyebilirsiniz. Bu, komut satırı argümanlarını main () 'e ileterek gerçekleştirilir.
Komut satırı argümanı, program çalıştırıldığında komut satırında doğrudan programın adını takip eden bilgidir. Bir Java programı içindeki komut satırı argümanlarına erişmek oldukça kolaydır. Main () 'e iletilen String dizisinde dizeler olarak saklanırlar.
Example
Aşağıdaki program, çağrıldığı tüm komut satırı argümanlarını görüntüler -
public class CommandLine {
public static void main(String args[]) {
for(int i = 0; i<args.length; i++) {
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
Bu programı burada gösterildiği gibi çalıştırmayı deneyin -
$java CommandLine this is a command line 200 -100
Bu, aşağıdaki sonucu verecektir -
Output
args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
This anahtar sözcüğü
thisJava'da, bir örnek yöntemde veya bir kurucuda geçerli sınıfın nesnesine bir başvuru olarak kullanılan bir anahtar sözcüktür. Bunu kullanarak yapıcılar, değişkenler ve yöntemler gibi bir sınıfın üyelerine başvurabilirsiniz.
Note- this yalnızca örnek yöntemlerde veya yapıcılarda kullanılan anahtar sözcük
Genel olarak, bunun için kullanılan anahtar kelime -
Bir yapıcı veya yöntem içinde aynı adlara sahiplerse, örnek değişkenlerini yerel değişkenlerden ayırın.
class Student {
int age;
Student(int age) {
this.age = age;
}
}
Bir sınıftaki diğerinden bir tür kurucu (parametrik oluşturucu veya varsayılan) çağırın. Açık yapıcı çağrısı olarak bilinir.
class Student {
int age
Student() {
this(20);
}
Student(int age) {
this.age = age;
}
}
Example
İşte bir sınıfın üyelerine erişmek için bu anahtar kelimeyi kullanan bir örnek . Aşağıdaki programı kopyalayıp adıyla bir dosyaya yapıştırın,This_Example.java.
public class This_Example {
// Instance variable num
int num = 10;
This_Example() {
System.out.println("This is an example program on keyword this");
}
This_Example(int num) {
// Invoking the default constructor
this();
// Assigning the local variable num to the instance variable num
this.num = num;
}
public void greet() {
System.out.println("Hi Welcome to Tutorialspoint");
}
public void print() {
// Local variable num
int num = 20;
// Printing the local variable
System.out.println("value of local variable num is : "+num);
// Printing the instance variable
System.out.println("value of instance variable num is : "+this.num);
// Invoking the greet method of a class
this.greet();
}
public static void main(String[] args) {
// Instantiating the class
This_Example obj1 = new This_Example();
// Invoking the print method
obj1.print();
// Passing a new value to the num variable through parametrized constructor
This_Example obj2 = new This_Example(30);
// Invoking the print method again
obj2.print();
}
}
Bu, aşağıdaki sonucu verecektir -
Output
This is an example program on keyword this
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint
Değişken Bağımsız Değişkenler (var-args)
JDK 1.5, aynı türden değişken sayıda argümanı bir yönteme aktarmanıza olanak tanır. Yöntemdeki parametre aşağıdaki gibi bildirilir -
typeName... parameterName
Yöntem bildiriminde, türü ve ardından bir üç nokta (...) belirtirsiniz. Bir yöntemde yalnızca bir değişken uzunluklu parametre belirtilebilir ve bu parametre son parametre olmalıdır. Herhangi bir normal parametre ondan önce gelmelidir.
Example
public class VarargsDemo {
public static void main(String args[]) {
// Call method with variable args
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++)
if (numbers[i] > result)
result = numbers[i];
System.out.println("The max value is " + result);
}
}
Bu, aşağıdaki sonucu verecektir -
Output
The max value is 56.5
The max value is 3.0
Finalize () Yöntemi
Çöp toplayıcı tarafından bir nesnenin son yıkımından hemen önce çağrılacak bir yöntem tanımlamak mümkündür. Bu yöntemefinalize( )ve bir nesnenin temiz bir şekilde sona ermesini sağlamak için kullanılabilir.
Örneğin, o nesneye ait açık bir dosyanın kapatıldığından emin olmak için finalize () kullanabilirsiniz.
Bir sınıfa sonlandırıcı eklemek için finalize () yöntemini tanımlamanız yeterlidir. Java çalışma zamanı, o sınıftaki bir nesneyi geri dönüştürmek üzereyken bu yöntemi çağırır.
Finalize () yönteminin içinde, bir nesne yok edilmeden önce gerçekleştirilmesi gereken eylemleri belirteceksiniz.
Finalize () yöntemi şu genel biçime sahiptir -
protected void finalize( ) {
// finalization code here
}
Burada, korumalı anahtar sözcük, sınıfı dışında tanımlanan kodla finalize () öğesine erişimi engelleyen bir belirteçtir.
Bu, finalize () işlevinin ne zaman yürütüleceğini veya hatta çalışıp çalışmayacağını bilemeyeceğiniz anlamına gelir. Örneğin, programınız çöp toplama gerçekleşmeden önce biterse, finalize () çalışmayacaktır.