
-
" جدا کرنا "
public static void main(String args[])
.فریشرز کے لیے جاوا انٹرویو کے مقبول سوالات میں سے ایک، اور بہت آسان۔
-
public
ایک رسائی موڈیفائر ہے۔ ہم اسے اس طریقہ تک رسائی کی وضاحت کے لیے استعمال کرتے ہیں۔ یہاں ترمیم کنندہ "عوامی" ہے، لہذا کسی بھی کلاس کو اس طریقہ تک رسائی حاصل ہے۔ -
static
. اس جاوا کلیدی لفظ کا مطلب ہے کہ ہم کلاس کا نیا آبجیکٹ بنائے بغیر یہ طریقہ استعمال کرتے ہیں۔ -
Void
طریقہ کی واپسی کی قسم ہے۔ اس کا مطلب ہے کہ طریقہ کوئی قدر واپس نہیں کرتا ہے۔ -
main
طریقہ کار کا نام ہے. JVM اسے کسی درخواست کے اندراج کے نقطہ کے طور پر "جانتا ہے" (اس پر ایک خاص دستخط ہونا چاہئے)۔Main
ایک ایسا طریقہ ہے جہاں بنیادی عمل درآمد ہوتا ہے۔ -
String args[]
. یہ وہ پیرامیٹر ہے جو مرکزی طریقہ کو منتقل کیا گیا ہے۔ یہاں ہمارے پاس String قسم کے دلائل ہیں جو آپ کی جاوا ایپلیکیشن قبول کرتی ہے جب آپ اسے چلاتے ہیں۔ آپ انہیں ٹرمینل پر ٹائپ کر سکتے ہیں۔
-
-
equals()
اور کے درمیان کیا فرق ہے==
؟سب سے پہلے، "
==
" ایک آپریٹر ہے جبکہequals()
ایک طریقہ ہے۔ ہم==
آپریٹر کا حوالہ موازنہ (یا پتہ کا موازنہ) اورequals()
مواد کے موازنہ کے لیے طریقہ استعمال کرتے ہیں۔ اس کا مطلب یہ ہے کہ==
چیک کرتا ہے کہ آیا دونوں اشیاء ایک ہی میموری کے مقام کی طرف اشارہ کرتے ہیں جبکہequals()
اشیاء میں اقدار کا موازنہ کرتے ہیں۔ -
کیا ہم بغیر طریقہ کے پروگرام چلا سکتے ہیں
main()
؟جاوا انٹرویو کے بہت سے بنیادی سوالات واقعی آسان ہیں۔ اس کی طرح۔ تو مختصر جواب ہے: ہاں، ہم کر سکتے ہیں۔ مثال کے طور پر ہم اسے جامد بلاک کا استعمال کرتے ہوئے کر سکتے ہیں۔
آپ جامد ڈیٹا ممبر کو شروع کرنے کے لیے جامد بلاک استعمال کر سکتے ہیں۔ یہ
main
طریقہ سے پہلے، کلاس لوڈنگ کے وقت عمل میں لایا جاتا ہے۔class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }
آؤٹ پٹ ہے:
static block is invoked Now main method
مکمل بنیادی طریقہ کی غیر موجودگی کے بارے میں کیا خیال ہے؟ اگر آپ ایک عام کلاس کو مرکزی طریقہ کے بغیر چلانے کی کوشش کرتے ہیں، تو آپ کو اگلی خرابی ملی: کلاس ٹیسٹ میں بنیادی طریقہ نہیں ملا، براہ کرم بنیادی طریقہ کی وضاحت کریں: عوامی جامد باطل مین (String [] args) یا JavaFX ایپلیکیشن کلاس کو javafx.application.Application کو بڑھانا چاہیے۔ غلطی خود بتاتی ہے کہ اگر یہ JavaFX ایپلی کیشن ہے اور کلاس javafx.application.Application سے وراثت میں ملی ہے، تو یہ ممکن ہے۔
-
اعتراض کیا ہے
immutable
؟ کیا آپimmutable
آبجیکٹ بنا سکتے ہیں؟immutable
آپ کسی کلاس کی اشیاء کی تخلیق کے بعد ان میں ترمیم نہیں کر سکتے ۔ لہذا ایک بار جب آپ انہیں بنا لیتے ہیں، تو آپ انہیں تبدیل نہیں کر سکتے۔ اگر آپImmutable
آبجیکٹ میں ترمیم کرنے کی کوشش کرتے ہیں تو آپ کو ایک نیا آبجیکٹ (کلون) ملتا ہے اور تخلیق کے دوران اس کلون کو تبدیل کر دیتے ہیں۔ایک اچھی مثال یہ ہے
String
کہ یہimmutable
جاوا میں ہے۔ اس کا مطلب ہے کہ آپ آبجیکٹ کو خود تبدیل نہیں کر سکتے، لیکن آپ آبجیکٹ کا حوالہ تبدیل کر سکتے ہیں۔ -
مندرجہ ذیل کوڈ میں کتنے آبجیکٹ بنائے گئے ہیں؟
جاوا تکنیکی انٹرویو کے سوالات میں سے ایک جو #4 کا متبادل ہے۔
String s1="Hello"; String s2="Hello"; String s3="Hello";
جواب "صرف ایک" ہے کیونکہ جاوا میں اسٹرنگ پول ہے۔ جب ہم new() آپریٹر کا استعمال کرتے ہوئے String آبجیکٹ بناتے ہیں تو یہ ہیپ میموری میں ایک نیا آبجیکٹ بناتا ہے۔ اگر ہم String لغوی نحو کا استعمال کرتے ہیں، جیسا کہ ہماری مثال میں، یہ String pool سے موجودہ آبجیکٹ واپس کر سکتا ہے، اگر یہ پہلے سے موجود ہے۔
-
مندرجہ ذیل کوڈ میں کتنے آبجیکٹ بنائے گئے ہیں؟
String s = new String("Hello");
2 اشیاء ہیں۔ ایک سٹرنگ کنسٹنٹ پول میں ہے (اگر پہلے سے موجود نہیں ہے) اور دوسرا ہیپ میں ہے۔
-
جاوا میں اور کلاسز کے
String
درمیانStringBuilder
کیا فرق ہے ؟StringBuffer
جاوا انٹرویو کے سب سے اوپر والے سوالات میں سے ایک رہنما ہے۔
سب سے پہلے
String
ایک ناقابل تغیر کلاس ہے۔ اس کا مطلب ہے کہ ایک بار بننے کے بعد آپ اس کے مواد میں ترمیم نہیں کر سکتے۔ جبکہStringBuffer
اورStringBuilder
بدلنے والی کلاسز ہیں، لہذا آپ انہیں بعد میں تبدیل کر سکتے ہیں۔ اگر ہمString
آبجیکٹ کے مواد کو تبدیل کرتے ہیں، تو یہ ایک نئی سٹرنگ بناتا ہے اس لیے یہ اصل کو تبدیل نہیں کرتا۔ یہی وجہ ہے کہ اس کے ساتھ کارکردگیStringBuffer
اس کے ساتھ سے بہتر ہےString
۔کے درمیان بنیادی فرق
StringBuffer
اورStringBuilder
اسStringBuffer
کے طریقوں کو ہم آہنگ کیا جاتا ہے جبکہStringBuilder
کے نہیں ہوتے ہیں۔ -
کیا اس میں کوئی فرق ہے کہ لفظی اور آپریٹر
String
کے ساتھ استعمال کیا گیا تھا ؟new()
ہے. اگر ہم آپریٹر کے ساتھ سٹرنگ بناتے ہیں
new()
تو یہ ہیپ اور سٹرنگ پول میں ظاہر ہوتا ہے (اگر پہلے سے موجود نہیں ہے)۔ اگر آپString
لٹریل کا استعمال کرتے ہوئے تخلیق کرتے ہیں، تو یہ سٹرنگ پول میں بنایا جاتا ہے (اگر پہلے سے موجود نہیں ہے)۔ سٹرنگ پول ڈھیر کے اندر ذخیرہ کرنے کا علاقہ ہے، جو سٹرنگ لٹریلز کو ذخیرہ کرتا ہے۔ -
کیا آپ جاوا میں اوور رائیڈ
private
یا طریقہ اختیار کر سکتے ہیں؟static
دوکھیبازوں کے لئے جاوا کے مشکل انٹرویو کے سوالات میں سے ایک۔ آپ واقعی جاوا میں اوور رائڈ
private
یا طریقہ کار نہیں کرسکتے ہیں ۔static
آپ طریقوں کو اوور رائڈ نہیں کر سکتے
private
کیونکہ پرائیویٹ ایکسیس سپیفائیر کا دائرہ صرف کلاس کے اندر ہے۔ جب آپ کسی چیز کو اوور رائیڈ کرنے جا رہے ہیں، تو ہمارے پاس والدین اور بچوں کی کلاس ہونی چاہیے۔ اگر سپر کلاس کا طریقہ ہے توprivate
، چائلڈ کلاس اسے استعمال نہیں کر سکتی، اور چائلڈ کلاس میں طریقوں کو نئے طریقوں کے طور پر سمجھا جائے گا (اوور رائیڈڈ نہیں)۔Static
طریقوں کو بھی اوور رائڈ نہیں کیا جا سکتا، کیونکہstatic
طریقے کلاس کا حصہ ہیں، اور کلاس کے کسی شے کا حصہ نہیں۔ یقینی طور پر آپstatic
بچوں کی کلاسوں میں ایک ہی دستخط کے ساتھ ایک ہی طریقہ کا اعلان کر سکتے ہیں، لیکن دوبارہ، ان کو نئے طریقوں کے طور پر سمجھا جائے گا۔ -
Abstract Class
اور کے درمیان فرقInterface
مقبول جاوا ڈویلپر انٹرویو سوالات میں سے ایک جو OOP اصولوں پر مشتمل ہے۔ سب سے پہلے، جاوا میں
interface
ایک رویے کی وضاحت کرتا ہے اورabstract class
درجہ بندی پیدا کرتا ہے.خلاصہ کلاس انٹرفیس تجریدی کلاس میں میتھڈ باڈی (غیر تجریدی طریقوں) کا ہونا ممکن ہے۔ انٹرفیس میں صرف تجریدی طریقے ہوسکتے ہیں۔ جاوا 8 یا جدید تر میں، پہلے سے طے شدہ طریقوں کی وضاحت کرنا اور انہیں براہ راست انٹرفیس میں لاگو کرنا ممکن ہو گیا۔ نیز، جاوا 8 میں انٹرفیس میں جامد طریقے ہوسکتے ہیں۔ مثال کے متغیر خلاصہ کلاس میں ہوسکتے ہیں۔ ایک انٹرفیس میں مثال کے متغیرات نہیں ہوسکتے ہیں۔ تعمیر کنندگان کی اجازت ہے۔ انٹرفیس میں کوئی کنسٹرکٹر نہیں ہو سکتا۔ جامد طریقوں کی اجازت ہے۔ جامد طریقوں کی اجازت نہیں ہے۔ کلاس میں صرف ایک خلاصہ والدین ہو سکتا ہے۔ ایک انٹرفیس مختلف کلاسوں کو نافذ کرسکتا ہے۔ خلاصہ کلاس انٹرفیس کے نفاذ کو فراہم کر سکتی ہے۔ انٹرفیس تجریدی کلاس کا نفاذ فراہم نہیں کر سکتا۔ ایک خلاصہ کلاس کو دوسری جاوا کلاس کو بڑھانے اور متعدد جاوا انٹرفیس کو لاگو کرنے کی اجازت ہے۔ ایک انٹرفیس کو صرف دوسرے جاوا انٹرفیس کو بڑھانے کی اجازت ہے۔ جاوا خلاصہ کلاس میں پرائیویٹ اور محفوظ کلاس ممبران ہو سکتے ہیں۔ جاوا انٹرفیس کے اراکین بطور ڈیفالٹ عوامی ہوتے ہیں۔ -
کیا ہم کلاس
static
میں متغیرات اور طریقوں کا اعلان کر سکتے ہیںabstract
؟static
ہاں، متغیرات اور طریقوں کوabstract
طریقہ کار میں بیان کرنا ممکن ہے ۔ جامد سیاق و سباق تک رسائی کے لیے کسی چیز کو بنانے کی ضرورت نہیں ہے۔abstract
لہذا ہمیں کلاس کے نام کا استعمال کرکے کلاس کے اندر اعلان کردہ جامد سیاق و سباق تک رسائی حاصل کرنے کی اجازت ہےabstract
۔ -
JVM کے ذریعہ کس قسم کے میموری کے علاقے مختص کیے گئے ہیں؟
کلاس ایریا پرکلاس ڈھانچے کو اسٹور کرتا ہے، مثال کے طور پر، رن ٹائم مستقل پول، فیلڈز، طریقہ ڈیٹا، اور طریقوں کے لیے تمام کوڈ۔
ہیپ رن ٹائم ڈیٹا ایریا ہے جہاں اشیاء کو میموری مختص کی جاتی ہے۔
اسٹیک اسٹورز فریم۔ یہ مقامی متغیرات اور جزوی نتائج پر مشتمل ہے، اور طریقہ کی درخواست اور واپسی میں حصہ لیتا ہے۔ ہر تھریڈ میں ایک پرائیویٹ JVM اسٹیک ہوتا ہے، جسے تھریڈ کے ساتھ ہی بنایا جاتا ہے۔ ہر بار جب کوئی طریقہ استعمال کیا جاتا ہے تو ایک نیا فریم بنایا جاتا ہے۔ ایک فریم تب تباہ ہو جاتا ہے جب اس کا طریقہ کار مکمل ہو جاتا ہے۔
پروگرام کاؤنٹر رجسٹر میں جاوا ورچوئل مشین انسٹرکشن کا ایڈریس ہوتا ہے جس پر اس وقت عمل کیا جا رہا ہے۔
مقامی طریقہ اسٹیک میں وہ تمام مقامی طریقے شامل ہیں جو ایپلی کیشن میں استعمال ہوتے ہیں۔
-
جاوا میں ایک سے زیادہ وراثت کی اجازت کیوں نہیں ہے؟
یہ واقعی پیچیدہ ہوگا۔ تین کلاسوں کا تصور کریں
A
،B
اورC
اورC
وارثA
اورB
۔ اب،A
اورB
کلاسوں کا ایک ہی طریقہ ہے اور آپ اسے چائلڈ کلاس آبجیکٹ سے کہتے ہیں... کون سا؟A
کی یاB
کی؟ یہاں ہمارے پاس ابہام ہے۔اگر آپ دو کلاسوں کو وراثت میں لینے کی کوشش کرتے ہیں تو جاوا رینڈر کمپائل ٹائم ایرر ہوتا ہے۔
-
کیا ہم
main()
طریقہ اوورلوڈ کر سکتے ہیں؟یقینی طور پر، ہمیں
main
جاوا پروگرام میں میتھڈ اوور لوڈنگ کا استعمال کرکے بہت سے طریقے رکھنے کی اجازت ہے۔ اسے آزمائیں! -
کیا ہم کنسٹرکٹر کا اعلان کر سکتے ہیں
final
؟Nope کیا. کنسٹرکٹر کو بطور قرار نہیں دیا جا سکتا
final
کیونکہ اسے وراثت میں نہیں مل سکتا۔ اس لیے کنسٹرکٹرز کو قرار دینا بے معنی ہےfinal
۔ تاہم، اگر آپ اسے کرنے کی کوشش کرتے ہیں، تو جاوا کمپائلر آپ کو ایک غلطی پھینک دیتا ہے۔ -
کیا ہم انٹرفیس کا اعلان کر سکتے ہیں
final
؟نہیں، ہم یہ نہیں کر سکتے۔ ایک انٹرفیس نہیں ہو سکتا
final
کیونکہ انٹرفیس کو کسی کلاس کے ذریعہ اس کی تعریف کے مطابق لاگو کیا جانا چاہئے۔ لہذا، ایک انٹرفیس بنانے کے لئے کوئی احساس نہیں ہےfinal
. تاہم، اگر آپ ایسا کرنے کی کوشش کرتے ہیں، تو کمپائلر ایک غلطی دکھائے گا۔ -
static binding
اور کے درمیان کیا فرق ہےdynamic binding
؟جس
binding
کو کمپائلر کے ذریعہ مرتب وقت پر حل کیا جاسکتا ہے اسےstatic
یا ابتدائی بائنڈنگ کہتے ہیں۔Binding
تمامstatic
،private
اورfinal
طریقوں کو مرتب وقت پر کیا جاتا ہے۔کمپائلر میں
Dynamic binding
کال کرنے کے لیے کوئی طریقہ منتخب نہیں کیا جا سکتا۔ اوور رائیڈنگ کی ایک بہترین مثال ہےdynamic binding
۔ اوور رائیڈنگ میں والدین اور بچوں دونوں کا طریقہ ایک ہی ہے۔Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } }
-
جاوا میں صرف پڑھنے والی کلاس کیسے بنائی جائے؟
آپ کلاس کے تمام فیلڈز کو نجی بنا کر ایسا کر سکتے ہیں۔ صرف پڑھنے والی کلاس میں صرف حاصل کرنے کے طریقے ہوتے ہیں جو کلاس کی نجی جائیداد کو
main
طریقہ میں واپس کرتے ہیں۔ آپ اس پراپرٹی میں ترمیم کرنے کے قابل نہیں ہیں، اس کی وجہ سیٹرز کے طریقہ کار کی کمی ہے۔public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } }
-
جاوا میں صرف تحریری کلاس کیسے بنائیں؟
دوبارہ، آپ کو کلاس کے تمام فیلڈز بنانے چاہئیں
private
۔ اب، آپ کی صرف تحریری کلاس میں صرف سیٹر کے طریقے ہونے چاہئیں اور کوئی حاصل کرنے والے نہیں۔ لہذا، ہم کلاس کی خصوصیات کو نہیں پڑھ سکتے ہیں.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } }
-
ہر
try
بلاک کے بعد ایکcatch
بلاک ہونا چاہیے، نہیں؟Nope کیا. یہ کوئی ضرورت نہیں ہے۔ ہر
try
بلاک بغیر کسیcatch
بلاک کے ہو سکتا ہے۔ اس کے بعد یا تو کیچ بلاک یا آخر میں بلاک یا ان کے بغیر بھی ہوسکتا ہے۔public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }
آؤٹ پٹ:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
ایک اور مثال:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }
آؤٹ پٹ:
test
PS: جاوا سے پہلے انٹرفیس میں 8 طریقے صرف خلاصہ ہوسکتے تھے۔ جاوا 8 یا جدید تر میں، پہلے سے طے شدہ طریقوں کی وضاحت کرنا اور انہیں براہ راست انٹرفیس میں لاگو کرنا ممکن ہو گیا۔ -
throw
اور مطلوبہ الفاظ میں کیا فرق ہےthrows
؟Throws
try-catch
ایک استثناء کا اعلان کرنے کے لیے استعمال کیا جاتا ہے، لہذا یہ بلاک کی طرح کام کرتا ہے ۔Throw
کلیدی لفظ کا استعمال کسی طریقہ یا کوڈ کے کسی دوسرے بلاک سے واضح طور پر استثنیٰ دینے کے لیے کیا جاتا ہے۔Throw
اس کے بعد کلاس کی مثال آتی ہےException
اور تھرو کے بعد استثنائی کلاس کے نام آتے ہیں۔Throw
ایک استثناء پھینکنے کے لئے طریقہ کار کے جسم میں استعمال کیا جاتا ہے.Throws
طریقہ کے دستخط میں مستثنیات کا اعلان کرنے کے لیے استعمال کیا جاتا ہے جو کہ طریقہ کار میں موجود بیانات میں ہو سکتا ہے۔اسے ایک وقت میں ایک استثنیٰ دینے کی اجازت ہے لیکن آپ مطلوبہ الفاظ کا استعمال کرتے ہوئے متعدد مستثنیات کا اعلان کر کے انہیں سنبھال سکتے ہیں۔ آپ
throw
متعدد مستثنیات کا اعلان کر سکتے ہیں، جیسے،public void method()throws IOException
,SQLException
۔
GO TO FULL VERSION