اولین برنامهٔ Java
این فایل را پیشتر اجرا کردهاید و صفحه mint را نشان داد. این صفحه پیش همان فایل میماند و پرسشِ دیگری میپرسد: کدام خطِ داخل فایل آن کلمه را نوشت و کدام خطها چیزی ننوشتند. قرار نیست Java را دوباره نصب کنید و خطهای نسخهٔ صفحهٔ قبل همانطور که بودند میمانند. Mint.java را باز کنید و از بالا بخوانید. صفحهای که میخواهید توضیحش بدهید هنوز یک خط است و آن خط mint است.
فایل بیش از یک خط دارد، برای همین اولین حدس این است که هر خطِ فایل یک خط روی صفحه میشود. این حدس نادرست است و ادامهٔ صفحه نشان میدهد چرا. سه خط از خطها چیزی را نام میبرند و فقط یکی از آنها مینویسد. آکولادها این خطها را دسته میکنند و آنها هم چیزی نمینویسند. وقتی با فایل جلوی چشمتان بتوانید انگشت را روی خطِ نویسنده بگذارید، کار این صفحه تمام است. صفحهٔ بعد یادداشتی اضافه میکند که روی صفحه دیده نمیشود و mint را عوض نمیکند.
public class Mint {
public static void main(String[] args) {
System.out.println("mint");
}
}
خط اول نام فایل را مشخص میکند
خط اول public class Mint است. آن را سه کلمه با سه کار بدانید، نه جملهای که روی صفحه چاپ میشود. public یعنی کدهای دیگر اجازه دارند از این فایل استفاده کنند؛ کلمهٔ public را روی صفحه نمیبینید. class یعنی این فایل یک واحدِ نامدارِ Java را تعریف میکند؛ کلمهٔ class هم روی صفحه نیست. Mint نامِ همان واحد است. فایلِ روی دیسک Mint.java نام دارد چون این نام Mint است. اگر نام را در این خط عوض کنید، نامِ فایل هم باید عوض شود، وگرنه javac فایل را نمیپذیرد. این قاعده دربارهٔ نامِ فایل است و به صفحه ربطی ندارد. دوباره به صفحهٔ اجرای قبلی نگاه کنید: روی آن Mint نیست، mint است. M بزرگ و m کوچک یک کلمه نیستند. خط اول هرگز نامِ خودش را روی صفحه نمینویسد.
نشانهٔ بعد از آن خط یک آکولادِ باز است، {. آکولادِ بستهٔ همجفتش آخرین خطِ فایل است، }. هرچه میان این دو آکولاد باشد به class Mint تعلق دارد. آکولادها حصارند و به Java میگویند این واحد کجا شروع میشود و کجا تمام. حصار متنی برای صفحه نیست؛ کنار mint نه { میبینید نه }. اگر آکولادِ باز را پاک کنید فایل خراب میشود و javac بهجای سکوت یک خطا مینویسد. آن خطا موضوع این صفحه نیست. در این صفحه هر دو آکولاد سر جایشان میمانند و صفحه mint میماند.
خطِ main جایی است که Java شروع میکند
خط بعدی public static void main(String[] args) است. وقتی میپرسند برنامه از کجا شروع میشود، مردم به همین خط اشاره میکنند و دربارهٔ شروع هم درست میگویند. اشتباه وقتی است که بعد بگویند صفحه main را نشان میدهد. وقتی java Mint را مینویسید، Java دنبال خطی با همین شکل میگردد و اجرا را از همانجا آغاز میکند. آغاز کردن با نوشتن یکی نیست. کلمههای این خط دستورهایی دربارهٔ چگونگی آغازند و برای صفحه کلمه نیستند.
کلمهها را یکییکی بردارید و هر کدام را با صفحه مقایسه کنید. public، این بار هم، یعنی خط را میشود از بیرونِ فایل شروع کرد. static یعنی Java میتواند این خط را بدون ساختن شیء شروع کند. هنوز با شیء آشنا نشدهاید و همینقدر بدانید که کلمهٔ static در این خط لازم است و چاپ نمیشود. void یعنی این خط مقداری به کسی پس نمیدهد. در این صفحه کسی منتظر مقدار نیست و void هم روی صفحه نیست. main نامی است که Java جستوجو میکند. نام باید همان چهار حرفِ main باشد، وگرنه java Mint این فایل را شروع نمیکند. با این همه آن چهار حرف روی صفحه نمینشینند. String[] args جایی برای کلمههایی است که ممکن است بعد از نام برنامه بنویسید. شما کلمهٔ اضافه ننوشتید؛ فقط java Mint را نوشتید. args برای این اجرا خالی است و نه String روی صفحه هست نه args.
پس خطِ main میتواند همزمان از دو جهت درست باشد: Java واقعاً از آنجا شروع کرد، و صفحه حتی یک کلمه از آن خط نگرفت. اگر چشمتان چون main وسطِ فایل است روی آن میماند، آن را جابهجا کنید. کلمهای که از صفحه به یاد دارید mint است و mint در این خط نوشته نشده.
خطِ درونی mint را مینویسد
داخل خطِ main، میان آکولادهای خودش، یک خط دیگر هست: System.out.println("mint"). همین خط صفحه را مینویسد. در فایل کمی تو رفته است تا ببینید داخل main نشسته. این تورفتگی چند فاصله است و فاصلهها هم روی صفحه نوشته نمیشوند. Java این خطِ درونی را اجرا میکند چون داخل خطی است که برنامه از آن شروع میشود. صفحه آنچه را این خطِ درونی مینویسد برمیدارد و به نامِ خطِ بیرونی کاری ندارد.
خطِ درونی را از چپ بخوانید. System.out خودِ صفحه است، جایی که خطها نوشته میشوند. println یعنی این را بنویس و بعد خط را تمام کن. آنچه در پرانتز است همان چیزی است که نوشته میشود. داخل پرانتز کلمهٔ mint میان دو علامتِ نقلقول نشسته. نقلقولها mint را بهعنوان متن نشان میکنند و خودشان بخشی از متن نیستند. آنها را در ذهن بردارید؛ کلمهای که میماند mint است و همان کلِ صفحه است. در فایل نقلقولها را بگذارید. بدون آنها javac دیگر mint را متن حساب نمیکند. نقطهویرگول آخر خط به Java میگوید این خط تمام شد. روی صفحه نقطهویرگول نمیبینید. mint را میبینید و بعد خط تمام میشود چون println آن را تمام کرده.
این هم خطِ نویسنده، تنها، تا خطهای دیگر نتوانند آن را پنهان کنند.
System.out.println("mint");
هیچ چیز در فرمان java Mint کلمهٔ mint را انتخاب نمیکند. فرمان فقط نامِ فایل را میگوید. کلمه از میان نقلقولها میرسد. اگر در نقلقولها کلمهٔ دیگری بود، صفحه همان را نشان میداد، ولی این صفحه چنین کاری نمیکند. نقلقولهای این صفحه mint را در خود دارند، پس صفحه mint است. یک خط. بدون خط دوم. بدون نقلقول روی صفحه. بدون کلمهٔ main. بدون کلمهٔ Mint.
📊 کدام خط روی صفحه دیده میشود
| خط | صفحه |
|---|---|
| public class Mint | از این خط چیزی نیست |
| public static void main(String[] args) | از این خط چیزی نیست |
| System.out.println("mint") | mint |
اشتباه رایج
معمولاً فایل را از بالا میخوانند و آشناترین کلمه را خروجی میپندارند. main مهم به نظر میرسد و واقعاً هم مهم است، چون Java بدون آن فایل را شروع نمیکند. امّا مهم بودن یعنی خروجی بودن نیست. میتوانید با انگشت خطِ main را بپوشانید و خطِ نویسنده هنوز System.out.println("mint") است. ولی اگر خطِ نویسنده را بپوشانید دیگر نمیتوانید صفحه را توضیح بدهید. اشتباه دوم این است که بگویند صفحه Mint را نشان میدهد چون فایل و class هر دو Mint نام دارند. صفحه کلمهٔ میان نقلقولها را برمیدارد و آن کلمه با m کوچک نوشته شده. اشتباه سوم شمردنِ خطهاست. فایل چند خط و چند آکولاد دارد و صفحه یک خط. آکولادها، کلمههای public و static و void، نامِ main و نامِ Mint همه بعد از اجرا هم در فایل هستند. اجرا آنها را پاک نمیکند و چاپ هم نمیکند.
میتوانید این را با اجرایی که پیشتر انجام دادهاید بسنجید. javac Mint.java هیچ خطی ننوشت. آن سکوت یعنی فایل پذیرفته شد، با خطِ main و آکولادها. java Mint کلمهٔ mint را نوشت. آن یک کلمه کارِ خطِ println است. اگر همین حالا java Mint را دوباره از همان پوشه بنویسید، صفحه باز mint است. فایل در این صفحه عوض نشده، پس صفحه هم نمیتواند عوض شود.
حالا میتوانید انگشت را روی System.out.println("mint") بگذارید و بگویید صفحه از همین خط میرسد. میتوانید انگشت را روی public static void main(String[] args) بگذارید و بگویید Java از همینجا شروع میکند و کلمهٔ main روی صفحه نیست. میتوانید انگشت را روی public class Mint بگذارید و بگویید این نام با فایل میخواند و با صفحه نمیخواند. صفحهٔ بعد یک یادداشت در فایل میگذارد. یادداشت برای آدمی است که فایل را میخواند. صفحه باز mint میماند، چون یادداشت println دوم نیست.
صفحه از یک خط میرسد
صفحه mint را نشان میدهد. System.out.println("mint") همان کلمه را مینویسد. نقلقولها روی صفحه نیستند. خطِ main روی صفحه نیست. خط اول، public class Mint، روی صفحه نیست. خط دومی هم نیست.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود