-
مجموعه سوال های مبتدیان
من چند ماهیه اینجام و دیدم که خیلی از افراد مبتدی پست های تکراری میزارند و یا سوال های تکراری میپرسند. :متفکر:
تصمیم گرفتم یک تاپیک بسازم که روزانه در حد توانم یکی دو تا سوال به همراه جوابشون بزارم که دوستان زودتر به جواب هایی که میخوان برسند . :خجالت:
به هیچ عنوان در این تاپیک سوال نپرسید
چون اسپم حساب میشه.
Start to learn more :لبخندساده:
-
نقل قول: مجموعه سوال های مبتدیان
1- چرا interface سازنده (Constructor) ندارد ؟
زیرا ، سازنده برای حذف مقادیر پیشفرض توسط مقادیر مشخص شده کاربر استفاده میشود.اما در مورد interface همه ی اعضای داده ها (data members or fields) بصورت "Public static final" هستند . یعنی همه ثابت هستند! پس نیازی به از بین بردن مقادیرشان نیست.
-
نقل قول: مجموعه سوال های مبتدیان
بیان دقیق تر و ملموس تر اینکه چرا اینترفیس ها سازنده ندارن این هست که اینترفیس ها قابلیت new شدن ندارن. یعنی ازشون شی ساخته نمیشه بنابراین سازنده احتیاج ندارن (براشون معنی نداره)
واسه همین هم هست که اون ها تمام فیلد هاشون static هست.
-
نقل قول: مجموعه سوال های مبتدیان
سلسله مراتب داده
آیتم های داده توسط کامپیوترها از یک سلسله مراتب داده پردازش میشوند که در ساختار بزرگتر و پیچیده تر میشوند همانطور که ما از بیت ها به کاراکتر ها و به فیلدها پیش میریم، و به همین ترتیب. این شکل یک بخش از سلسله مراتب داده ها را نشان میده.
بیت : کوچکترین آیتم داده در کامپیوتر که میتونه مقدار 0 و یا مقدار 1 رو بگیره.
کاراکتر: این برای مردم خسته کننده است که کار با داده ها در فرم های سطح پایین از بیت ها کار کنند. در عوض، آنها ترجیح میدن که با رقم های دسیمال (0-9) ، حروف (A-Z and a-z) ، و سیمبل های مخصوص ($, @, %, &, *, (, ), –, +, ", :, ? , /) کار بکنند. رقم ها، حرفو و سیمبل های مخصوص همشون کاراکتر هستن. جاوا از کاراکترهای یونیکد (Unicode) استفاده میکند که از دو بایت (byte) تشکیل شده اند.
فیلد: همانطور که کاراکترها از بیت ها تشکیل شده اند، فیلد ها هم از کاراکترها یا بایت ها تشکیل شده اند. یک فیلد گروهی از کاراکتر ها یا بایت ها است. برای مثال، یک فیلد متشکل از حروف بزرگ و کوچیک میتونه برای نمایش نام یک شخص استفاده بشه ، یک فیلد متشکل از ارقام دسیمال میتونه برای نمایش سن فرد استفاده بشه.
رکورد: چند فیلد مرتبط میتونند یک رکورد را تشکیل بدند(پیاده سازی شده به عنوان یک کلاس در جاوا) . در یک سیستم حقوق و دستمزد، برای مثال، رکورد برای یک کارمند ممکن است شامل فیلد های زیر باشد(نوع این فیلد ها همچنین داخل پرانتز نشان داده شده است )
- شماره شناسایی کارمند(فقط عدد)
- نام (رشته ای از کاراکترها)
- آدرس (رشته ای از کاراکترها)
در مثال قبلی ، همه ی فیلدها به همان کارمند تعلق دارند. یک شرکت شاید تعدادی کارمند داشته باشه که هر رکورد صورت حساب برای یکی از آنهاست.
فایل: یک فایل گروهی از رکورد های مرتبط است(به طور کلی، یک فایل حاوی داده های دلخواه در فرمت های دلخواه است). این برای یک سازمان غیر معمولی نیست که تعدای فایل داشته باشه، که برخی حاوی بیلیون ها، یا حتی ترلیون ها کاراکتر از اطلاعات هستند.
-
نقل قول: مجموعه سوال های مبتدیان
Static block
بلوک Static یا استاتیک (ثابت،ایستا) مجموعه ای از دستورات است که قبل اجرا شدن متد اصلی (main method) توسط JVM اجرا خواهد شد.
نکته:
در واقع هر گاه که ما بخوایم یک دستورالعمل یا statement رو قبل از متد اصلی اجرا بکنیم بلوک استاتیک میتونه استفاده بشه.
مثالی از static
class StaticDemo
{
static
{
System.out.println("Hello how are u ?");
}
public static void main(String args[])
{
System.out.println("This is main()");
}
}
Output:
Hello how are u ?
This is main()
چرا بلوک استاتیک قبل از متد اصلی اجرا شود ؟
یک کلاس قبل از اینکه ما شروع به استفاده ازش بکنیم در حافظه بارگذاری میشود و بلوک استاتیک در طول بارگذاری کلاس اجرا میشود. و این دلیلی برای اینه که چرا بلوک استاتیک قبل از متد اصلی اجرا میشود.
یا مثلا میتونیم Splash Screen که قبل از اجرای برخی نرم افزار ها مثلا Eclipse,Netbeans,phoroshop و... میاد را Static فرض کرده و برنامه ای که بعدش میاد رو Class فرض کنیم.
-
نقل قول: مجموعه سوال های مبتدیان
Defference between class method and instance method
Instance method نیازمند یک نمونه از یک Class است که وجود داشته باشه قبل از اینکه بتونیم یک شئ ازش بسازیم. پس یک نمونه از یک کلاس میتونه با استفاده از کلمه کلیدی new ایجاد بشه . بعد اینکه اون شئ ساخته شده در حافظه در مکانی ذخیره میشه. سپس با استفاده از شئ ایجاد شده ، میتونیم به متدهای اون کلاس دسترسی داشته باشیم (البته همانطور که میدونید نمیتونیم به متدهای Private دسترسی داشته باشیم)
درحالی که Class method ( که بصورت static هم هستش )بدون نیاز به ایجاد شئ میتونه صدا زده بشه
شما میتونید به این صورت یک کلاس استاتیک (Class method) را اجرا بکنید
MyObject.staticMethod();//Simply refers to the class's static code
ولی برای اجرای متدهای غیر استاتیک (Instance methods) ، باید اینکارو انجام بدید :
MyObject obj = new MyObject();//Create an instance
obj.nonstaticMethod();//Refer to the instance's class's code
همچنین اضافه میکنم که :
- متد های نمونه میتونن به مقادیر نمونه و متدهای نمونه بصورت مستقیم دسترسی داشته باشن.
- متدهای نمونه میتونن به مقادیر کلاس و متدهای کلاس دسترسی داشته باشن.
- متدهای کلاس میتونن به مقادی کلاس و متدهای کلاس دسترسی مستقیم داشته باشن.
- متدهای کلاس نمیتونن به مقادیر نمونه یا متدهای نمونه دسترسی مستقیم داشته باشند و باید از یک شئ ارجاع دهنده استفاده کنند. همچنین ، متدهای کلاس نمیتونن از کلمه کلیدی this استفاده کنند همانطور که نمونه ای برای this برای اشاره وجود نداره.
-
نقل قول: مجموعه سوال های مبتدیان
تفاوت بین JDK و JRE
Java Runtime Environment (JRE) در واقع همان Java Virtual Machine (JVM) است که در آن برنامه های جاوای شما اجرا میشن. همچنین شامل پلاگین هایی برای اجرای applet در مرورگرها نیز میباشد. JDK دارای تمام ویژگی های کیت توسعه نرم افزار برای جاوا شامل JRE ، کامپایلرها و ابزارها (مثل JavaDoc ، و Java Debugger) به ترتیب برای کاربر به منظور توسعه، کامپایل و اجرای برنامه های جاوا میباشد.
-
نقل قول: مجموعه سوال های مبتدیان
تابع های Override و Overload
Overload کردن متد در جاوا زمانی رخ میده وقتی دو یا متدهای بیشتری در همان کلاس یک اسم داشته باشند، ولی پارامترهاشون مختلف باشه!
از یه طرفی هم ، Override کردن برای حالتی تعریف میشه وقتی یه کلاس فرزند همون کلاس پدر رو دوباره تعریف بکنه!
متدهای Override شده باید همان نام،لیست آرگومان و نوع برگشتی رو داشته باشن.
Override کردن متد شاید دسترسی به متد Override شده رو محدود نکنه.
-
نقل قول: مجموعه سوال های مبتدیان
تفاوت بین یک رابط و یک کلاس انتزاعی در چیست ؟
جاوا هر دوی رابط ها و کلاس های انتزاعی ایجاد شده را ارائه و پشتیبانی میکند. در هر دو برخی از خصوصیات یا ویژگی های مشترکی پیاده سازی شده است،
اما آنها در ویژگی های زیر متفاوت هستند:
- همه ی روشهای1 در یک رابط به طور ضمنی انتزاعی2 هستند.از سوی دیگر، یک کلاس انتزاعی شاید شامل هر دوی توابع انتزاعی و غیر انتزاعی باشد.
- یک کلاس شاید یک تعداد از رابط ها3 را پیاده سازی کند، اما فقط یک کلاس انتزاعی را میتواند extend4 کند.
- بمراتب برای یک کلاس در پیاده سازی یک رابط ، باید همه ی توابع اعلان شده اش را پیاده سازی کند. با اینکه یک کلاس شاید همه ی توابع اعلان شده از یک کلاس انتزاعی را پیاده سازی نکند.
- کلاس های انتزاعی می توانند بدون پیاده سازی بدنه ی متدهای یک رابط از انها استفاده کنند.
- متغیرهای اعلان شده5 در یک رابط جاوا بصورت پیشفرض final6 هستند. یک کلاس انتزاعی شاید شامل متغیرهای non-final هم باشد.
- اعضای رابط جاوا بصورت پیشفرض public هستند. یک عضو از یک کلاس انتزاعی میتواند شامل هر کدام از private, protected یا public باشد.
- یک رابط کاملا انتزاعی است و نمیتواند نمونه سازی شود.یک کلاس انتزاعی7 همچنین نمیتواند نمونه سازی شود ، اما اگر شامل متد main باشد میتواند فراخوانی شود.
- Method
- Abstract
- Interface
- برای اطلاعات بیشتر به این لینک مراجعه کنید : http://www.javacoffeebreak.com/faq/faq0048.html
- Declared
- به مثال ، یک متغیر که بصورت final تعریف شود دیگر قابل تغییر نیست.
- Abstract Classes ، کلاس های انتزاعی یا مجرد
-
نقل قول: مجموعه سوال های مبتدیان
جاوا ارث بری چند گانه (multiple inheritance) را پشتیبانی میکند ؟
نه ، جاوا ارث بری چند گانه را پشتیبانی نمیکند. هر کلاس قادر به extend کردن فقط یک کلاس میباشد، اما قادر به پیاده سازی (Implement) کردن بیش از یک رابط (interfaces) میباشد
-
نقل قول: مجموعه سوال های مبتدیان
تفاوت بین آرایه و لیست آرایه در چیست ؟
چه وقتی استفاده از لیست آرایه بجای آرایه بهتر است ؟
کلاس های آرایه1 و لیست آرایه2 در ویژگی های زیر متفاوت هستند:
- آرایه میتواند شامل داده های اولیه3 و شئ ها4 باشد، در حالی که لیست آرایه فقط شامل شئ ها هستش.
- آرایه یک سایز ثابت دارد، در حالی که لیست آرایه داینامیک هستش.
- یک لیست آرایه روشها5 و ویژگی های زیادی را ارائه میدهد، مانند addAll , removeAll, iterator , و...
- برای یک لیست از انواع داده اولیه3، مجموعه ها6 از autoboxing7 برای کاهش تلاش های برنامه نویسی استفاده میکند. با این حال، این رویکرد آنها را وقتی که روی داده های اولیه با سایز ثابت8 کار میکنند آهسته تر میکند.
- Arrays
- ArrayList
- Primitive data types
- Objects
- Methods
- Collections، میتوانید به این لینک مراجعه کنید : https://en.wikipedia.org/wiki/Collec...t_data_type%29
- برای فهمیدن autoboxing میتوانید به این لینک مراجعه کنید : http://docs.oracle.com/javase/tutori...utoboxing.html
- Fixed Size، همانطور که میدانید آرایه ها یک سایز ثابت دارند و بصورت دستی این سایز توسط برنامه نویس تعیین میشود.
-
نقل قول: مجموعه سوال های مبتدیان
دو تا سوال داشتم...
اولیش این که چه فرقی بین math.random() و استفاده از java.util.random هستش؟
و اینکه آیا میشه برای اعداد رندوم بازه تعیین کردو یا تعداد دقیق مثلا بگی 100 تا عدد رندوم میخوام؟
-
نقل قول: مجموعه سوال های مبتدیان
سلام
هیچ فرقی نداره، کدی که توی متد ()random کلاس Math هست :
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator. nextDouble();
}
private static final class RandomNumberGeneratorHolder {
static final Random randomNumberGenerator = new Random();
}
برای تعیین کردن بازه هم میشه اینکارو کرد (مثلا 100 تا عدد رندوم از 1 تا 100) :
public class RandomTest {
static final Random randomGenerator = new Random();
public static void main(String[] args) {
for (int i : nextIntegers(100, 1, 100)) {
System.out.println(i);
}
}
static int[] nextIntegers(int size, int min, int max) {
int bound = max - min + 1;
int[] integers = new int[size];
for (int i = 0; i < size; i++) {
integers[i] = randomGenerator.nextInt(bound) + min;
}
return integers;
}
}
یا اینکه (جاوا 8) :
public class RandomTest {
static final Random randomGenerator = new Random();
public static void main(String[] args) {
randomGenerator.ints(100, 1, 101).forEach(System.out::println);
}
}
-
نقل قول: مجموعه سوال های مبتدیان
سلام.خسته نباشید.من یه سوال از قسمت فایل های جاوا داشتم.از کلاس File دو تا شی با نام های مختلف ایجاد میکنیم.و رو هر دو تاش متد File رو پیاده سازی میکنیم.داخل این متد باید یک رشته باشه.حالا از کجا بدونیم این فایلمون یه"فولدره" یا یه فایل دیگه از نوع مختلفه.ایا همه ی فایل هایی که ما از این کلاس میسازیم فولدر هستن؟.در کل ممنون میشم هر اطلاعاتی دارید بهم بدید.
-
نقل قول: مجموعه سوال های مبتدیان
-
نقل قول: مجموعه سوال های مبتدیان
بعد یه سوال دیگه چرا باید تو این کار بافایل از try و catch استفاده کرد؟ اگه میشه توضیح بدید
-
نقل قول: مجموعه سوال های مبتدیان
http://www.tutorialspoint.com/java/java_exceptions.htm
این لینک رو ببینید، سوالا و ابهاماتی که براتون پیش اومده رفع میشه.
-
نقل قول: مجموعه سوال های مبتدیان
درود استفاده از جاوا برای ساخت سایتهای شرکتی کوچک و متوسط منطقیست یا استفاده در پروژه های بزرگ و خاص مناسب این زبان است؟
-
نقل قول: مجموعه سوال های مبتدیان
سلام. کلاس هایی که برای جاوا نوشته شده اند چه ویژگی دارند، که توصیه می شه از اونها توی برنامه هامون استفاده کنیم؟ مثلا اگه بخواهیم یه آرایه را درون یه آرایه ی دیگه کپی کنیم می تونیم از یه دستور for استفاده کنیم، در حالی که می بینیم متدهای مختلفی برای کپی کردن در کلاسهای جاوا وجود داره!!!!
-
نقل قول: مجموعه سوال های مبتدیان
برای کپی کردن یک آرایه نیازی به پیمایش تکتک اعضای اون با حلقهی For نیست. امکانات سطح پایینتر سیستمیای وجود دارن که مستقیما بخشی از حافظه (مثلا یک آرایه) رو کپی میکنن. در جاوا اینکار با متد System.arraycopy در دسترسه. چندتا از روشهایی که میشه باش یه آرایه رو در جاوا کپی کرد:
int[] oneToTen = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int len = oneToTen.length;
// 1:
int[] copy1 = new int[len];
for(int i = 0; i < len; i++) {
copy1[i] = oneToTen[i];
}
// 2:
int[] copy2 = new int[len];
System.arraycopy(oneToTen, 0, copy2, 0, len);
// 3:
int[] copy3 = Arrays.copyOf(oneToTen, len);
// 4:
int[] copy4 = (int[]) oneToTen.clone();
// 5: (Need's Java 8+)
int[] copy5 = IntStream.of(oneToTen).toArray();
و اما توضیحات:
۱. مبتدیانهترین روشی که میشه باش یه آرایه رو کپی کرد.
۲. خیلی سریعتر از روش ۱ به خاطر اینکه کپی کردن آرایه در سطح پایینتری انجام میشه و علاوهبراین متد System.arraycopy بصورت محلی (Native) پیادهسازی شده.
۳. در حقیقت از همون روش ۲ استفاده میکنه. ولی خب سادهتر و کوتاهتر و خواناتره.
۴. اینم با احتمالا از ابزارهای سطحپایینی برای کلونکردن شیء استفاده میکنه ولی حدس میزنم از System.arraycopy سریعتر نباشه. البته چون متد clone ممکنه نتایج پیشبینی نشدهای داشته باشه خصوصا در مورد کلاسهایی که واسط Cloneable رو پیادهسازی نکردن، استفاده ازش رو پیشنهاد نمیکنم.
۵. (نیاز به جاوا ۸ داره) احتمالا از همهی روشهای بالا کندتره. ولی استفادهاز Streamها در جاوا قابلیتهای جدیدی رو به ما میده که الان جای صحبت در مورد اونها نیست و البته در حجمهای خیلی بزرگ داده Streamها میتونن با پردازش موازی و پردازشهای Lazy خیلی سریعتر هم بشن.
در نهایت برای برنامههای عادی پیشنهاد میکنم از Arrays.copyOf استفاده کنی.
-
نقل قول: مجموعه سوال های مبتدیان
ممنون، منظورم صرفا برای کپی کردن یه آرایه نیست، کلا می گم، یعنی من خودم بخوام یه برنامه ای بنویسم که به همون امکانات سطح پایین تر دسترسی داشته باشم، باید چیکار کنم؟ باید به یه زبان برنامه نویسی دیگه این کارو انجام داد؟
-
نقل قول: مجموعه سوال های مبتدیان
سلام کی میتونه یه برنامه بنویسه که خروجی زیر رو چاپ کنه؟:متفکر:
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
Fahrad
سلام کی میتونه یه برنامه بنویسه که خروجی زیر رو چاپ کنه؟:متفکر:
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
public class Example {
public static void main(String[] args) {
int count;
for (int i = 1; i <= 5; i++) {
count = i - 1;
print(i, count);
System.out.println();
}
}
public static void print(int st, int count) {
for (int i = st; i <= st + count; i++) {
System.out.print(i);
}
for (int i = st + count - 1; i >= st; i--) {
System.out.print(i);
}
}
}
-
نقل قول: مجموعه سوال های مبتدیان
در درک این منطق مشکل دارم.. لطفا کمکم کنید... مبتدی هستم و تازه شروع کردم
http://s2.picofile.com/file/8283853126/Untitled.jpg
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
shayanboy2
خط 6 که ++ بعد از متغیر a اومده، ابتدا assignment انجام میشه (b=a) و بعد یک واحد به a اضافه میشه.
در خط 7 که ++ قبل از a اومده، ابتدا یک واحد به a اضافه میشه و بعد assignment انجام میشه (c=a).
منطق خاصی هم نداره، این تعریفشه که طراحان کامپایلر این مد نظرشون بوده و از اونجایی که syntax جاوا شبیه C هست (از اون گرفتن) و چنین عملگری در C هم وجود داره، شاید برای همخوانی بیشتر اینکار رو انجام دادن. به عنوان اندیس آرایه و... هم میشه از این عبارت استفاده کنید مثلا x[i++] و همه جا میشه استفاده کرد.
توصیه میکنم از این روش کمتر استفاده بشه و ++ استفاده کنید ولی همزمان با اون هیچ کار دیگه ای انجام ندید.
یعنی مثلا
i++;
x[i];
اینجوری خوانایی و احتمال اشتباه برنامه کمتر میشه. نیازی نیست برنامه خیلی فشرده نوشته بشه (هر چند دونستن این موضوع برای خواندن کد سایرین لازمه، ولی خودت کمتر استفاده کن)
جدا از این موضوع، حتی توصیه میشه خیلی از مواقع به جای اینکه انواع توابع رو به عنوان پارامتر سایر توابع استفاده کنید و کلا از متغیر جدید کمتر استفاده میکنیم، روش خوبی نیست و استفاده متغیر بیشتر برای خوانایی برنامه مفیده و عملا تعریف چند تا متغیر یا اضافه شدن چند خط کد سرعت برنامه رو کند نمیکنه.
-
نقل قول: مجموعه سوال های مبتدیان
دوستان یه سوالی برام توی مبحث if های تودر تو به وجود اومده. همون طور که توی عکس میبینید ما دو تا if و دو تا else داریم. اما من نمیدونم الان کدوم if برای کدوم else قراره اجرا بشه... این کد رو از کتاب BigJava که یه پی دی اف فارسی هست برداشتم...
http://uupload.ir/files/pqa2_222.jpg
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
vahid-p
خط 6 که ++ بعد از متغیر a اومده، ابتدا assignment انجام میشه (b=a) و بعد یک واحد به a اضافه میشه.
در خط 7 که ++ قبل از a اومده، ابتدا یک واحد به a اضافه میشه و بعد assignment انجام میشه (c=a).
منطق خاصی هم نداره، این تعریفشه که طراحان کامپایلر این مد نظرشون بوده و از اونجایی که syntax جاوا شبیه C هست (از اون گرفتن) و چنین عملگری در C هم وجود داره، شاید برای همخوانی بیشتر اینکار رو انجام دادن. به عنوان اندیس آرایه و... هم میشه از این عبارت استفاده کنید مثلا x[i++] و همه جا میشه استفاده کرد.
توصیه میکنم از این روش کمتر استفاده بشه و ++ استفاده کنید ولی همزمان با اون هیچ کار دیگه ای انجام ندید.
یعنی مثلا
i++;
x[i];
اینجوری خوانایی و احتمال اشتباه برنامه کمتر میشه. نیازی نیست برنامه خیلی فشرده نوشته بشه (هر چند دونستن این موضوع برای خواندن کد سایرین لازمه، ولی خودت کمتر استفاده کن)
جدا از این موضوع، حتی توصیه میشه خیلی از مواقع به جای اینکه انواع توابع رو به عنوان پارامتر سایر توابع استفاده کنید و کلا از متغیر جدید کمتر استفاده میکنیم، روش خوبی نیست و استفاده متغیر بیشتر برای خوانایی برنامه مفیده و عملا تعریف چند تا متغیر یا اضافه شدن چند خط کد سرعت برنامه رو کند نمیکنه.
تشکردوست.عزیز..اماچراcشده12؟
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
shayanboy2
تشکردوست.عزیز..اماچراcشده12؟
ابتدا a=10 . در خط بعد مقدار a اول به b اختصاص (assign) میده (b=10) و بعد یک واحد به a اضافه میشه (a=11). در خط بعدی ابتدا یک واحد به a اضافه میشه (a=12) و سپس به c اختصاص داده میشه (c=12). توضیحاتشم پست قبل گفتم.
نقل قول:
نوشته شده توسط
shayanboy2
دوستان یه سوالی برام توی مبحث if های تودر تو به وجود اومده. همون طور که توی عکس میبینید ما دو تا if و دو تا else داریم. اما من نمیدونم الان کدوم if برای کدوم else قراره اجرا بشه... این کد رو از کتاب BigJava که یه پی دی اف فارسی هست برداشتم...
برای مبهم نبودن این موضوع، از آکولاد { و } استفاده میکنن. اینها scope یا محدوده رو مشخص میکنند. معمولا IDE ها خودشون این رو مشخص میکنن (روی یکی از آکولادها برو تا اونجایی که بسته یا باز میشه رو مشخص کنه) تا شما راحتتر محدوده ها رو بدونید، هر چند اگر مرتب نوشته باشید، خیلی واضحه و نیازی به کمک IDE هم نیست.
به هر حال همیشه اون آکولاد که دیرتر باز شده، زودتر بسته میشه. یعنی هر if داخلتر باشه لزوما آکولاد باز و بستش درون یک آکولاد باز و بسته if یا for یا... بیرونی قرار میگیره. در نتیجه در اون دو تا if ، عبارت else داخلی مربوط به if داخلی هست، دلیلش این نیست که به اون نزدیکتره یا ...، تنها دلیلش اینه که آکولاد باز شده if بیرونی تا انتهای else داخلی هنوز بسته نشده و پس از اون بسته میشه و همچنین else داخلی دقیقا بعد از آکولاد بسته if داخلی اومده. همچنین چون if و else های داخلی بسته شدن، و if بیرونی هم بسته شده، else بیرونی مربوط به if بیرونی هست چون دقیقا بعد از بسته شدن آکولاد if بیرونی اومده.
در نتیجه اینجوری در نظر بگیرید که هر scope داخلی scope دیگه قرار میگیره و نمیشه بخشیش داخل scope باشه و بخشیش بیرون. scope هم با آکولاد باز و آکولاد بسته مشخص میشه.
اگر از IDE استفاده کنید، کم کم خودتون متوجه میشید و مبناش خیلی منطقیه و غیر این غیر منطقی به نظر میاد (چون باعث ابهام در گرامر زبان میشه)
ا
در زبانهایی مثل پایتون، دقیقا از تورفتگی برای این موضوع استفاده میکنند. در زبانهای جاوا، C و C++ و C# و... از آکولاد باز و بسته استفاده میشه، هر چند همزمان تورفتگی هم برای خوانایی بهتر استفاده میکنند (هر چند در معنا هیچ تفاوتی ایجاد نمیکنه، ولی در پایتون تورفتگیها معنای برنامه رو تغییر میده).
در Netbeans از کلیدهای میانبر Alt+Shift+F رو بزنید، تا کدتون مرتب بشه و تو رفتگی ها رو درست میکنه و واضح تر میتونید ببینید کدوم else مربوط به کدوم if هست و...
-
نقل قول: مجموعه سوال های مبتدیان
یک نکته هم اضافه کنم امروز باهاش برخورد کردم، در خصوص این مورد:
i=i++;
به این معنی است که ابتدا مقدار i به صورت موقت ذخیره می شود، سپس یک واحد به i اضافه می شود و در نهایت مقدار موقت ذخیره شده به متغیر i تخصیص داده می شود (درنتیجه یک واحد اضافه شده از بین می رود). در نتیجه هر چند بار این عبارت را تکرار کنیم، مقدار i تغییر نمی کند.
برای مثال های قبلی هم به همین صورت بود، ولی چون متغیری که یک واحد اضافه می شود و متغیری که مقدار میگیرد یکسان نبود، مشکلی ایجاد نمی کند.
در نتیجه:
x = x++;
برابر است با:
int tmp = x;
x++;
x = tmp;
منبع: http://stackoverflow.com/questions/16335552
-
1 ضمیمه
نقل قول: مجموعه سوال های مبتدیان
به یه کد جدید برخوردم اما نمیدونم. ترتیب اجرای کد ها چجوریه! یه کد ساده ست .. پنج تا عدد رو میگیره و میانگینشون رو تحویل میده.... سوال بعدی اینه که مقدارهای ورودی ما رو کجا ذخیره میکنه؟
ضمیمه 144361
-
نقل قول: مجموعه سوال های مبتدیان
درود.
یه سوالی داشتم و اون اینکه من قبلا زبان C# کار میکردم ولی حالا که وارد جاوا شدم میخوام ببینم این برنامه هم کمکی هایی مثله Resharper داره یا نه. در ضمن من چون تازه شروع کردم به کار با این نرم افزار میخوام بدونم محیط ویژوال نداره؟
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
Black Shadow
درود.
یه سوالی داشتم و اون اینکه من قبلا زبان C# کار میکردم ولی حالا که وارد جاوا شدم میخوام ببینم این برنامه هم کمکی هایی مثله Resharper داره یا نه. در ضمن من چون تازه شروع کردم به کار با این نرم افزار میخوام بدونم محیط ویژوال نداره؟
بله هم IDE های خوبی داره (حتما جستجو کنید در انجمن مفصل بحث شده) و هم ابزار برای طراحی فرم ها. هر چند قبلش باید جستجو کنی ببینی هر IDE چه امکاناتی رو بهت میده.
Resharper اگه منظورته پیشنهاد و... بده بله خصوصا IntelliJ که خیلی خوبه. حتی Netbeans هم خیلی تو این زمینه بهت کمک میکنه.
-
نقل قول: مجموعه سوال های مبتدیان
سلام خدمت دوستان عزیز
من تازه جاوا رو شروع کردم با نت بینز شروع کردم
نت بینز 8.0 نصب کردم ولی ی مشکلی دارم وقتی داری کد مینویسی ی راهنمایی میاد بالا ک داخل کد نویسی بهت کمک میکنه . این برای من باز نمیشه
آموزشی ک دارم روی نت بینز 8.2 کار میکنه این نسخه رو هم نصب کردم ولی پروژه جدید باز نمیکنه
-
نقل قول: مجموعه سوال های مبتدیان
سلام
من با سی شارپ کار کردم و مسلطم. از اونجایی که میدونم جاوا چند سکویی هست چندتا سوال دارم:
1. آیا برنامه ای که من با جاوا در محیط ویندوزی نوشتم روی لینوکس و مک هم به راحتی اجرا میشه؟ یا کار خاصی لازم داره
2. چه دیتابیسی انتخاب کنم که وابستگی نداشه باشه. مثلا sql server وابسته به مایکروسافته و لینکوس نداره اونو پس مشکل ساز میشه
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
samadpour
سلام خدمت دوستان عزیز
من تازه جاوا رو شروع کردم با نت بینز شروع کردم
نت بینز 8.0 نصب کردم ولی ی مشکلی دارم وقتی داری کد مینویسی ی راهنمایی میاد بالا ک داخل کد نویسی بهت کمک میکنه . این برای من باز نمیشه
آموزشی ک دارم روی نت بینز 8.2 کار میکنه این نسخه رو هم نصب کردم ولی پروژه جدید باز نمیکنه
وقتی کدی مینویسی و Ctrl+Space میزنی بازم نمیاد؟
از طریق منو Tools->Options و سپس Editor->Code completion رو بیارید و تنظیماتش رو چک کنید مثلا Auto Popup Completion Window حداقل تیک خورده باشه. به صورت پیش فرض Language = All Languages و Auto Popup Completion ..., Auto Popup Documentation ..., Insert Single ..., Show Deprecated ... , Insert Closing Brackets ... تیک خوردن.
نقل قول:
نوشته شده توسط
aliramazani
سلام
من با سی شارپ کار کردم و مسلطم. از اونجایی که میدونم جاوا چند سکویی هست چندتا سوال دارم:
1. آیا برنامه ای که من با جاوا در محیط ویندوزی نوشتم روی لینوکس و مک هم به راحتی اجرا میشه؟ یا کار خاصی لازم داره
2. چه دیتابیسی انتخاب کنم که وابستگی نداشه باشه. مثلا sql server وابسته به مایکروسافته و لینکوس نداره اونو پس مشکل ساز میشه
1- بله در صورتی که از کتابخانه استاندارد (اصلی جاوا) استفاده کنی یا از کتابخانه هایی استفاده کنی که برای همه سیستم عامل های مطرح جواب میدن. در حالت کلی بله کدتون روی تمام سیستم ها جواب میده، ولی گاهی اوقات از کتابخانه هایی یا کدهایی استفاده میشه که وابسته به سیستم عامل میشه. اما کم پیش میاد.
2- خیلی از مدیریت دیتابیس های متن باز برای هر سه سیستم عامل به خوبی جواب میدن. مثال بخوام بزنم MySQL, MariaDB، PostgreSQL, MongoDB و... که خیلی هم عالی هستن (MongoDB دیتابیس رابطه ای نیست). فقط لازمه جدا از برنامتون نصب بشن و سرورش نصب باشه. ولی دیتابیس هایی مثل H2 همراه برنامتون قابل اجرا هستند (به صورت یک فایل jar قرار میگیره) و امکانات خیلی خوبی هم داره ولی توصیه نمیکنم برای کارهای خیلی جدی ازش استفاده کنی.
-
نقل قول: مجموعه سوال های مبتدیان
[QUOTE=vahid-p;2386568]وقتی کدی مینویسی و Ctrl+Space میزنی بازم نمیاد؟
از طریق منو Tools->Options و سپس Editor->Code completion رو بیارید و تنظیماتش رو چک کنید مثلا Auto Popup Completion Window حداقل تیک خورده باشه. به صورت پیش فرض Language = All Languages و Auto Popup Completion ..., Auto Popup Documentation ..., Insert Single ..., Show Deprecated ... , Insert Closing Brackets ... تیک خوردن.
سلام
مرسی از راهنماییت رفتم داخل Options تیک زدم
الان ک Ctrl+Space میزنم میاد
دستت درد نکنه
-
نقل قول: مجموعه سوال های مبتدیان
سلام به همگی،
یک سوالی دارم ، ی بهتر بگم یک راهکار نیاز دارم .
فکر نمیکنم در خواندن و یادگرفتن یک زبان برنامه نویسی مشکل خاصی وجود داشته باشه ، اما با خواندن مفاهیم پایه هم کسی برنامه نویس نمیشه ، کتابخانه ها و فریم ورک ها هستن که کار رو پیچیده میکنن و زمانبر .
سوال من اینه که کسی راهکاری برای یادگیری این حجم عظیم از API ها داره ، مخصوصا جاوا . چطوری میشه به کتابخانه ها و راه حل هایی که ارائه میدن تسلط پیدا کرد ؟
یا اصلن این رویکرد خواندن کتابخانه ها درسته؟
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
aligee
سلام به همگی،
یک سوالی دارم ، ی بهتر بگم یک راهکار نیاز دارم .
فکر نمیکنم در خواندن و یادگرفتن یک زبان برنامه نویسی مشکل خاصی وجود داشته باشه ، اما با خواندن مفاهیم پایه هم کسی برنامه نویس نمیشه ، کتابخانه ها و فریم ورک ها هستن که کار رو پیچیده میکنن و زمانبر .
سوال من اینه که کسی راهکاری برای یادگیری این حجم عظیم از API ها داره ، مخصوصا جاوا . چطوری میشه به کتابخانه ها و راه حل هایی که ارائه میدن تسلط پیدا کرد ؟
یا اصلن این رویکرد خواندن کتابخانه ها درسته؟
به نظر من درست نیست اینجوری فرض کنید که یک کتابخانه رو بخونید و بخوایید حتما یادبگیرید.
بلکه بستگی به نیاز باید کتابخونه ها رو یادگرفت (در حد معفولی نه همه و بقیش حین کار با سرچ حل میشه)
باید ببینید کدوم کتابخونه ها زیاد استفاده میشه و به کارتون میاد.
راه حل میانبری هم نداره
-
نقل قول: مجموعه سوال های مبتدیان
دوستان یه وب ویو دارم که یه بنر از یه سایت رو توی اپلیکیشن اندروید نمایش میده میخوام وقتی کاربر روی بنر کلیک کرد تا 24 ساعت بعد وب ویو قابل کلیک نباشه
از این کد استفاده کردم میدونم باید از تابع if استفاده کنم ولی نمیدونم قسمت run چه کدی قرار بدم ممنون میشم کمک کنید
final WebView myWebView = (WebView) findViewById(R.id.webView);
myWebView.loadUrl("https://www.google.com/");
myWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>و
return true;
}
});
}
}, 86400000);
-
نقل قول: مجموعه سوال های مبتدیان
نقل قول:
نوشته شده توسط
karim1989
سلام
میخواستم بدونم تفاوت جاوا با جاوااسکریپ چیه ؟ و از لحاظ بازار کاری کدومش بهتره ؟
همش تفاوته.
به نظر من سینتکس زبان هر چند تا حدی مهمه ولی تفاوت اصلی در کاربرد زبان هست. یعنی فلان زبان با چه هدفی ایجاد شده و قراره کجاها خوب جواب بده و همچنین چه امکاناتی رو در اختیار شما قرار میده.
علاوه بر تفاوت هایی در سینتکس، تفاوت اصلی جاوا و جاوا اسکریپت در کاربردهاشون هست.
جاوا اسکریپت هر چند امروزه در جاهای مختلف مورد استفاده قرار گرفته (بیشتر سینتکس و مدل اجراش و...) ولی هدف اصلی جاوا اسکریپت برای دینامیک کردن صفحات وب سمت کاربر بوده. یک صفحه وب بدون جاوا اسکریپت کار خیلی خاصی نمیتونه انجام بده خصوصا برای صفحات وب امروزی، به جز چند تا لینک که صفحه به صفحه جا به جا میشی یا ارسال فرم یا css که فقط تو ظاهر مورد استفاده قرار میگیره و کاری به عملکرد صفحه نداره. اما امروزه به کمک زبان جاوا اسکریپت صفحات وبی میبینیم که مثل یک نرم افزار پر از امکاناته و کلی پردازش میتونه انجام بده. شما همین نسخه های وب پیام رسان های مختلف مثل تلگرام و... رو ببینید مثل یک اپلیکیشن هست. میشه گفت جاوا اسکریپت در این زمینه تک هست و هیچ رقیب و مشابه ای ندارد (با یک تبصره که قبلا جاوا اپلت و فلش تا حدودی چنین ویژگی هایی رو داشتن اما نه به این صورت که جاوا اسکریپت با صفحه وب مچ شده و اونا درون صفحه قرار میگرفتن به جای مدیریت صفحه)
البته جدیدا جاوااسکریپت در سمت سرور هم استفاده میشه در قالب Node.js یا در بعضی انجین های بازی سازی هم برای دینامیک بازی استفاده می کنن و شاید خیلی جاهای دیگه
اما جاوا خیلی گسترده است. به جز کاری که فقط مختص جاوا اسکریپت بود، جاوا به عنوان سرویس دهنده در سرورها مورد استفاده قرار میگیره (مثل php) و برای ساخت اپلیکیشن های دسکتاپ (ویندوز، لینوکس، مک و...) استفاده میشه. البته جاوا شاخه های دیگه هم داره که یا قدیمی شده یا هم خیلی خاص منظوره هست و همه استفاده نمی کنن مثل جاوا موبایل، جاوا اپلت، جاوا سیستم های نهفته.
ضمنا برای برنامه نویسی اندروید، خب قطعا زبان جاوا که کتابخونه هاش به این زبان ارائه میشه (+ Cpp) هم زبان مناسبی هست. البته هم خانواده های زیادی داره که کار کدنویسی رو راحت کرده ولی همشون کدهاشون به جاوا تبدیل میشه مثل kotlin, scala و...
اما به جز کاربردهای جاوا که ممکنه بگید خب خیلی از زبان ها برخی از این ویژگی ها رو دارن که کاملا درسته، اما جاوا به دلیل قدمت و برنامه نویسان زیادی که داشته کتابخانه های قوی و خیلی زیادی داره که وجه تمایز اصلیش به نظرم همینه. راستی یه ویژگی جاوا این هست که تقریبا کدی که مینویسید بدون نیاز به تغییر روی سیستم عامل های مختلف اجرا میشه.