วิธี Java
ในบทแรก ๆ เรามักจะใช้ในการ System.out.println () แล้วมันคืออะไร?
println () เป็นวิธีการ (Method) และระบบจะเป็นชั้นของระบบ (Class) ออกเป็นวัตถุออกมาตรฐาน (Object) การใช้คำสั่งนี้คือการเรียกระบบการเรียนระบบมาตรฐานการส่งออกวัตถุออกวิธี println ()
ดังนั้นสิ่งที่เป็นวิธีที่จะทำเช่นนั้น?
วิธี Java เป็นชุดของงบซึ่งร่วมกันดำเนินการฟังก์ชั่น
- วิธีการคือการรวมกันที่ได้รับคำสั่งให้แก้ปัญหาการเรียนของขั้นตอนปัญหา
- วิธีการรวมอยู่ในชั้นเรียนหรือวัตถุ
- วิธีการที่ถูกสร้างขึ้นในโปรแกรมอื่น ๆ ที่อ้างถึง
วิธีการที่กำหนดไว้
โดยทั่วไปแล้วความหมายของวิธีการที่ประกอบไปด้วยไวยากรณ์ต่อไปนี้:
修饰符 返回值类型 方法名 (参数类型 参数名){ ... 方法体 ... return 返回值; }
วิธีการรวมถึงส่วนหัวของวิธีการและวิธีการที่ร่างกาย นี่เป็นส่วนหนึ่งของกระบวนการ:
- ปรับปรุง: ปรับปรุงซึ่งเป็นตัวเลือกที่จะบอกคอมไพเลอร์วิธีการเรียกวิธีการ มันกำหนดประเภทการเข้าถึงของวิธีการ
- กลับค่าชนิด: วิธีการอาจจะส่งกลับค่า returnValueType เป็นวิธีการที่จะส่งกลับชนิดข้อมูลของค่า วิธีการบางอย่างดำเนินการตามที่ต้องการ แต่ไม่มีค่าตอบแทน ในกรณีนี้เป็นโมฆะคำหลัก returnValueType
- ชื่อวิธีการ: ชื่อจริงของวิธีการ ชื่อวิธีการและรายการพารามิเตอร์ร่วมกันเป็นลายเซ็นของวิธีการ
- ประเภทพารามิเตอร์: พารามิเตอร์เช่นตัวยึด เมื่อวิธีการที่เรียกว่าค่าที่ส่งผ่านไปยังพารามิเตอร์ ค่านี้จะถูกเรียกว่าข้อโต้แย้งหรือตัวแปร รายการพารามิเตอร์คือจำนวนของพารามิเตอร์ชนิดของวิธีการสั่งซื้อและพารามิเตอร์ พารามิเตอร์เป็นตัวเลือกวิธีการที่ไม่อาจมีพารามิเตอร์ใด ๆ
- วิธีที่ร่างกาย: วิธีการที่ประกอบด้วยคำสั่งที่เฉพาะเจาะจงเพื่อกำหนดหน้าที่ของวิธีการ
เช่น:
public static int age(int birthday){...}
คุณสามารถมีมากกว่าหนึ่งพารามิเตอร์:
static float interest(float principal, int year){...}
หมายเหตุ: ในภาษาอื่น ๆ บางวิธีหมายถึงกระบวนการและฟังก์ชั่น ประเภทผลตอบแทนที่ไม่เป็นโมฆะของค่าตอบแทนของฟังก์ชั่นเรียกว่าวิธีนั้นวิธีการส่งกลับค่าที่ส่งกลับจากประเภทที่เรียกว่ากระบวนการเป็นโมฆะ
ตัวอย่าง
วิธีการต่อไปนี้ประกอบด้วยสองตัวแปร num1 และ num2 ก็จะส่งกลับค่าสูงสุดของทั้งสองพารามิเตอร์เหล่านี้
/** 返回两个整型变量数据的较大值 */ public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; }
วิธีการภาวนา
Java สนับสนุนทั้งสองวิธีที่จะเรียกวิธีการตามวิธีการว่าค่าผลตอบแทนในการเลือก
เมื่อโปรแกรมเรียกวิธีการโปรแกรมเพื่อควบคุมวิธีการที่เรียกว่า เมื่อคำสั่งกลับที่เรียกว่าวิธีการที่จะดำเนินการหรือจนกว่าร่างกายของวิธีการที่เมื่อปิดการควบคุมวงเล็บกลับไปยังโปรแกรม
เมื่อวิธีการส่งกลับค่าภาวนาวิธีการได้รับการปฏิบัติโดยทั่วไปเป็นค่า ตัวอย่างเช่น:
int larger = max(30, 40);
ถ้าค่าวิธีการส่งกลับเป็นโมฆะวิธีการเรียกจะต้องเป็นคำสั่ง ตัวอย่างเช่นวิธีการ println ผลตอบแทนที่เป็นโมฆะ สายต่อไปนี้เป็นคำสั่ง:
System.out.println("Welcome to Java!");
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการกำหนดวิธีการและวิธีการที่จะเรียกมันว่า:
public class TestMax { /** 主方法 */ public static void main(String[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println("The maximum between " + i + " and " + j + " is " + k); } /** 返回两个整数变量较大的值 */ public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
The maximum between 5 and 2 is 5
โปรแกรมนี้มีวิธีการหลักและวิธีการสูงสุด วิธี JVM หลักถูกเรียกในนอกจากนี้หลักและวิธีการอื่น ๆ ไม่แตกต่างกัน
หัววิธีการหลักเป็นเช่นเดียวกับตัวอย่างที่แสดงมีการปรับเปลี่ยนของประชาชนและคงคุณค่าของชนิดกลับเป็นโมฆะชื่อเป็นวิธีการหลักในนอกจากมีสตริง [] พารามิเตอร์ชนิด String [] ที่อาร์กิวเมนต์เป็นอาร์เรย์ของสตริง
คีย์เวิร์ด void
ส่วนนี้จะอธิบายวิธีการประกาศและเรียกวิธีการเป็นโมฆะ
ตัวอย่างต่อไปนี้บอกวิธีการตั้งชื่อ printGrade และเรียกมันว่าการพิมพ์คะแนนที่ได้รับ
ตัวอย่าง
public class TestVoidMethod { public static void main(String[] args) { printGrade(78.5); } public static void printGrade(double score) { if (score >= 90.0) { System.out.println('A'); } else if (score >= 80.0) { System.out.println('B'); } else if (score >= 70.0) { System.out.println('C'); } else if (score >= 60.0) { System.out.println('D'); } else { System.out.println('F'); } } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
C
นี่คือวิธีการ printGrade เป็นวิธีการของประเภทเป็นโมฆะก็ไม่ได้ส่งกลับค่า
เรียกวิธีโมฆะจะต้องเป็นคำสั่ง ดังนั้นจึงเป็นวิธีการหลักของสายสามสายในรูปแบบของคำสั่ง เช่นเดียวกับคำสั่งใด ๆ ที่จบลงด้วยอัฒภาคเช่น
ผ่านพารามิเตอร์โดยค่า
เรียกวิธีการเมื่อคุณจำเป็นต้องให้พารามิเตอร์ที่คุณจะต้องให้รายการพารามิเตอร์ตามคำสั่งที่ระบุไว้
ยกตัวอย่างเช่นวิธีการต่อไปอย่างต่อเนื่องครั้ง N พิมพ์ข้อความ:
public static void nPrintln(String message, int n) { for (int i = 0; i < n; i++) System.out.println(message); }
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงผลกระทบที่ผ่านค่า
โปรแกรมสร้างวิธีการที่จะใช้ในการแลกเปลี่ยนสองตัวแปร
public class TestPassByValue { public static void main(String[] args) { int num1 = 1; int num2 = 2; System.out.println("Before swap method, num1 is " + num1 + " and num2 is " + num2); // 调用swap方法 swap(num1, num2); System.out.println("After swap method, num1 is " + num1 + " and num2 is " + num2); } /** 交换两个变量的方法 */ public static void swap(int n1, int n2) { System.out.println("\tInside the swap method"); System.out.println("\t\tBefore swapping n1 is " + n1 + " n2 is " + n2); // 交换 n1 与 n2的值 int temp = n1; n1 = n2; n2 = temp; System.out.println("\t\tAfter swapping n1 is " + n1 + " n2 is " + n2); } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
Before swap method, num1 is 1 and num2 is 2 Inside the swap method Before swapping n1 is 1 n2 is 2 After swapping n1 is 2 n2 is 1 After swap method, num1 is 1 and num2 is 2
ผ่านสองพารามิเตอร์ที่จะเรียกวิธีการแลกเปลี่ยน ที่น่าสนใจหลังจากที่วิธีการที่เรียกว่ามูลค่าของการโต้แย้งไม่ได้เปลี่ยนแปลง
วิธีการมากเกินไป
วิธีการใช้สูงสุดดังกล่าวข้างต้นจะใช้กับชนิดข้อมูล int แต่ถ้าคุณต้องการที่จะได้รับค่าสูงสุดของทั้งสองข้อมูลจุดลอยตัวพิมพ์มันได้หรือไม่
การแก้ปัญหาคือการสร้างพารามิเตอร์อื่นที่มีชื่อเดียวกัน แต่วิธีการที่แตกต่างกันดังแสดงในรหัสต่อไปนี้:
public static double max(double num1, double num2) { if (num1 > num2) return num1; else return num2; }
ถ้าคุณเรียกวิธีการสูงสุดจะถูกส่งผ่านพารามิเตอร์ int วิธีการสูงสุดของตัวแปร int จะเรียก;
ถ้าผ่านพารามิเตอร์ชนิดสองประเภทของวิธีการประสบการณ์แม็กซ์คู่ที่เรียกว่านี้เรียกว่าวิธีการบรรทุกเกินพิกัด;
ว่าทั้งสองวิธีการเรียนมีชื่อเดียวกัน แต่มีรายการพารามิเตอร์ที่แตกต่างกัน
คอมไพเลอร์ Java ตามลายเซ็นวิธีในการกำหนดวิธีการที่ควรจะเรียกว่า
วิธีการบรรทุกเกินพิกัดสามารถทำให้โปรแกรมอ่านได้ชัดเจนมากขึ้น วิธีการดำเนินการอย่างใกล้ชิดเป็นงานที่เกี่ยวข้องควรใช้ชื่อเดียวกัน
วิธีการมากเกินไปจะต้องมีรายการพารามิเตอร์ที่แตกต่างกัน คุณก็ไม่สามารถตามประเภทที่แตกต่างกันของการปรับเปลี่ยนหรือกลับไปที่วิธีการมากเกินไป
ขอบเขตตัวแปร
ตัวแปรช่วงเป็นส่วนหนึ่งของโปรแกรมที่ตัวแปรสามารถอ้างอิง
ตัวแปรที่อยู่ในความหมายวิธีการที่เรียกว่าตัวแปรท้องถิ่น
ขอบเขตของการประกาศตัวแปรท้องถิ่นตั้งแต่เริ่มต้นจนถึงจุดสิ้นสุดของบล็อกที่มีมัน
ตัวแปรท้องถิ่นจะต้องประกาศก่อนที่พวกเขาสามารถนำมาใช้
วิธีการที่ครอบคลุมทั้งช่วงของวิธีการพารามิเตอร์ พารามิเตอร์เป็นจริงตัวแปรท้องถิ่น
ส่วนตัวแปรเริ่มต้นของคำสั่งห่วงขอบเขตของบทบาทในวงจร
แต่คำร่างกายห่วงตัวแปรเป็นคำสั่งของขอบเขตของมันจากไปยังจุดสิ้นสุดของวงที่ มันมีตัวแปรประกาศดังต่อไปนี้:
คุณสามารถในทางบล็อกที่ไม่แตกต่างกันซ้ำ ๆ ซ้อนกันประกาศตัวแปรท้องถิ่นที่มีชื่อเดียวกัน แต่คุณไม่สามารถซ้อนกันภายในบล็อกสองครั้งเพื่อประกาศตัวแปรท้องถิ่น
โดยใช้พารามิเตอร์บรรทัดคำสั่ง
บางครั้งคุณต้องการเรียกใช้โปรแกรมเมื่อมันผ่านไปแล้วข้อความ นี้ขึ้นอยู่กับการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งไปยัง main () ฟังก์ชั่นเพื่อให้บรรลุ
อาร์กิวเมนต์บรรทัดคำสั่งตามด้วยข้อมูลเกี่ยวกับเวลาดำเนินการหลังจากที่ชื่อโปรแกรม
ตัวอย่าง
โปรแกรมต่อไปนี้พิมพ์อาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด:
public class CommandLine { public static void main(String args[]){ for(int i=0; i<args.length; i++){ System.out.println("args[" + i + "]: " + args[i]); } } }
ที่แสดงด้านล่างเรียกใช้โปรแกรม:
java CommandLine this is a command line 200 -100
ผลมีดังนี้
args[0]: this args[1]: is args[2]: a args[3]: command args[4]: line args[5]: 200 args[6]: -100
นวกรรมิก
เมื่อวัตถุถูกสร้างขึ้นเมื่อคอนสตรัคถูกนำมาใช้ในการเริ่มต้นวัตถุ และมันก็เป็นในสร้างคลาสที่มีชื่อเดียวกัน แต่สร้างมีค่ากลับไม่มี
มักจะใช้สร้างอินสแตนซ์ชั้นเรียนค่าเริ่มต้นตัวแปรหรือทำตามขั้นตอนที่จำเป็นอื่น ๆ เพื่อสร้างวัตถุที่สมบูรณ์
หรือไม่ว่าคุณจะเป็นตัวสร้างที่กำหนดเองทุกชั้นมีคอนสตรัคเพราะ Java โดยอัตโนมัติให้สร้างเริ่มต้นซึ่งสมาชิกทุกคนจะเริ่มต้นที่จะเป็นศูนย์
เมื่อคุณได้กำหนดตัวสร้างของคุณเองสร้างเริ่มต้นจะล้มเหลว
ตัวอย่าง
นี่คือตัวอย่างของการใช้คอนสตรัคนี้:
// 一个简单的构造函数 class MyClass { int x; // 以下是构造函数 MyClass() { x = 10; } }
คุณสามารถโทรหาเหมือนตัวสร้างที่นี่เพื่อเริ่มวัตถุ:
public class ConsDemo { public static void main(String args[]) { MyClass t1 = new MyClass(); MyClass t2 = new MyClass(); System.out.println(t1.x + " " + t2.x); } }
ส่วนใหญ่เวลาที่ต้องใช้พารามิเตอร์นวกรรมิก
ตัวอย่าง
นี่คือตัวอย่างของการใช้คอนสตรัคนี้:
// 一个简单的构造函数 class MyClass { int x; // 以下是构造函数 MyClass(int i ) { x = i; } }
คุณสามารถโทรหาเหมือนตัวสร้างที่นี่เพื่อเริ่มวัตถุ:
public class ConsDemo { public static void main(String args[]) { MyClass t1 = new MyClass( 10 ); MyClass t2 = new MyClass( 20 ); System.out.println(t1.x + " " + t2.x); } }
ผลมีดังนี้
10 20
พารามิเตอร์ตัวแปร
ในฐานะของ JDK 1.5 สนับสนุน Java ผ่านประเภทเดียวกันของตัวแปรที่จะวิธีการ
ประกาศตัวแปรของวิธีการดังต่อไปนี้:
typeName... parameterName
ในคำสั่งวิธีการพิมพ์พารามิเตอร์ที่กำหนดไว้หลังจากที่เพิ่มจุดไข่ปลา ( ... )
วิธีสามารถระบุเพียงหนึ่งพารามิเตอร์ตัวแปรนั้นจะต้องเป็นวิธีที่พารามิเตอร์ที่ผ่านมา พารามิเตอร์ทั่วไปใด ๆ ที่จะต้องประกาศก่อนที่มันจะ
ตัวอย่าง
public class VarargsDemo { public static void main(String 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); } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
The max value is 56.5 The max value is 3.0
จบ () วิธีการ
Java ช่วยให้คุณกำหนดวิธีการในการที่วัตถุถูกเรียกก่อน destructor เก็บขยะ (รีไซเคิล) วิธีการนี้เรียกว่าจบ () ซึ่งจะใช้ในการล้างวัตถุที่กู้คืน
ตัวอย่างเช่นคุณสามารถใช้จบ () เพื่อให้แน่ใจว่ามีการเปิดแฟ้มวัตถุถูกปิด
ในจบ () method, คุณต้องระบุการดำเนินการที่จะดำเนินการเมื่อวัตถุถูกทำลาย
จบ () เป็นรูปแบบทั่วไป:
protected void finalize() { // 在这里终结代码 }
คำสำคัญที่ได้รับการคุ้มครองเป็นรอบคัดเลือกก็เพื่อให้แน่ใจว่าจบ () วิธีการไม่เคยเรียกรหัสนอกชั้นเรียน
ของหลักสูตรการเก็บขยะของ Java สามารถทำได้โดยอัตโนมัติโดย JVM ถ้าคุณใช้คู่มือการใช้งานคุณสามารถใช้วิธีการดังกล่าว
ตัวอย่าง
public class FinalizationDemo { public static void main(String[] args) { Cake c1 = new Cake(1); Cake c2 = new Cake(2); Cake c3 = new Cake(3); c2 = c3 = null; System.gc(); //调用Java垃圾收集器 } } class Cake extends Object { private int id; public Cake(int id) { this.id = id; System.out.println("Cake Object " + id + "is created"); } protected void finalize() throws java.lang.Throwable { super.finalize(); System.out.println("Cake Object " + id + "is disposed"); } }
เรียกใช้โค้ดข้างต้นออกผลมีดังนี้:
C:\1>java FinalizationDemo Cake Object 1is created Cake Object 2is created Cake Object 3is created Cake Object 3is disposed Cake Object 2is disposed