سؤال

هل هذا ثابت 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");
  1. System: إنه اسم الفئة القياسية التي تحتوي على كائنات تغلف المعيار أنا/س أجهزة نظامك.

ورد في صفقة java.lang. حيث java.lang يتم استيراد الحزمة في كل برنامج Java بشكل افتراضي ، وبالتالي java.lang صفقة هي الحزمة الوحيدة في Java API والتي لا تتطلب إعلان استيراد.

  1. out:يمثل الكائن Out دفق الإخراج (نافذة الأمر IE) وهو عضو بيانات ثابت في الفصلSystem.

لذا لاحظ هنا System.out (System -فصل & out- كائن ثابت على سبيل المثال لماذا يشار إليه ببساطة بواسطة className ولا نحتاج إلى إنشاء أي كائن).

  1. 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 يتضمن ثلاث طرق طباعة محملة ، هذه هي:

  1. print()
  2. println()
  3. 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 صف دراسي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top