# فناوری جاوا > برنامه‌نویسی جاوا > آموزش: آموزش کامل برنامه نویسی جاوا

## dasssnj

*به نام خدا
**آموزش برنامه نویسی جاوا
**سلام دوستان .*
*دیدم آموزش درست و حسابی برای جاوا توی انجمن نیست گفتم دست به کار بشم و یه آموزش کامل درست کنم .* 

*ابتدا شما باید برنامه ی نت بینز و JDK را دانلود و نصب کنید.* 

*سرفصل هر آموزشی که ایجاد می کنم اینجا قرار میگیره :
*




> بخش اول :
> 1-  نوشن یک برنامه ی ساده
> 2- انواع داده های پایه در جاوا
> 3- دوره ی حیات و محدوده ی دستیابی متغیر ها
> 4 - تبدیل داده ها (Casting)
>  5 - کار با رشته ها در جاوا (متن ها)
>  6 - آرایه ها


*همه ی سورس های این آموزش ها تست شده و سالم هستند.*


*ابتدا باید بگم من مثل بعضی از کتابای جاوا نمی رم سراغ اینکه جاوا چیه و کی ساخته شده و ... چون می دونم خیلی علاقه مند به بحث جاوا هستید سریع میرم سراغ آموزش .*

*اگه تاپیک قفله به این خاطره که کسی اسپم نزنه و فقط آموزش ها در دسترس کاربران باشه .*
*اگه نظری در رابطه با آموزش ها دارید توی بخش انتقادات و پیشنهادات مطرح کنید.

**اگه این آموزش به درد شما خورد و ازش خوشتون اومد ، کافیه روی دکمه ی تشکر  آن پست کلیک کنید
*

----------


## dasssnj

*بخش اول :*
*1- نوشتن یک برنامه ی ساده* :


در این آموزش برنامه ی ساده ای با جاوا می نویسیم که یک پیغام را در صفحه نمایش چاپ کند .

اول از همه یه پروژه ی جاوا به اسم test توی نت بینز بسازید . می بینید که یک فایل با فرمت java توی پروژه ایجاد شده

Clipboarder.2014.08.23-006.jpg

Clipboarder.2014.08.23-008.png



اسم فایل جاوا باید Test.java باشه

Clipboarder.2014.08.23-005.png

فایل جاوا را باز کنید و کد زیر را در آن وارد کنید
(البته باید خود نت بینز  یه قسمتی از این کد را نوشته باشه)


package test;


public class Test {


    public static void main(String[] args) {


        System.out.println("Hello , World !!!");


    }
    
}



در منوی Run نت بینز گزینه ی Run Project را انتخاب کنید و خروجی را در قسمت Output مشاهده کنید .
از دکمه ی F6 هم می تونید استفاده کنید


خروجی :
Hello , World !!!

Clipboarder.2014.08.23-004.png

حالا کد ها را تشریح می کنیم :


مربوط به پکیجی میشه که فایل جاوا توش قرار داره  که بعدا در مورد پکیج توضیح می دهم:
package test;


