Learn Java
Photo
لازم است برای کسانی که بی اطلاع هستند بگوییم که رتبه بندی TIOBE بر اساس تعداد جستجو نام زبان برنامه نویسی به عنوان یک کلمه کلیدی در موتور جستجو محاسبه می شود. در حالی که PYPL از داده های خام موجود در Google Trends برای محاسبه رتبه بندی استفاده می کند و بر اساس بیشترین جستجو برای یک آموزش زبان برنامه نویسی، محبوب ترین را شناسایی میکند.
بر اساس اطلاعات تحقیقاتی این دو شرکت در ماه نوامبر 2017، دو فهرست با معیارهای مختلف، از محبوب ترین و برترین زبان های برنامه نویسی در سال 2017 تهیه شده است ...
و در هر دو نتیجه نشان داده شده است جاوا برترین زبان و پس از ان سی و سی پلاس پلاس به ترتیب در رتبه های دوم و سوم قرار دارند
بر اساس اطلاعات تحقیقاتی این دو شرکت در ماه نوامبر 2017، دو فهرست با معیارهای مختلف، از محبوب ترین و برترین زبان های برنامه نویسی در سال 2017 تهیه شده است ...
و در هر دو نتیجه نشان داده شده است جاوا برترین زبان و پس از ان سی و سی پلاس پلاس به ترتیب در رتبه های دوم و سوم قرار دارند
Modules ها در جاوا
تجربه نشان داده بهترین روش برای ساخت و نگهداری یک برنامه بزرگ این است که برنامه به قسمت های کوچک تر یا ماژول
(modules)
تقسیم شود به نحوی که هر قسمت وظیفه ی خاصی داشته باشید . در اینحالت میتوان به طرز شاسته ای بر برنامه مدیریت داشت. این روش به نام روش تقسیم و غلبه
(divide and conquer) معروف است.
تجربه نشان داده بهترین روش برای ساخت و نگهداری یک برنامه بزرگ این است که برنامه به قسمت های کوچک تر یا ماژول
(modules)
تقسیم شود به نحوی که هر قسمت وظیفه ی خاصی داشته باشید . در اینحالت میتوان به طرز شاسته ای بر برنامه مدیریت داشت. این روش به نام روش تقسیم و غلبه
(divide and conquer) معروف است.
چرا متد main به صورت استاتیک اعلان شده است ؟
زمانیکه jvm را همراه دستور java به اجرا در می اورید. مبادرت به فراخوانی متد main از کلاسی میکنید که انرا تعیین کرده اید. اعلان main بصورت استاتیک به jvm امکان فراخوانی main را بدون ایجاد یک شی از کلاس میدهد. زمانی که برنامه را به اجرا در می اورید نام کلاس را بعنوان یک ارگومان در دستور جاوا مشخص میکنید , بصورت :
java classname argument1 argument2...
jvm اقدام به بازکردن کلاس مشخص شده توسط classname و استفاده از نام ان کلاس برای فراخوانی متد main میکند.
در دستور فوق , classname یک ارگونان خط فرمان است که به jvm نشان میدهد که کدام کلاس اجرا شود. در ادامه ی classnamw میتوان لیستی از رشته ها (جدا شده با فاصله) را بعنوان ارگومان های خط فرمان مشخص کرد که jvm انهارا به برنامه ارسال میکند
چنین ارگومان هایی برای تعیین عملکرد برنامه بکار گرفته میشوند.
زمانیکه jvm را همراه دستور java به اجرا در می اورید. مبادرت به فراخوانی متد main از کلاسی میکنید که انرا تعیین کرده اید. اعلان main بصورت استاتیک به jvm امکان فراخوانی main را بدون ایجاد یک شی از کلاس میدهد. زمانی که برنامه را به اجرا در می اورید نام کلاس را بعنوان یک ارگومان در دستور جاوا مشخص میکنید , بصورت :
java classname argument1 argument2...
jvm اقدام به بازکردن کلاس مشخص شده توسط classname و استفاده از نام ان کلاس برای فراخوانی متد main میکند.
در دستور فوق , classname یک ارگونان خط فرمان است که به jvm نشان میدهد که کدام کلاس اجرا شود. در ادامه ی classnamw میتوان لیستی از رشته ها (جدا شده با فاصله) را بعنوان ارگومان های خط فرمان مشخص کرد که jvm انهارا به برنامه ارسال میکند
چنین ارگومان هایی برای تعیین عملکرد برنامه بکار گرفته میشوند.
اتصال رشته ها :
جاوا به شی های رشته اجازه می دهد تا با در کنار هم قرار دادن رشته های کوچکتر , رشته های بزرگتر ایجاد کنند
اینکار توسط عملگر + یا =+ صورت میگیرد و به عنوان اتصال رشته شناخته میشود . زمانیکه هر دو عملوند+ از نوع رشته باشند. عملگر + اقدام به ایجاد یک رشته ی جدید میکند که مرکب از کاراکتر های قرار گرفته در سمت چپ و راست خودش است.
برای مثال عبارت
"hello"+ " java"
رشته ی "hello java" را ایجاد میکند
جاوا به شی های رشته اجازه می دهد تا با در کنار هم قرار دادن رشته های کوچکتر , رشته های بزرگتر ایجاد کنند
اینکار توسط عملگر + یا =+ صورت میگیرد و به عنوان اتصال رشته شناخته میشود . زمانیکه هر دو عملوند+ از نوع رشته باشند. عملگر + اقدام به ایجاد یک رشته ی جدید میکند که مرکب از کاراکتر های قرار گرفته در سمت چپ و راست خودش است.
برای مثال عبارت
"hello"+ " java"
رشته ی "hello java" را ایجاد میکند
عملکرد پشته فراخوانی و رکورد فعالیت ها :
برای درک نحوه فراخوانی متد در جاوا ابتدا نیاز است به بررسی ساختما داده (یعنی کلکسیونی از ایتم های داده مرتبط با هم) بنام پشته (stack )بپردازیم. میتوانید پشته را همانند تعدادی بشقاب که روی هم قرار گرفته اند در نظر بگیرید هنگامی که بشقابی روی بقیه ی بشقاب ها قرار میگیرد , معمولا در بالای بشقاب ها جای داده میشود (هیچ کس از وسط بشقاب ها بشقابی قرار نمیده) به این عمل گذاشتن یا push کردن بشقاب در پشته گفته میشود ,
در مثالی مشابه هنگامی که بشقابی برداشته میشود معمولا از بالای بشقاب ها برداشته خواهد شد به این عمل برداشتن یا pop کردن بشقاب از پشته گفته میشود
پشته ها بعنوان ساختمان های داده (last-in, last-out)
Lifo شناخته میشوند بدین معنی که اخرین ایتمی که در پشته گذاشته میشود اولین ایتی است که از پشته برداشته میشود
برای درک نحوه فراخوانی متد در جاوا ابتدا نیاز است به بررسی ساختما داده (یعنی کلکسیونی از ایتم های داده مرتبط با هم) بنام پشته (stack )بپردازیم. میتوانید پشته را همانند تعدادی بشقاب که روی هم قرار گرفته اند در نظر بگیرید هنگامی که بشقابی روی بقیه ی بشقاب ها قرار میگیرد , معمولا در بالای بشقاب ها جای داده میشود (هیچ کس از وسط بشقاب ها بشقابی قرار نمیده) به این عمل گذاشتن یا push کردن بشقاب در پشته گفته میشود ,
در مثالی مشابه هنگامی که بشقابی برداشته میشود معمولا از بالای بشقاب ها برداشته خواهد شد به این عمل برداشتن یا pop کردن بشقاب از پشته گفته میشود
پشته ها بعنوان ساختمان های داده (last-in, last-out)
Lifo شناخته میشوند بدین معنی که اخرین ایتمی که در پشته گذاشته میشود اولین ایتی است که از پشته برداشته میشود
عبارت break :
عبارت break با اجرا در عبارات while, do...while, for, یا switch سبب میشود تا کنترل بلافاصله از عبارت خارج شده , و برانامه با اولین عبارت پس از عبارت ادامه یابد. معمولا از دستور break برای خارج شدن زود هنگام از حلقه یا پرش از مابقی switch استفاده میشود
توضیح عملکرد break در for :
` public class LeaenJava {
public static void main (String[] args) {
int count;
for (count =1; count <= 10; count ++)
if (count == 5)
break;
System.out.printf("%d", count);
}
System.out.printf("%nBroke out of loop at count = %d%n", count)
}
} `
output :
1 2 3 4
Broke out of loop at count = 5
عبارت break با اجرا در عبارات while, do...while, for, یا switch سبب میشود تا کنترل بلافاصله از عبارت خارج شده , و برانامه با اولین عبارت پس از عبارت ادامه یابد. معمولا از دستور break برای خارج شدن زود هنگام از حلقه یا پرش از مابقی switch استفاده میشود
توضیح عملکرد break در for :
` public class LeaenJava {
public static void main (String[] args) {
int count;
for (count =1; count <= 10; count ++)
if (count == 5)
break;
System.out.printf("%d", count);
}
System.out.printf("%nBroke out of loop at count = %d%n", count)
}
} `
output :
1 2 3 4
Broke out of loop at count = 5
تبدیل متغیر ها به یکدیگر در جاوا
در زبان جاوا نیز به مشابه سایر زبان های برنامه نویسی روش هایی برای تبدیل متغیرها به یکدیگر وجود دارد که در این مقاله به برخی از آنها اشاره می گردد.
1- تبدیل string به double
بطور کلی برای تبدیل sting به double سه روش متفاوت وجود دارد که در ذیل بدان ها اشاره می شود:
روش اول استفاده از Double.parseDouble
public static double parseDouble(String str) throws NumberFormatException
در این متد مقدار string از طریق انداختن آن در استتثناها ، به نوع double تبدیل می شود و استثناهای آن به شرح زیر می باشد:
NullPointerException این استثنا زمانی رخ خواهد داد که مشخص شود که مقدار بازگردانده شده از string به double تهی است.
NumberFormatException این استثنا زمانی رخ خواهد داد که مشخص شود که فرمت رشته بازگردانده شده به نوع double، معتبر نیست.
سینتکس کلی آن به شرح زیر می باشد.
String str="15.20";
Double variable= Double.parseDouble(str);
روش دوم: استفاده از Double.valueOf سینتکس کلی آن به شکل زیر می باشد
String str="140.10";
Double variable= Double.valueOf(str);
روش سوم : استفاده از کلاس سازنده Double که سینتکس کلی آن به شرح زیر می باشد:
String str="130.302";
Double variable= new Double(str);
مثال:
ublic class Convert{
public static void main(String args[]){
//parseDouble استفاده از روش
String str="130.102";
Double variable= Double.parseDouble(str);
System.out.println(variable);
// استفاده از روش کلاس سازنده
String str2="130.102"";
Double var2= new Double(str2);
System.out.println(var2);
//valueOf استفاده از روش
String str3="130.102"";
Double var3= Double.valueOf(str3);
System.out.println(var3);
}
}
خروجی:
130.102
130.102
130.1
2- تبدیل integer به String
برای تبدیل متغیرهای int به نوع string از روش String.valueOf استفاده می کنیم دستور زیر راببینید:
int variable = 15;
String str = String.valueOf(variable);
3- تبدیل String به integer
برای تبدیل متغیرهای String به integer از روش Integer.parseInt و Integer.valueOf استفاده می کنیم. دستور زیر را ببینید:
String num = "17";
int var = Integer.parseInt(num);
System.out.println(var);
روش دوم :
String num = "17";
int var = Integer.valueOf(num);
System.out.println(var);
4- تبدیل String به Long
برای تبدیل فوق از روش parseLong استفاده می کنیم به مثال زیر دقت کنید.
String num = "17";
Long var = Long.parseLong(num);
System.out.println(var);
5- تبدیل integer به double
برای تبدیل integer به double به صورت زیر عمل می کنیم.
int var = 12;
double dvar = var;
در زبان جاوا نیز به مشابه سایر زبان های برنامه نویسی روش هایی برای تبدیل متغیرها به یکدیگر وجود دارد که در این مقاله به برخی از آنها اشاره می گردد.
1- تبدیل string به double
بطور کلی برای تبدیل sting به double سه روش متفاوت وجود دارد که در ذیل بدان ها اشاره می شود:
روش اول استفاده از Double.parseDouble
public static double parseDouble(String str) throws NumberFormatException
در این متد مقدار string از طریق انداختن آن در استتثناها ، به نوع double تبدیل می شود و استثناهای آن به شرح زیر می باشد:
NullPointerException این استثنا زمانی رخ خواهد داد که مشخص شود که مقدار بازگردانده شده از string به double تهی است.
NumberFormatException این استثنا زمانی رخ خواهد داد که مشخص شود که فرمت رشته بازگردانده شده به نوع double، معتبر نیست.
سینتکس کلی آن به شرح زیر می باشد.
String str="15.20";
Double variable= Double.parseDouble(str);
روش دوم: استفاده از Double.valueOf سینتکس کلی آن به شکل زیر می باشد
String str="140.10";
Double variable= Double.valueOf(str);
روش سوم : استفاده از کلاس سازنده Double که سینتکس کلی آن به شرح زیر می باشد:
String str="130.302";
Double variable= new Double(str);
مثال:
ublic class Convert{
public static void main(String args[]){
//parseDouble استفاده از روش
String str="130.102";
Double variable= Double.parseDouble(str);
System.out.println(variable);
// استفاده از روش کلاس سازنده
String str2="130.102"";
Double var2= new Double(str2);
System.out.println(var2);
//valueOf استفاده از روش
String str3="130.102"";
Double var3= Double.valueOf(str3);
System.out.println(var3);
}
}
خروجی:
130.102
130.102
130.1
2- تبدیل integer به String
برای تبدیل متغیرهای int به نوع string از روش String.valueOf استفاده می کنیم دستور زیر راببینید:
int variable = 15;
String str = String.valueOf(variable);
3- تبدیل String به integer
برای تبدیل متغیرهای String به integer از روش Integer.parseInt و Integer.valueOf استفاده می کنیم. دستور زیر را ببینید:
String num = "17";
int var = Integer.parseInt(num);
System.out.println(var);
روش دوم :
String num = "17";
int var = Integer.valueOf(num);
System.out.println(var);
4- تبدیل String به Long
برای تبدیل فوق از روش parseLong استفاده می کنیم به مثال زیر دقت کنید.
String num = "17";
Long var = Long.parseLong(num);
System.out.println(var);
5- تبدیل integer به double
برای تبدیل integer به double به صورت زیر عمل می کنیم.
int var = 12;
double dvar = var;
ازمون :
جمع یک مقدار از نوع double و یک مقدار از نوع int و یک مقدار از نوع float، در نهایت از نوع double خواهد بود.
پاسخ : صحیح
شما می توانید با استفاده از یک متحد ساز، یک مقدار از یک نوع دیگر را با یک نوع دلخواه ذخیره کنید.
پاسخ : صحیح
هنگامی که شما بر روی دو عملوند با نوع مختلف، عملیات محاسباتی انجام می دهید، شما باید آنها را به یک نوع، مورد محاسبه قرار دهید.
پاسخ :غلط
دلیل :
هنگامی که شما بر روی دو عملوند با نوع مختلف، عملیات محاسباتی انجام می دهید، جاوا آنها را به یک نوع متحد ساز محاسبه می کند.
جمع یک مقدار از نوع double و یک مقدار از نوع int و یک مقدار از نوع float، در نهایت از نوع double خواهد بود.
پاسخ : صحیح
شما می توانید با استفاده از یک متحد ساز، یک مقدار از یک نوع دیگر را با یک نوع دلخواه ذخیره کنید.
پاسخ : صحیح
هنگامی که شما بر روی دو عملوند با نوع مختلف، عملیات محاسباتی انجام می دهید، شما باید آنها را به یک نوع، مورد محاسبه قرار دهید.
پاسخ :غلط
دلیل :
هنگامی که شما بر روی دو عملوند با نوع مختلف، عملیات محاسباتی انجام می دهید، جاوا آنها را به یک نوع متحد ساز محاسبه می کند.
تبدیل رشته به عدد در جاوا
گاهی لازم است رشته ای عددی را در جاوا به عدد معادل آن تبدیل کنیم. برای این کار می توان از متد parseInt که در کلاس Integer است استفاده کرد.
مثال:
int a = Integer.parseInt("1234");
گاهی لازم است رشته ای عددی را در جاوا به عدد معادل آن تبدیل کنیم. برای این کار می توان از متد parseInt که در کلاس Integer است استفاده کرد.
مثال:
int a = Integer.parseInt("1234");
تفاوت String.valueOf و Integer.toString
بر اساس مستندات جاوا، در صورتیکه پارامتر ورودی String.valueOf() مقدار null باشد، مقدار "null" را برمیگرداند، در حالی که اگر ورودی Integer.toString() مقدار null باشد خطای NullPointerException رخ خواهد داد.
مثال مقدار null در String.valueOf
Integer number = null;
String result = String.valueOf(number);
System.out.println(result);
خروجی
null
مثال مقدار null در Integer.ToString
Integer number = null;
String result = Integer.toString(number);
System.out.println(result);
خروجی
Exception in thread "main" java.lang.NullPointerException at fortest.Main.main(Main.java:6)
بر اساس مستندات جاوا، در صورتیکه پارامتر ورودی String.valueOf() مقدار null باشد، مقدار "null" را برمیگرداند، در حالی که اگر ورودی Integer.toString() مقدار null باشد خطای NullPointerException رخ خواهد داد.
مثال مقدار null در String.valueOf
Integer number = null;
String result = String.valueOf(number);
System.out.println(result);
خروجی
null
مثال مقدار null در Integer.ToString
Integer number = null;
String result = Integer.toString(number);
System.out.println(result);
خروجی
Exception in thread "main" java.lang.NullPointerException at fortest.Main.main(Main.java:6)
چگونه در جاوا کاراکتر تصادفی بین کاراکترهای a تا z تولید کنیم؟
پاسخ:
package start1397;
import java.util.Random;
public class Test4 {
public static void main(String[] args) {
Random rnd = new Random();
char c = (char) (rnd.nextInt(26) + 'a');
System.out.println(c);
}
}
با تست برنامه بالا هر بار برای شما یک کاراکتر انگلیسی تصادفی تولید می شود، برای مثال بعد اجرای کد جاوای بالا کاراکتر زیر به صورت تصادفی تولید شده است:
Output:
i
@this_java
پاسخ:
package start1397;
import java.util.Random;
public class Test4 {
public static void main(String[] args) {
Random rnd = new Random();
char c = (char) (rnd.nextInt(26) + 'a');
System.out.println(c);
}
}
با تست برنامه بالا هر بار برای شما یک کاراکتر انگلیسی تصادفی تولید می شود، برای مثال بعد اجرای کد جاوای بالا کاراکتر زیر به صورت تصادفی تولید شده است:
Output:
i
@this_java
پاک کردن عناصر درون HashSet :
void clear
برای پاک کردن تمامی عناصر HashSet استفاده میشود
public class Connect
{
public static void main (String[] args)
{
HashSet<String> ssm = new HashSet<String😠);
ssm.add("PArss");
System.out.println("Befor Clear : "+ssm);
ssm.clear();
System.out.println("After Clear : "+ssm);
}
}
Out Put:
Befor Clear : [PArss]
After Clear : []
@this_java
void clear
برای پاک کردن تمامی عناصر HashSet استفاده میشود
public class Connect
{
public static void main (String[] args)
{
HashSet<String> ssm = new HashSet<String😠);
ssm.add("PArss");
System.out.println("Befor Clear : "+ssm);
ssm.clear();
System.out.println("After Clear : "+ssm);
}
}
Out Put:
Befor Clear : [PArss]
After Clear : []
@this_java
چک کردن موجود بودن یک عنصر در HashSet
boolean contains(object)
اگر عنصر وجود داشت مقدار true را بر میگرداند
در غیر این صورت مقدار برگشتی false خواهد بود
به مثال زیر توجه کنید :
public class Connect
{
public static void main (String[] args)
{
HashSet<String> ssm = new HashSet<String😠);
ssm.add("PArss");
ssm.contains("parsa");
System.out.println(ssm);
System.out.println(ssm.contains("parsa"));
}
}
OUTPUT :
[PArss]
false
@this_java
boolean contains(object)
اگر عنصر وجود داشت مقدار true را بر میگرداند
در غیر این صورت مقدار برگشتی false خواهد بود
به مثال زیر توجه کنید :
public class Connect
{
public static void main (String[] args)
{
HashSet<String> ssm = new HashSet<String😠);
ssm.add("PArss");
ssm.contains("parsa");
System.out.println(ssm);
System.out.println(ssm.contains("parsa"));
}
}
OUTPUT :
[PArss]
false
@this_java
craps.java
1.4 KB
مبحث اموزشی : بازی شانس ; معرفی enum
یکی از بازی های مورد علاقه در بسیاری از نقاط جهان craps نام دارد که با طاس انجام میشود....
یکی از بازی های مورد علاقه در بسیاری از نقاط جهان craps نام دارد که با طاس انجام میشود....
محاسبه ی فاکتوریل در جاوا :
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
int n, fact = 1;
Scanner input = new Scanner(System.in);
System.out.println("Enter Number Of N:");
n = input.nextInt();
for (int i = 1; i <= n; i++) {
fact = fact * i;
}
System.out.println("Factorial(" + " " + n + " ) " + "is " + fact);
}
}
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
int n, fact = 1;
Scanner input = new Scanner(System.in);
System.out.println("Enter Number Of N:");
n = input.nextInt();
for (int i = 1; i <= n; i++) {
fact = fact * i;
}
System.out.println("Factorial(" + " " + n + " ) " + "is " + fact);
}
}