Java For-each Loop
اما نوع دوم for در جاوا برای چرخیدن در یک آرایه (array) و یا یک مجموعه (collection) کاربرد داره
در این نوع for بر خلاف نوع اول که از index استفاده می کردیم از اعضای اون ارایه و یا مجموعه استفاده می کنیم، به این صورت که تک به تک اون اعضا خونده میشن تا بتونیم ازشون استفاده کنیم
Syntax:
for(Type var:array){ //code to be executed
}
در اینجا منظور از Type همون نوع اعضای آرایه ست
public class ForEachExample { public static void main(String[] args) { int arr[]={12,23,44,56,78}; for(int i:arr){ System.out.println(i);
}
}
}
--------------------------------------------
Output:
12
23
44
56
78
Java While Loop
عملکرد while هم به شکل for هست، به این صورت که برای تکرار بخشی از کد کاربرد داره، اما با این تفاوت که ما تعداد دفعات این تکرار رو نمی دونیم
Syntax:
while(condition){
//code to be executed
}
public class WhileExample { public static void main(String[] args) { int i=1;
while(i<=10){ System.out.println(i++);
}
}
}
--------------------------------------------
Output:
1
2
3
4
5
6
7
8
9
10
Java Infinitive While Loop
اجرای while بینهایت
public class WhileExample2 { public static void main(String[] args) { while(true){ System.out.println("infinitive while loop"); }
}
}
--------------------------------------------
Output:
infinitive while loop
infinitive while loop
infinitive while loop
infinitive while loop
infinitive while loop
ctrl+c
برای خروج از برنامه دکمههای c و ctrl رو میزنیم
Java do-while Loop
عملکرد do-while خیلی شبیه به while هست اما با این تفاوت که در اینجا حداقل یکبار statement اجرا میشه و بعد از اون شرط چک میشه
Syntax:
do{ //code to be executed
} while (condition);
public class DoWhileExample { public static void main(String[] args) { int i=1;
do{ System.out.println(i++);
}while(i<=10);
}
}
--------------------------------------------
Output:
1
2
3
4
5
6
7
8
9
10
Java Infinitive do-while Loop
و اجرای do-while بینهایت
public class DoWhileExample2 {
public static void main(String[] args) {
do{
System.out.println("infinitive do while loop");
}while(true);
}
} --------------------------------------------
Output:
infinitive do while loop
infinitive do while loop
infinitive do while loop
ctrl+c
Java Break Statement
برای خارج شدن از loop و switch می توان از دستور break استفاده کرد، اما معمولا به همراه یک شرط در loop و یک case در switch مثل https://t.me/java_me/95 استفاده میشه
Java Break Statement with Loop
public class BreakExample { public static void main(String[] args) { for(int i=1;i<=10;i++){ if(i==5){ break;
}
System.out.println(i);
}
}
}
--------------------------------------------
Output:
1
2
3
4
در این مثال for در صورتی index مون (همون i) به ۵ میرسه (یعنی شرط مون برقرار هست)، دستور break اجرا میشه و از for خارج میشه
Java Break Statement with Inner Loop
دقت کنید که در inner loop یا (for تو در تو) در صورتی که دستور break توی for داخلی باشه، در صورت برقرار بودن شرط فقط for داخلی break میشه
public class BreakExample2 { public static void main(String[] args) { for(int i=1;i<=3;i++){ for(int j=1;j<=3;j++){ if(i==2&&j==2){ break;
}
System.out.println("In i="+i+" j="+j); }
System.out.println("Out i="+i); }
}
}
--------------------------------------------
Output:
In i=1 j=1
In i=1 j=2
In i=1 j=3
Out i=1
In i=2 j=1
Out i=2
In i=3 j=1
In i=3 j=2
In i=3 j=3
Out i=3
در این مثال در صورت true بودن if برنامه فقط از for داخلی بیرون خواهد آمد
Java Continue Statement
برای skip کردن در loop می توان از دستور continue استفاده
به این ترتیب میتونیم اجرا شدن کد برای یکی از index ها رو skip کنیم
این دستور هم مثل دستور break همراه با یک شرط توی for میاد
public class ContinueExample { public static void main(String[] args) { for(int i=1;i<=10;i++){ if(i==5){ continue;
}
System.out.println(i);
}
}
}
--------------------------------------------
Output:
1
2
3
4
6
7
8
9
10
در این مثال وقتی index مون به ۵ میرسه اجرای عملیات skip میشه به بعدی
Java Continue Statement with Inner Loop
دستور continue در for تو در تو
public class ContinueExample2 { public static void main(String[] args) { for(int i=1;i<=3;i++){ for(int j=1;j<=3;j++){ if(i==2&&j==2){ continue;
}
System.out.println("In i="+i+" j="+j); }
System.out.println("Out i="+i); }
}
}
--------------------------------------------
Output:
In i=1 j=1
In i=1 j=2
In i=1 j=3
Out i=1
In i=2 j=1
In i=2 j=3
Out i=2
In i=3 j=1
In i=3 j=2
In i=3 j=3
Out i=3
Java Comments
برای قرار دادن توضیحات در کدهای جاوا میتوان نوشتهها رو کامنت کرد، این نوشته ها نه در compiler و نه در interpreter (زمان اجرای جاوا) اجرا نخواهند شد
۳ نوع کامنت در جاوا وجود داره
- Single Line Comment
- Multi Line Comment
- Documentation Comment
1) Java Single Line Comment
این نوع کامنت فقط در یک کد کاربرد داره و نوشتههای بعد از اون بصورت توضیحات در خواهند اومد
Syntax:
//This is single line comment
2) Java Multi Line Comment
امکان کامنت کردن چندین خط رو به ما میده
Syntax:
/*
This
is
multi line
comment
*/
3) Java Documentation Comment
این نوع کامنت امکان ساخت documentation از روی این توضیحات رو به ما میده
Syntax:
/**
This
is
documentation
comment
*/
Example:
/** The Calculator class provides methods to get addition and subtraction of given 2 numbers.*/
public class Calculator { /** The add() method returns addition of given numbers.*/
public static int add(int a, int b){return a+b;} /** The sub() method returns subtraction of given numbers.*/
public static int sub(int a, int b){return a-b;} }
در اینجا، هم برای کلاس و هم برای متودهای کلاس، کامنت نوشته شده
بعد کامپایل این کلاس، میتوان از javadoc برای ساخت documentation استفاده کرد
javac Calculator.java
javadoc Calculator.java
این کار باعث ساخته شدن فایلهای html ی میشه که توضیحات توی کلاس رو با خودش داره
Java OOPs Concepts
OOPs (Object Oriented Programming System)
آبجکت (شی) به معنی هر شیای که در دنیای واقعی وجود داره هست، مثل مداد، میز و یا هر چیز دیگهای
و OOP به معنای یک راه حل برای طراحی برنامه ها از طریق objectها و classهاست، که در واقع ۶ مبحث اصلی داره
- Object
- Class
- Inheritance
- Polymorphism
- Abstraction
- Encapsulation
هر موجودیتی که رفتار و حالتی داشته باشه رو می تونیم به عنوان آبجکت در نظر بگیریم
در واقع کلاس مجموعهای از objectهاست
ارث بری در واقع زمانی اتفاق می افته که یک object ویژگیها و رفتارهایی رو از parent object به ارث می بره (به دست میاره)
اینکار باعث میشه از کدها بتونیم دوباره استفاده کنیم، همچنین inheritance قابلیت runtime polymorphism رو به ما میده
پلومورفیسم یا چندریختی به ما اجازه میده تا یک کار رو از روشهای مختلفی انجام بدیم
مثلا کشیدن یک شکل از روشهای مختلف
در جاوا برای انجام polymorphism از method overloading و method overriding استفاده میکنیم
شاید در فارسی بشه به این ویژگی چکیدگی گفت
و به معنی مخفی کردن جزئیات داخلی و نشان دادن قابلیت هاست
در جاوا برای انجام abstraction از abstract class و interface استفاده می کنیم
بستهبندی کردن کد توی یک واحد رو کپسوله کردن میگن، java class یک مثال از این کار هست
OOPs (Object Oriented Programming System)
آبجکت (شی) به معنی هر شیای که در دنیای واقعی وجود داره هست، مثل مداد، میز و یا هر چیز دیگهای
و OOP به معنای یک راه حل برای طراحی برنامه ها از طریق objectها و classهاست، که در واقع ۶ مبحث اصلی داره
- Object
- Class
- Inheritance
- Polymorphism
- Abstraction
- Encapsulation
Object
هر موجودیتی که رفتار و حالتی داشته باشه رو می تونیم به عنوان آبجکت در نظر بگیریم
Class
در واقع کلاس مجموعهای از objectهاست
Inheritance
ارث بری در واقع زمانی اتفاق می افته که یک object ویژگیها و رفتارهایی رو از parent object به ارث می بره (به دست میاره)
اینکار باعث میشه از کدها بتونیم دوباره استفاده کنیم، همچنین inheritance قابلیت runtime polymorphism رو به ما میده
Polymorphism
پلومورفیسم یا چندریختی به ما اجازه میده تا یک کار رو از روشهای مختلفی انجام بدیم
مثلا کشیدن یک شکل از روشهای مختلف
در جاوا برای انجام polymorphism از method overloading و method overriding استفاده میکنیم
Abstraction
شاید در فارسی بشه به این ویژگی چکیدگی گفت
و به معنی مخفی کردن جزئیات داخلی و نشان دادن قابلیت هاست
در جاوا برای انجام abstraction از abstract class و interface استفاده می کنیم
Encapsulation
بستهبندی کردن کد توی یک واحد رو کپسوله کردن میگن، java class یک مثال از این کار هست
Java Naming conventions
نامگذاری class, package, method و ... در جاوا طبق یک استانداردی انجام میشه، هرچند که رعایت این استانداردها الزامی نمی باشد اما این کار باعث آسان تر شدن خوندن کد توسط خود برنامه نویس و بقیه برنامه نویس ها میشه
- class name
یک اسم که با حرف بزرگ شروع میشه، مثل String, Color, Button, System و ...
- interface name
یک صفت که با حرف بزرگ شروع میشه، مثل Runnable, Remote, ActionListener و ...
- method name
یک فعل که با حرف کوچک شروع میشه، مثل actionPerformed, main, print, println و ...
- variable name
با حرف کوچک شروع میشه، مثل firstName, orderNumber و ...
- package name
تمامی حروف کوچک هستن، مثل java, lang, sql, util و ...
- constants name
تمامی حروف بزرگ هستن، مثل RED, YELLOW, MAX_PRIORITY و ...
CamelCase in java naming conventions
نام گذاری class, interface, method, variable در جاوا به صورت camelCase هست به این صورت که اگر یه اسم از ترکیب دوتا کلمه باشه، کلمه دوم با حرف بزرگ شروع میشه مثل firstName, ActionEvent و ...
Object and Class in Java
یک تعریف دیگه ای از object و class هست که در واقع میگه object یک موجودیت فیزیکی و همچنین یک موجودیت منطقی هست اما class فقط یک موجودیت منطقی هست
Object in Java
هر موجودیتی که رفتار و حالتی داشته باشه رو به عنوان object میشناسیم، مثل میز، مداد، ماشین و ... . میتونه فیزیکی و یا منطقی باشه (محسوس و نامحسوس). سیستم بانکی رو میشه به عنوان یک موجودیت نامحسوس شناخت.
یک object سه تا ویژگی داره
- state
نشان دهنده دیتای object هست
- behavior
نشان دهنده رفتار و عملکرد یک object
- identity
هویت یک object معمولا با یک id منحصر به فرد (unique) مشخص میشه که در واقع برای کاربران خارجی قابل رویت نیست، و توسط خود jvm برای شناسایی object ها از هم دیگه استفاده میشه
برای مثال مداد یک object هست که یه اسم داره و یه رنگ (رنگ و اسم به عنوان state هستن)
از مداد برای نوشتن استفاده میشه (نوشتن به عنوان behavior هست)
Object is an instance of a class
کلاس یک قالب و یا یک طرح برای ساخت یک object هست، در واقع object یه نمونهای از یک class هست
تعریفهایی که برای یک object وجود داره
- یک موجودیت در دنیای واقعی
- یک موجودیت در زمان اجرا (run time)
- یک موجودیت که دارای رفتار و حالت هست
- یک نمونه از یک class
Class in Java
کلاس یک مجموعهای از object هاست که دارای ویژگی های مشترکی هستن، همچنین کلاس یک قالب و یا یک طرح برای ساخت یک object هست. class یک موجودیت منطقی هست و نمی تونه فیزیکی باشه
یک class تشکیل شده از
- fields
- methods
- constructors
- blocks
- nested class and interface
Syntax to declare a class:
class <class_name>{
field;
method;
} Instance variable in Java
متغیرهایی که در داخل یک class و خارج یک method تعریف میشن رو به عنوان instance variable میشناسیم
این نوع متغیرها مموریای در زمان کامپایل نمیگیرن و فقط در زمان اجرا (runtime) وقتی که object ایجاد میشه مموری میگیره، بخاطر همین بهش میگن instance variable
Method in Java
متود در جاوا برای نمایش رفتار یک object بکار میره و باعث بهینه شدن کد میشه و به کد قابلیت استفاده مجدد رو میده
new keyword in Java
کلمه new در جاوا باعث میشه در زمان runtime برای ساخت object مموری اختصاص پیدا کنه، این مموری اختصاص پیدا شده در Heap memory قرار داره.
Object and Class Example
File: Student.java
در این مثال با استفاده از new از کلاس Student یک آبجکت می سازیم به اسم s1
دقت کنید که متود main در خود کلاس Student هست
File: TestStudent1.java
تفاوت این مثال در این هست که ما از یک کلاس دیگه برای متود main مون استفاده کردیم، که نسبت به مثال قبلی روش بهتری هست
دقت کنید که ما هم می تونیم چندتا کلاس را در جاوا فایلهای متفاوتی داشته باشیم و هم اینکه در یک جاوا فایل اونا رو داشته باشیم. در هر دو روش در زمان compile برای هر کلاس، فایل های متفاوتی (class.) ساخته خواهند شد
File: Student.java
class Student{
int id;//field or data member or instance variable
String name;
public static void main(String args[]){
Student s1=new Student();//creating an object of Student
System.out.println(s1.id);
System.out.println(s1.name);
}
}--------------------------------------------
Output:
0
null
در این مثال با استفاده از new از کلاس Student یک آبجکت می سازیم به اسم s1
دقت کنید که متود main در خود کلاس Student هست
File: TestStudent1.java
class Student{
int id;
String name;
}
class TestStudent1{
public static void main(String args[]){
Student s1=new Student();
System.out.println(s1.id);
System.out.println(s1.name);
}
}--------------------------------------------
Output:
0
null
تفاوت این مثال در این هست که ما از یک کلاس دیگه برای متود main مون استفاده کردیم، که نسبت به مثال قبلی روش بهتری هست
دقت کنید که ما هم می تونیم چندتا کلاس را در جاوا فایلهای متفاوتی داشته باشیم و هم اینکه در یک جاوا فایل اونا رو داشته باشیم. در هر دو روش در زمان compile برای هر کلاس، فایل های متفاوتی (class.) ساخته خواهند شد
3 Ways to initialize object
۳ روش برای initialize کردن object وجود داره (ریختن دیتا توی آبجکت)
- By reference variable
با استفاده از مقداردهی مستقیم به متغیر
- By method
با استفاده از متود
- By constructor
با استفاده از کانستراکتور
Object and Class Example: Initialization through reference
File: TestStudent3.java
class Student{
int id;
String name;
}
class TestStudent3{
public static void main(String args[]){
//Creating objects
Student s1=new Student();
Student s2=new Student();
//Initializing objects
s1.id=101;
s1.name="Sonoo";
s2.id=102;
s2.name="Amit";
//Printing data
System.out.println(s1.id+" "+s1.name);
System.out.println(s2.id+" "+s2.name);
}
}
--------------------------------------------
Output:
101 Sonoo
102 Amitدر این مثال☝️مقداردهی از طریق صدا زدن مستقیم متغیر انجام میشه
Object and Class Example: Initialization through method
File: TestStudent4.java
class Student{
int rollno;
String name;
void insertRecord(int r, String n){
rollno=r;
name=n;
}
void displayInformation(){
System.out.println(rollno+" "+name);
}
}
class TestStudent4{
public static void main(String args[]){
Student s1=new Student();
Student s2=new Student();
s1.insertRecord(111,"Karan");
s2.insertRecord(222,"Aryan");
s1.displayInformation();
s2.displayInformation();
}
}
--------------------------------------------
Output:
111 Karan
222 Aryanدر این مثال☝️مقداردهی متغیرها از طریق متود انجام میشه، در واقع وظیفه مقداردهی رو متود انجام میده و ما با صدا زدن متود میتونیم متغیرهای object مون رو مقداردهی کنیم
Object and Class Example: Initialization through constructor
این مورد رو بعدا بررسی می کنیم
توجه کنید که راه های مختلفی برای ساخت object وجود داره که بعدا اونا رو بررسی خواهیم کرد
- By new keyword
- By newInstance() method
- By clone() method
- By deserialization
- By factory method etc
Anonymous object
آنونیموس آبجکت ها درواقع آبجکت های بدون نامی هستن که هیچ reference ی به اونا وجود نداره، چون ما همون موقع که میسازیم شون همون موقع هم ازشون استفاده می کنیم.
اگر از object ی فقط برای یک بار استفاده بشه، میتونیم از این ویژگی استفاده کنیم.
در مثال زیر ما یک object میسازیم و متودش رو صدا میزنیم
Calculation c=new Calculation();
c.fact(5);
اما از طریق anonymous object این کار رو میشه به این صورت انجام داد
new Calculation().fact(5);
class Calculation{
void fact(int n){
int fact=1;
for(int i=1;i<=n;i++){
fact=fact*i;
}
System.out.println("Factorial is "+fact);
}
public static void main(String args[]){
new Calculation().fact(5);//calling method with anonymous object
}
}
--------------------------------------------
Output:
Factorial is 120در این مثال☝️با استفاده از anonymous object یک آبجکت میسازیم و متودش رو صدا میزنیم
Constructor in Java
کانستراکتور در جاوا در واقع یک متود هست که برای مقداردهی اولیه object به کار میره و در زمان ساخت object صدا زده میشه.
Rules for creating java constructor
دوتا قانون اصلی برای constructor وجود داره، اول اینکه نام متود همنام با نام class هست و دوم اینکه این متود هیچ مقدار بازگشتیای نداره
Types of java constructors
دو نوع constructor وجود داره، در نوع اول هیچ نوع ورودیای نمیگیره که بهش میگن Default constructor، اما در نوع دوم پارامتر ورودی میگیره که بهش میگن Parameterized constructor
Java Default Constructor
Syntax:
<class_name>(){}Example:
class Bike1{
Bike1(){
System.out.println("Bike is created");
}
public static void main(String args[]){
Bike1 b=new Bike1();
}
}
--------------------------------------------
Output:
Bike is createdدر این مثال☝️از no-arg constructor) default constructor) استفاده شده است.
Example:
class Student3{ int id;
String name;
void display(){System.out.println(id+" "+name);
}
public static void main(String args[]){ Student3 s1=new Student3();
Student3 s2=new Student3();
s1.display();
s2.display();
}
}
--------------------------------------------
Output:
0 null
0 null
در این مثال☝️، ما هیچ کانستراکتوری برای کلاس مون ننوشتیم، بخاطر همین کامپایلر برامون یک default constructor میسازه و مقدارهای 0 و null رو به متغیرها میده. (همون default value)