مربوط به کلاس جاوا میشه که اونم بعدا کامل توضیح میدم (فقط بدونید اسم کلاس باید با اسم فایل جاوا یکی باشه و همه ی کد ها باید درون کلاس نوشته بشن):
public class Test {


متد شروع برنامه(بعدا در مورد متد ها هم توضیح میدم , فقط بدونید برنامه درون این متد نوشته میشه و اینجا جاییه که برنامه ازش شروع  میشه )
public static void main(String[] args) {


حالا مهمترین بخش . این دستور برای چاپ کردن پیغام در کنسول استفاده میشه :
System.out.println("Hello , World !!!");


از این به بعد از این کد برای نمایش پیغام استفاده خواهیم کرد.
System.out.println();

----------


## dasssnj

*بخش اول :

2 - انواع داده های پایه در جاوا :*

هشت نوع داده ی پایه در جاوا وجود دارد :
byte , short , int , long , char , float , double , boolean


این داده ها را می توان در 4 گروه تقسیم کرد:


❑* اعداد صحیح* : اعضای این گروه اعداد کامل و علامت دار می باشند  :
byte , short , int , long

❑* اعداد اعشاری* : اعضای این گروه اعداد اعشاری با ممیز شناور هستند :
float , double

❑* کاراکتر ها* : این گروه یک عضو دارد و برای نمایش کاراکتر هایی از قبیل حروف و ارقام است:
char

❑* بولی* : این گروه هم یک عضو دارد و برای نمایش مقادیر صحیح و غلط (true/false) به کار می رود:
boolean

==================================================  ==================================


*اعداد صحیح :*
*در جاوا 4 نوع عدد صحیح وجود دارد که به بررسی هر کدام به صورت جداگانه می پردازیم:*


*byte :
*
کوچکترین نوع اعداد صحیح byte است که نوعی عدد صحیح 8 بیتی علامت دار است که محدوده ی آن از -128 تا 127 است.
این نوع داده را با کلمه ی کلیدی byte تعریف می کنیم.
مثال(مثال ها را در متد main بنویسید):

byte first = 50;
byte second;
second = 100;
byte a = 10 , b = 20;
System.out.println("bytes ->");
System.out.println("first : "+first);
System.out.println("second : "+second);
System.out.println("a : "+a);
System.out.println("b : "+b);


*short :*
نوعی عدد صحیح 16 بیتی علامت دار است که محدوده ی آن از -32768 تا 32767 می باشد و با کلمه ی کلیدی short تعریف می شود.
چون این نوع داده زیاد استفاده ندارد توضیح زیادی نمیدهم و فقط یک مثال می زنم:


short x = 1000;
short y = 12345;
short i = 1256, o = 5678;
System.out.println(x);
System.out.println(y);
System.out.println(o);
System.out.println(i);


*int :*
این نوع داده در جاوا بیشترین استفاده را دارد و نوعی عدد صحیح علامت دار 32 بیتی است.محدوده ی آن از -2147483648 تا 2147483647 می باشد.
این نوع داده با کلمه ی کلیدی int تعریف می شود.
مثال:


int x = 14000;
int y = 1234567;
int p;
p= 987654;
System.out.println(x);
System.out.println(y);
System.out.println(p);


*long :

*
long بزرگترین نوع عدد علامت دار 64 بیتی در جاواست و مواقعی به کار می رود که int برای نگهداری عدد مورد نظر ما به اندازه ی کافی بزرگ نباشد , یعنی عدد ما عدد بسیار بزرگی باشد . محدوده ی long از -9223372036854775808 تا 9223372036854775808 است و با کلمه ی کلیدی long تعریف می شود.
مثال :

long x = 140076770;
long y = 1234567891011L; // بزرگ تر از int
long p;
p= 159357458;
System.out.println(x);
System.out.println(y);
System.out.println(p);


*توجه کنید که اگر عدد ما بزرگ تر از محدوده ی int باشد بای برای تعریف آن یک حرف L آخر عدد بنویسیم .*

-----------------------------------------------------------------------

*اعداد اعشاری :*
2 نوع عدد اعشاری در جاوا وجود دارد .که هر کدام را مود بررسی قرار خواهیم داد .

*float :*
ای نوع عدد اعشاری برای نگهداری اعداد اعشاری با دقت ساده به کار می رود و مقادیر را در 32 بیت ذخیره می کند.
چون محدوده ی اعداد در بسیار بزرگ و دارای ارقام بزرگ اعشاری است آنها را اینجا مطرح نمی کنم و اگر مایل به دانستن آنها هستید به کتاب های موجود در تاپیک کتابخانه ی جاوا مراجعه کنید . 
این نوع عدد با کلمه ی کلیدی float تغریف میشود .

مثال :

float x = 140076.125f;
float y = 987654.3698f;
float p;
p = 100.001f;
System.out.println(x);
System.out.println(y);
System.out.println(p);


*فراموش نکنید که بعد از نوشتن عدد اعشاری یک حرف f برای مشخص کردن نوع float بگذارید چون در غیر این صورت double شناخته می شود.*

*double :*
این نوع عدد اعشاری برای نگهداری از اعدادی با اعشار بسیار بزرگ به کار می رود و معمولا در محاسباتی که به دقت بالا نیاز داشته باشند استفاده می شود و از 64 بیت برای ذخیره ی عدد استفاده می کند.
این عدد اعشاری با کلمه ی کلیدی double تعریف می شود .
مثال :

double x = 140076423.125556169498455384;
double y = 98765433.3698521894516574987498;
double p;
p = 100.53453;
System.out.println(x);
System.out.println(y);
System.out.println(p);


*همین طور که میبینید ارقام اعشار زیاد اند و نیازی به حرف f نیست.*

-----------------------------------------------------------------

*کاراکتر ها :*
این گروه شامل یک عضو است که همه ی نیاز ها به کاراکتر ها را برطرف می کند.

*char:*
در جاوا برای ذخیره سازی کاراکتر ها از char استفاده میشود . که محدوده ی آن بر خلاف c و C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎ که 8 بیتی هستند 16 بیتی است. زیرا در جاوا سعی شده است که بتوان بسیاری از کاراکتر های زبان های مختلف را استفاده کرد و قطعا برای این کار 8 بیت کم است.
برای تعریف کاراکتر از کلمه ی کلیدی char استفاده می شود.
مثال :

char x = 'x';
char y = '7';
char p = 'b';
System.out.println(x);
System.out.println(y);
System.out.println(p);


*دقت کنید که کاراکتر مورد نظر باید بین دو (  '  ) قرار بگیرد.*

*روی کاراکتر ها را هم مانند اعداد می توان از عملگر های ریاضی استفاده کرد .* خروجی این برنامه را تست کنید .

package test; 
public class Test {

    public static void main(String s[]) {

        char x = 'x';
        System.out.println(x);
        x++;
        System.out.println(x);
    }

}


---------------------------------------------------
*بولی :
**boolean :
*یکی دیگر از انواع مهم داده ها در جاوا boolean است که برای نمایش مقادیر صحیح و غلط استفاده می شود.
boolean فقط دو مقدار true و false را می پذیرد
در مورد این نوع داده در آموزش های بعد توضیح بیشتری خواهم داد.
برای تعریف این نوع داده ها از کلمه ی کلیدی boolean استفاده می شود.
مثال :

boolean b = true;
System.out.println("b = "+b);
b = false;
System.out.println("b = "+b);


*نظرات و پیشنهادات و انتقادات را در تاپیک نظرات و پیشنهادات مطرح کنید.*

----------


## dasssnj

*بخش اول :

3 - دوره ی حیات و محدوده ی دستیابی متغیر ها :*


تا به حال همه ی متغیر هایی که در بالا ذکر کردیم را درون متد main تعریف می کردیم . اما جاوا امکان تعریف متغیر ها در هر محدوده ای را فراهم کرده  است.


هر محدوده در جاوا با *}* شروع و با* {* پایان می یابد. این به این معناست که متغیر هایی که درون این محدوده ها تعریف می شوند در بیرون از این محدوده قابل استفاده نیستند و دوره ی حیات آنها با شروع این محدوده آغاز و با به پایان رسیدن این محدوده تمام می شود.


می توان در جاوا محدوده های تو در تو تعریف کرد. متغیر هایی که در محدوده های درونی تعریف می شوند در محدوده ی بیرونی قایل دستیابی نیستند ولی متغیر هایی که در محدوده ی بیرونی تعریف می شوند برای محدوده هایی که درون این محدوده تعریف شده اند قایل دستیابی اند.به مثال زیر توجه کنید :


   public static void main(String s[]) {
        int local = 20;
        local = 25;
        {
            int hello = 500;
            hello = 555;
            
            local = 50; // به این متغیر دسترسی داریم چون در محدوده ی بالاتری تعریف شده است و هنوز دوره ی حیاتش تمام نشده است.
        }
        hello = 50;// نمی توان به این متغیر دسترسی داشت چون در این محدوده تعریف نشده است.
     
    }




در این برنامه متغیر *local* چون در  محدوده ی بزرگ تر تعریف شده است در محدوده ی درونی قایل دستیابی است . اما متغیر *hello* در محدوده ی درونی تعریف شده است و در محدوده ی بیرونی قایل استفاده نیست. اگر سعی به این کار کنید با خطا مواجه می شوید . همان طور که برنامه ی بالا با خطا مواجه خواهد شد.


*به طور کلی درونی ترین محدوده به تمامی متغیر های محدوده های بیرونی اش دسترسی دارد و بیرونی ترین محدوده فقط به متغیر های درون خودش دسترسی دارد.*

*نکته :
*


> *همه ی متغیر ها پس از تعریف شدن قابل دستیابی اند . یعنی اگر قبل از تعریف متغیری اقدام به تغییر مقدار آن کنید با خطا مواجه می شوید* . به مثال دقت کنید:
> 
> number = 100;
> int number ;
> 
> این کد بر اساس توضیحی که دادم با خطا مواجه خواهد شد چون نمی توان قبلا از تعریف ، مقدار متغیری را عوض کرد.



*برای بهتر فهمیدن مطلب همین الان نت بینز یا اکلیپس را باز کنید و چیز هایی که گفته شد را خودتان بنویسید تا بهتر بیاموزید.*



*هر گونه سوالی داشتید  در بخش نظرات و پیشنهادات و انتقادات مطرح کنید تا به آنها رسیدگی شود .*

----------


## dasssnj

*بخش اول :

تبدیل داده ها (casting):*

در صورتی که دو نوع داده با هم سازگار باشند ، خود جاوا عملیات تبدیل را به صورت خود کار انجام خواهد داد . مثلا int با long سازگار است . پس تبدیل int به long توسط جاوا و بدون نیاز به دخالت ما انجام می گیرد. اما byte و double با هم سازگار نیستند  و ما برای تبدیل آنها به یکدیگر نیازمند روشی هستیم به نام casting .


*تبدیلات خودکار جاوا:*

*در صورتی که شرایط زیر برقرار باشد عملیات تبدیل به صورت خود کار توسط جاوا انجام می گیرد:

♦ آن دو نوع ، با هم سازگار باشند
♦ نوع مقصد بزرگتر از نوع مبدا باشد*

برای مثال: 

boolean و char دو نوع داده ی متفاوت اند و نمی توان آنها را به هم تبدیل کرد یا مقدار یکی از آنها را درون دیگری قرار داد.
int همیشه برای نگهداری مقدار یک byte به اندازه ی کافی بزرگ است . پس نیازی به cast وجود ندارد.


*انجام Cast برای داده های ناسازگار:*

اگرچه تبدیلات خودکار مفیدند اما تمام نیاز های ما را برآورده نمی کنند.مثلا اگر خواهید int را به byte تبدیل کنید چه می کنید؟ این تبدیل به طور خودکار انجام نمی شود زیرا int بزرگتر از byte است . این نوع تبدیلات *<< تبدیل همراه با کوچک سازی >>* نامیده می شوند . زیرا مقدار int کوچک می شود تا در byte قابل ذخیره باشد.

برای تبدیل دو داده ی ناسازگار باید از Cast استفاده کنیم . طریقه ی این کار در زیر نشان داده شده است:

(target_type) value

target_type مشخص کننده ی نوع داده ای است که مقدار مورد نظر باید به آن تبدیل شود . مثلا در عبارت زیر عملیات cast از int به byte انجام می گیرد . چنانچه مقدار عدد صحیح ما بزرگتر از محدوده ی byte باشد ، مقدار از طریق تقسیم بر محدوده ی byte و به دست آوردن باقی مانده مشخص می شود.

int a;
byte b;

b = (byte) a; // cast : int to byte 

برای تبدیل مقادیر اعشاری به صحیح از روشی به اسم برش استفاده می شود . در این روش قسمت اعشاری عدد بریده می شود . مثلا 1.56 به 1 تبدیل می شود و 0.56 آن بریده می شود. در صورتی که مقدار عدد اعشاری بزرگتر از محدوده ی نوع مقصد باشد ، مقدار از طریق تقسیم بر محدوده ی نوع مقصد حاصل می شود.

در برنامه ی زیر چند نوع تبدیل  انجام شده است . (همان طور که گفتیم نام فایل جاوا با نام کلاس باید یکی باشد پس نام فایل جاوا را باید conversion بگذارید)

package test;

public class conversion {
    public static void main(String[] args) {
        byte b;
        int i = 257;
        double d = 323.142;
        System.out.println("Cast int  to byte : " );
        b = (byte) i;
        System.out.println("i = "+i+"   ,   b = "+b);
        
        System.out.println();
        
        System.out.println("Cast double to int : ");
        i = (int) d;
        System.out.println("d = "+d+"   ,   i = "+i);
        
        System.out.println();
        System.out.println("Cast double to byte : ");
        b = (byte) d;
        System.out.println("d = "+d+"   ,   b = "+b);
    }
}


خروجی برنامه :

Cast int  to byte : 
i = 257   ,   b = 1

Cast double to int : 
d = 323.142   ,   i = 323

Cast double to byte : 
d = 323.142   ,   b = 67

*این موضوع در بحث شئ گرایی ادامه خواهد داشت.....*

* هر گونه سوالی داشتید در بخش نظرات و پیشنهادات و انتقادات مطرح کنید تا به آنها رسیدگی شود .*

----------


## dasssnj

*بخش اول :*
*کار با رشته ها در جاوا (متن ها):*

تا اینجا با char آشنا شدیم و فهمیدیم که برای نگهداری کاراکتر ها مورد استفاده قرار می گیره . اما کاراکتر چیزی نیست که همیشه نیاز ما را بر آورده کنه . بیشتر اوقات نیازه که از متن (تعدادی کاراکتر که در کنار هم قرار گرفته اند ) استفاده کنیم.
برای نگه داری از یک متن در جاوا از String استفاده میشه . دقت کنید که حرف اول بزرگه . مثال :

String text = "Hello Java !";

برای چاپ این متن در کنسول کافیه کد زیر را اضافه کنید تا نتیجه را ببینید:
System.out.println(text);

همون طور که می بینید متن ما بین دو تا *(  "  )* باید نوشته بشه .

گاهی اوقات نیازه که ما با کاراکتر هایی مثل کلید اینتر و تب را توی متن داشته باشیم . برای این کار کافیه با  *'\'*  این کار را انجام بدیم . یه مثال می زنم که خوب یاد بگیرید :

String matn = "Hello\nJava !";
System.out.println(matn);
خروجی :
Hello
Java


String s = "Hello\tJava";
System.out.println(s);
خروجی:
Hello    Java

\t = Tab
\n = Enter
و ......

چون توی کتابای جاوا در این مورد مفصل بحث شده و کاراکتر های بیشتری را توضیح داده ، من بیشتر توضیح نمی دم . اگه علاقه ای به این موضوع دارید می تونید از کتاب های جاوا در تاپیک کتابخانه ی جاوا استفاده کنید .


در اینجا چند تا از توابع کاربردی در مبحث String را آموزش میدم و بحث را تموم می کنم .
*اینها را فقط برای رفع مشکلاتتون یاد می دم . اگه جایی اش را نفهمیدید اشکال نداره . چون بعدا در موردش بیشتر توضیح میدم.*
*
toUpperCase :* 
برای تبدیل همه ی حروف به حروف بزرگ به کار می ره:

String s = "good morinig".toUpperCase();
System.out.println(s);

خروجی :
GOOD MORINIG


=============================

*toLowerCase :* 
تبدیل همه ی حروف به حروف کوچک

String s = "HI i am Happy !".toLowerCase();
System.out.println(s);

خروجی :
hi i am happy !


============================

*substring:*
بریدن یا دور انداختن تعدادی از کاراکتر های ابتدای متن  : در این مثال 5 تا از کاراکتر های اول متن دور انداخته میشه و نتیجه میشه : am Happy !

String s = "HI i am Happy !".substring(5);
System.out.println(s);    

یه نوع دیگه از substring هم وجود داره برای برداشتن قسمتی از متن و دور انداختن بقیه :

String s = "HI i am Happy !".substring(3,10);
System.out.println(s);

خروجی :
i am Ha

در این کد ، از کاراکتر سوم تا دهم متن بریده شده و بقیه دور انداخته شده .

============================

*length:*
تعداد کاراکتر های متن را به دست می آره(طول متن)

String s = "HI i am Happy !";
int len = s.length();
System.out.println(len);


============================

*contains :*
چک می کنه که آیا این متن حاوی متن دیگری که ما مد نظر داریم هست یا نه :

String s = "Java test String";
boolean c = s.contains("test");
System.out.println(c);

خروجی :
true


============================

*equals :*
چک کردن تساوی دو متن

String s = "Thank you";
boolean c = s.equals("Hello");
System.out.println(c);

خروجی :
false


============================

*startsWith :*
چک کردن اینکه آیا متن با متن دیگری که مد نظر ماست شروع شده یا نه 

String s = "Thank you";
boolean c = s.startsWith("Than");
System.out.println(c);

خروجی :
true


============================

* endsWith :*
دقیقا برعکس قبلی : چک کردن اینکه آیا متن ، با متن دیگری که مد نظر ماست پایان می یابد یا نه؟

String s = "Thank you";
boolean c = s.endsWith("ou");
System.out.println(c);

خروجی :
true


============================

*charAt :*
به دست آوردن یکی از کاراکتر های متن با دانستن مکان آن کاراکتر در متن . مثلا اینجا ، من کاراکتر چهارم را به دست می آورم . دقت کنید که مکان اولین کاراکتر 0 هست نه یک!

String s = "Thank you";
char c = s.charAt(3);
System.out.println(c);

خروجی :
n


============================

*replace :*
جایگزینی یک قسمت متن با متن دیگر:

String s = "Thank me !".replace("me", "you");
System.out.println(s);

خروجی :
Thank you !

توابع دیگری هم هست که ان شا الله خودتون تمرین می کنید و یاد می گیرید .




> دقت کنید که بعضی توابع بالا که به این صورت نوشته می شدند را :
> 
> String s = "HI i am Happy !".substring(3,10);
> System.out.println(s);
> 
> میشه به این صورت هم نوشت :
> 
> String s = "HI i am Happy !";
> s = s.substring(3,10);
> System.out.println(s);

----------


## dasssnj

*بخش اول :*
*آرايه ها:*

تا الان با تعريف متغير هايي از انواع مختلف آشنا شديم . اما ممکنه براتون اين سوال پيش اومده باشه که اگه قرار باشه 100 تا متغير از نوع int تعريف کنيم بايد چي کار کنيم ؟ بشينيم و 100 خط کد بنويسيم ؟ 

راه ساده تري وجود داره . جاوا آرايه ها را  . آرايه به اين معنيه که ما يک متغير با نوعي که مد نظر داريم تعريف مي جنيم و تعدادي که مي خواهيم از اون ايجاد بشه را ذکر مي کنيم . دفعات بعدي براي مقدار دهي يا استفاده از مقدار متغير ها کافيه شماره ي انديس (شماره ي مکان متغير . مثلا پانزدهمي ) را ذکر کنيم و به اون دسترسي داشته باشيم . براي بهتر فهميدن موضوع يه مثال مي زنم.

int numbers[] = new int[100];

numbers[0] = 2;
numbers[12] = 50;

آرايه را ميشه با اين شکل ، بهتر توضيح داد:

array.png


براي تعريف آرايه ، کافيه بعد از نوع يا اسم متغير ، عملگر [ ] را بياريم و براي مقدار دهي با استفاده از کلمه ي کليدي new مقدار آرايه را مشخص کنيم.
بعد با استفاده از شماره ي انديس هر خانه از آرايه ، به متغير مورد نظر مون دسترسي پيدا مي کنم. دقت کنيد که انديس از 0 شروع ميشه ، پس خانه ي اول آرايه انديس 0 و خانه ي دوم آرايه انديس 1 داره و .... .

اما اين پايان کار نيست . راه ديگه اي هم براي تعريف آرايه وجود داره :

int numbers[] = {10 , 20 , 30 ,1000 , 2 , 0 , 9};
System.out.println(numbers[3]);

 در اين روش ، خانه هاي آرايه در زمان تعريف ، مقدار دهي ميشن و طول آرايه به اندازه ي تعداد متغير هايي که نوشتيم در نظر گرفته ميشه . دقت کنيد که طول آرايه هميشه ثابت مي مونه و شما نمي تونيد مثلا يه آرايه 10 تايي را به 11 تايي تغيير بديد يا اينکه مثلا به خونه ي  بيستم يه آرايه ي ده تايي دسترسي داشته باشيد . اگه همچين کاري کنيد برنامه کرش مي کنه . پس حواستون جمع باشه.


براي به دست آوردن طول آرايه هم از length استفاده ميشه . مثل String ، اما کمي متفاوت:

int numbers[] = {5 , 23 , 786 ,876 , 56 , 86, 8668 , 455 , 56765};
System.out.println(numbers.length);

نمونه هايي از آرايه هايي از انواع ديگر :

String names[] = {"Ali" , "Reza" , "Mohammad" ,"Mahdi" , "Ahmad" , "Fatemeh", "Sara" };

char[] chs = new char[5];
chs[0] = 'a';
chs[1] = 'o';
chs[2] = 'i';
chs[3] = 'Q';
chs[4] = 'E';

chs[2] = 'p';

* این بحث ادامه دارد .....*

----------

