ما معنى System.out.println في Java؟
-
25-09-2019 - |
سؤال
هل هذا ثابت println
وظيفة في out
فئة من System
مساحة الاسم؟
namespace System { class out { static println ... }
كيف يمكنني تفسير هذا الاسم؟ وأين في JRE تم تعريف هذه الوظيفة؟ في java.lang.System
/java.lang.Object
?
المحلول
بالحقيقة لا out
هو عضو ثابت في System
الفصل (ليس كما في .NET) ، كونه مثال على PrintStream
. و println
هي طريقة عادية (مثقلة) PrintStream
صف دراسي.
يرى http://download.oracle.com/javase/6/docs/api/java/lang/system.html#out.
في الواقع ، إذا out
/err
/in
كانت فصولًا ، سيتم تسميتها بشخصية رأس المال (Out
/Err
/In
) بسبب اصطلاح التسمية (تجاهل القواعد).
نصائح أخرى
System
هو فئة ، لها مجال ثابت عام out
. لذلك هو أكثر مثل
class System
{
public static PrintStream out;
}
class PrintStream
{
public void println ...
}
هذا تبسيط بسيط ، مثل PrintStream
الفصل هو في الواقع في java.io
حزمة ، لكنها جيدة بما يكفي لإظهار علاقة الأشياء.
تحقق من الرابط التالي:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/system.html
سترى بوضوح ذلك:
System
هو صف دراسي في ال java.lang
صفقة.
out
هو عضو ثابت التابع System
الفصل ، وهو مثال java.io.PrintStream
.
println
هو طريقة من java.io.PrintStream
. يتم تحميل هذه الطريقة لطباعة الرسالة إلى وجهة الإخراج ، والتي عادة ما تكون وحدة تحكم أو ملف.
System.out.println ()
فهم عالي المستوى
لفهم هذا ، نحتاج إلى تذكر بعض أساسيات جافا:
- Dot (.) مشغل في جافا: في جافا. (مشغل DOT) يستخدم فقط لاتصال طرق أو متغيرات. لذلك يمكننا أن نقول إما طريقة أو متغير.
- الأساليب في Java: نعلم أن الأساليب لها دائمًا قوسين "()" بعد اسم الطريقة ، لذلك لا يمكن أن تكون طريقة في Java. لذا فإن متغيرًا و println () هو طريقة.
- اسم الفصل في Java: يجب أن يبدأ اسم الفصل بحرف رأس المال بشكل مثالي في Java ، لذلك النظام هو فئة.
الآن مع المعرفة الأساسية لجافا نعرف:
- النظام فئة
- الخارج متغير
- println () هي طريقة
لنحصل على المزيد في التفاصيل:
متغير خارج: ثابت أم مثيل؟
يسمى باستخدام اسم الفصل ، حتى نعرف متغيره الثابت لفئة النظام.
لكن طريقة استدعاء طريقة println () لذلك "خارج" هي كائن من نوع المرجع printstream.
ينتمي فئة النظام إلى حزمة Java.lang
class System {
public static final PrintStream out;
//...
}
ينتمي فئة Prinstream إلى حزمة Java.io
class PrintStream{
public void println();
//...
}
println
و print
هل الطريقتين الزائدتين ينتميان إلى PrintStream
صف دراسي.
للوصول إليهم ، نحتاج إلى مثيل لهذه الفئة.
أ خاصية ثابتة اتصل out
من النوع PrintStream
يتم إنشاؤه على System
صف دراسي.
وبالتالي للوصول إلى الطرق المذكورة أعلاه ، نستخدم العبارات التالية:
System.out.println("foo");
System.out.print("foo");
System.out.println("Hello World");
System
: إنه اسم الفئة القياسية التي تحتوي على كائنات تغلف المعيار أنا/س أجهزة نظامك.
ورد في صفقة java.lang
. حيث java.lang
يتم استيراد الحزمة في كل برنامج Java بشكل افتراضي ، وبالتالي java.lang
صفقة هي الحزمة الوحيدة في Java API والتي لا تتطلب إعلان استيراد.
out
:يمثل الكائن Out دفق الإخراج (نافذة الأمر IE) وهو عضو بيانات ثابت في الفصلSystem
.
لذا لاحظ هنا System.out
(System
-فصل & out
- كائن ثابت على سبيل المثال لماذا يشار إليه ببساطة بواسطة className ولا نحتاج إلى إنشاء أي كائن).
println
:الprintln()
هو طريقة منout
الكائن الذي يأخذ سلسلة النص كوسيطة ويعرضها على الإخراج القياسي أي على شاشة الشاشة.
ملحوظة
System
-فصل
out
كائن ثابت
println()
-طريقة
تذكر دالة (في وظيفة Java تسمى الطريقة) دائما التنسيق وظيفة()
• System
هو فصل في java.lang
صفقة
• out
هو static
موضوع PrintStream
الفصل في java.io
صفقة
• println()
هي طريقة في PrintStream
صف دراسي
System
هو فئة من java.lang
صفقة، out
هو كائن PrintStream
الطبقة وأيضا static
عضو البيانات في System
صف دراسي، print()
و println()
هي طريقة مثيل ل PrintStream
صف دراسي. إنه يوفر إخراجًا ناعمًا على وحدة التحكم.
من السهل جدًا فهم السؤال ، ولكن الإجابة عليه ، نحتاج إلى البحث بشكل أعمق في كود Java الأصلي.
System
فئة ثابتة ولا يمكن إنشاء مثيل لهاout
هو متغير مرجعي محدد فيSystem
println()
هي الطريقة المستخدمة للطباعة على الإخراج القياسي.
أ شرح موجز وجميل نرحب دائمًا في هذا لأننا نتعلم الكثير من هذا الخط الواحد من البيان نفسه!
لأنه يتم استدعاؤه مع System
اسم الفصل نفسه ، وليس مثيلًا لفئة (كائن) ، لذا out
يجب أن يكون متغيرًا ثابتًا ينتمي إلى الفصل System
. out
يجب أن يكون مثيلًا للفصل ، لأنه يستدعي الطريقة println()
.
// the System class belongs to java.lang package
class System {
public static final PrintStream out;
}
class PrintStream {
public void println();
}
System
هو فصل في java.lang package
. و out
هو PrintStream
هدف. شرح جميل @ http://lazy-geeks.blogspot.in/2015/01/what-is-systemoutprintln.html
System.out.println();
System
هو الفصل
out
هو متغير في System
الفصل وهو أ static
والنوع المتغير هو PrintStream
.
ها هو out
متغير في System
صف دراسي:
public final static PrintStream out = null;
يمكنك رؤية تنفيذ System
هنا.
println()
هي طريقة محملة في PrintStream
صف دراسي.
PrintStream
يتضمن ثلاث طرق طباعة محملة ، هذه هي:
print()
println()
printf()
يمكنك ان ترى بداية شئ PrintStream
هنا.
لا يمكنك الاستنشاق System
الفصل وهو فئة الطفل Object
و ال Object
هو الأب (الفئة الفائقة) لكل فصول بما في ذلك الفصول التي حددتها.
هذا ما تقوله مستندات أوراكل:
public final class System extends Object
ال
System
يحتوي الفصل على العديد من الحقول والطرق المفيدة. لا يمكن إنشاء مثيله.من بين المرافق التي توفرها
System
الفئة هي تدفقات الإدخال القياسية ، والإخراج القياسي ، ودفقات إخراج الخطأ ؛ الوصول إلى الخصائص المحددة خارجيا ومتغيرات البيئة ؛ وسيلة لتحميل الملفات والمكتبات ؛ وطريقة فائدة لنسخ جزء من صفيف بسرعة.منذ: JDK1.0
إذا كنت لا تدري ما هو المقصود بالمستوى ، اقرأ هذا QuestioH. إنه سؤال C# لكن المفهوم هو نفسه.
ايضا، ما هو الفرق بين المثيل والكائن؟
إذا كنت لا تدري ما هو المقصود بالتحميل الزائد اقرأ هذا quesiotn.
System
هو فصل في java.lang
صفقة.
out
هو عضو البيانات الثابتة في System
فئة ومتغير مرجعي من PrintStream
صف دراسي.
Println()
هي طريقة عادية (مثقلة) PrintStream
صف دراسي.
من جافادوك عن System
, ، هذا ما يقوله المستند:
public final class System
extends Object
The System class contains several useful class fields and methods. It cannot be instantiated.
Among the facilities provided by the System class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array.
Since:
JDK1.0
متعلق System.out
public static final PrintStream out
The "standard" output stream class Prinstream belongs to java.io package. This stream is already open and ready to accept output data.
When the JVM is initialized, the method initializeSystemClass() is called that does exactly what it’s name says – it initializes the System class and sets the out variable. The initializeSystemClass() method actually calls another method to set the out variable – this method is called setOut().
Typically this stream corresponds to display output or another output destination specified by the host environment or user.
بخصوص println () ؛
class PrintStream{
public void println();
}
لتطبيقات Java المستقلة البسيطة ، هناك طريقة نموذجية لكتابة خط من بيانات الإخراج هي:
System.out.println(data);
System
- الفصل الذي هو final
في الطبيعة. public final class System{}
. ينتمي إلى java.lang
صفقة
out
- static
متغير مرجعي من النوع PrintStream
println()
- عدم static
الطريقة في PrintStream
صف دراسي.PrintStream
ينتمي إلى java.io
صفقة.
لفهمه بشكل أفضل يمكنك زيارته: كيف يعمل system.out.println () في جافا
نظام هي فئة جافا.
خارج هو المثال وعضو ثابت في PrintStream.
println هي طريقة printstream.
System.out.println ("...") في كود Java تتم ترجمة إلى JVM. لقد أعطاني النظر في JVM فهمًا أفضل لما يجري خلف الغطاء.
من الكتاب تشكل البرمجة الجهاز الافتراضي Java. يتم نسخ هذا الرمز من https://github.com/ymasory/programming-for-the-jvm/blob/master/examples/helloworld.j.
هذا هو رمز المصدر JVM.
.class public HelloWorld
.super java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit stack 2
.limit locals 1
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Hello, world"
invokevirtual java/io/PrintStream/println
(Ljava/lang/String;)V
return
.end method
.end class
نظرًا لأن "JVM لا يسمح بالوصول على مستوى البايت إلى الذاكرة" out
الكائن في النوع Ljava/io/PrintSteram
; ؛ يتم تخزينه في كومة مع getstatic
أمر JVM. ثم يتم دفع الوسيطة على المكدس قبل أن تسمى الطريقة println
التابع java/io/PrintStream
فئة من مثيل اسمه out
. معلمة الطريقة هي (Ljava/lang/String
؛) ونوع الإخراج باطلة (V).
System
: فئة محددة مسبقا من java.lang
صفقة.
out
: هو static
عضو في printStream
الفصل والاتصال مع وحدة التحكم.
Println
: هي طريقة printstream
الطبقة وليست أ static
.
System.out.println
System
هو فصل في java.lang
صفقة.
out
هو static
عضو البيانات في System
الفئة والمراجع متغير من PrintStream
صف دراسي.