mmohsenm

مفهوم دقیق استاتیک در جاوا

9 ارسال در این موضوع قرار دارد

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

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ارسال شده در (ویرایش شده)

در 5 ساعت قبل، mmohsenm گفته است :

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

علت اینکه شما بدون گرفتن نمونه میتونید از کلاس های استاتیک استفاده کنید اینه که هرچیزی که شما از نوع استاتیک تعریف میکنید با شروع برنامه اونا هم اجرا میشن و درحافظه به صورت آماده به کار قرار میگیرن درحالی که بقیه ی کلاس ها فقط جایی که صدا زده میشن حافظه میگیرن و بعدش از حافظه خارج میشن

اما نوع های استاتیک تا برنامه بازه اونا هم بازن به همین علت مثلا متغیری که از نوع استاتیک در اول برنامه مقداردهی کردین تا آخر برنامه هرجا خواستید میتونید صداش بزنید

اما پاسخ سوال:

همونطور که گفتم نوع استاتیک حافظه میگیره و اگر این کلاس هاتون زیاد بشن فضای زیادی از حافظه رو اشغال و در عملکرد برنامه تاثیر منفی دارن. فقط چیزایی رو استاتیک تعریف کنید که نیاز مبرم بهشون دارید

ویرایش شده در توسط mehrdadmmb2
1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ارسال شده در (ویرایش شده)

در ۱ ساعت قبل، mehrdadmmb2 گفته است :

علت اینکه شما بدون گرفتن نمونه میتونید از کلاس های استاتیک استفاده کنید اینه که هرچیزی که شما از نوع استاتیک تعریف میکنید با شروع برنامه اونا هم اجرا میشن و درحافظه به صورت آماده به کار قرار میگیرن درحالی که بقیه ی کلاس ها فقط جایی که صدا زده میشن حافظه میگیرن و بعدش از حافظه خارج میشن

اما نوع های استاتیک تا برنامه بازه اونا هم بازن به همین علت مثلا متغیری که از نوع استاتیک در اول برنامه مقداردهی کردین تا آخر برنامه هرجا خواستید میتونید صداش بزنید

اما پاسخ سوال:

همونطور که گفتم نوع استاتیک حافظه میگیره و اگر این کلاس هاتون زیاد بشن فضای زیادی از حافظه رو اشغال و در عملکرد برنامه تاثیر منفی دارن. فقط چیزایی رو استاتیک تعریف کنید که نیاز مبرم بهشون دارید

با این اوصاف 1- پس چرا اصلا استاتیک تعریف میکنیم وقتی میشه ازش نمونه ساخت و از روی نمونه بهش دسترسی پیدا کرد؟

2- برنامه ای که بدونیم یه سری از کلاسها و توابعش حتما مورد نیاز و استفاده میشه بهتر نیست استاتیک باشه تا راحت تر بهش دسرسی پیدا کنیم اما اونهایی که بستگی به شرایط اجرا و کاربرو ... داره رو نمونه بسازیم(چون بهرحال میدونیم اجرا میشه اون تابع و فضا بهش تعلق میگیره)؟

3- جز این دیگه استاتیک و نمونه چه مزیت هایی نسبت به هم دارن؟ یکیش که حافظه بود. تو مورد دوم که مثلا توابع صد در صد استفاده شده استاتیک باشه تا شی بسازیم رو حجم کلی برنامه در حین اجرا و قبل اون و همچنین سرعت و بهینه بودن چه تاثیری داره؟منظور مقایسه حجم برنامه یا  سرعت اجرا برنامه و ...  در این دو حالت هست. و مقایسه تو خیلی قسمت هایی که بنده به عنوان یه  مبتدی اشاره نکردم بهش

ویرایش شده در توسط mmohsenm

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، mmohsenm گفته است :

با این اوصاف 1- پس چرا اصلا استاتیک تعریف میکنیم وقتی میشه ازش نمونه ساخت و از روی نمونه بهش دسترسی پیدا کرد؟

2- برنامه ای که بدونیم یه سری از کلاسها و توابعش حتما مورد نیاز و استفاده میشه بهتر نیست استاتیک باشه تا راحت تر بهش دسرسی پیدا کنیم اما اونهایی که بستگی به شرایط اجرا و کاربرو ... داره رو نمونه بسازیم(چون بهرحال میدونیم اجرا میشه اون تابع و فضا بهش تعلق میگیره)؟

3- جز این دیگه استاتیک و نمونه چه مزیت هایی نسبت به هم دارن؟ یکیش که حافظه بود. تو مورد دوم که مثلا توابع صد در صد استفاده شده استاتیک باشه تا شی بسازیم رو حجم کلی برنامه در حین اجرا و قبل اون و همچنین سرعت و بهینه بودن چه تاثیری داره؟منظور مقایسه حجم برنامه یا  سرعت اجرا برنامه و ...  در این دو حالت هست. و مقایسه تو خیلی قسمت هایی که بنده به عنوان یه  مبتدی اشاره نکردم بهش

جواب هر سه تا سوال تو جواب هست

1- استاتیک مقدارش تو کل برنامه قابل خوندنه مثلا اول برنامه مقدارش یکه و 100 تا اکتیویتی باز و بسته میشه ام شما تو صفحه صدم هم میتونید این مقدار یک رو بخونید.

مثال دیگه اینکه شما دارید با وب سرویس کار میکنید اول برنامه توکن میگیرید. چون توکن چیزیه که تو همه ی ریکوئست ها باید ارسال بشه همون اول میریزید تو یه نوع استاتیک و همه جا بهش دسترسی دارید.

2- فقط نیاز شما مشخص میکنه که کی و کجا باید از چی استفاده کنید

3- این جور کلاس ها و متغیر ها رم زیادی اشغال میکنن

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 ساعت قبل، mehrdadmmb2 گفته است :

جواب هر سه تا سوال تو جواب هست

1- استاتیک مقدارش تو کل برنامه قابل خوندنه مثلا اول برنامه مقدارش یکه و 100 تا اکتیویتی باز و بسته میشه ام شما تو صفحه صدم هم میتونید این مقدار یک رو بخونید.

مثال دیگه اینکه شما دارید با وب سرویس کار میکنید اول برنامه توکن میگیرید. چون توکن چیزیه که تو همه ی ریکوئست ها باید ارسال بشه همون اول میریزید تو یه نوع استاتیک و همه جا بهش دسترسی دارید.

2- فقط نیاز شما مشخص میکنه که کی و کجا باید از چی استفاده کنید

3- این جور کلاس ها و متغیر ها رم زیادی اشغال میکنن

پس در واقع باید موقعی که مجبور به استفاده از استاتیک شدم و چاره ای جز استفادش نداشتیم ازش استفاده کنم تا فضا بهینه تر شه و با استفاده بی دلیل ازش عملا سرعت برنامرو از بین نبریم .درسته؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

static  :

وقتی شما یک متغیر یا متد را static ایجاد میکنید بدون اینکه نیاز به new کردن کلاس مورد نظر داشته باشید میتوانید به مقدار متغیر و همچنین به متد دسترسی پیدا کنید

 

final هم برای مقدار دهی یک متغیر میباشد که فقط یکبار میتوان به آن مقدار داد

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، Farzad Sarseifi گفته است :

static  :

وقتی شما یک متغیر یا متد را static ایجاد میکنید بدون اینکه نیاز به new کردن کلاس مورد نظر داشته باشید میتوانید به مقدار متغیر و همچنین به متد دسترسی پیدا کنید

 

final هم برای مقدار دهی یک متغیر میباشد که فقط یکبار میتوان به آن مقدار داد

اینو متوجه ام.بحث دلیل استفاده هست یا دلیل عدم استفاده . به طور جامع مثلا بحث سرعت و حافظه که دوستمون بیان کردن

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، mmohsenm گفته است :

اینو متوجه ام.بحث دلیل استفاده هست یا دلیل عدم استفاده . به طور جامع مثلا بحث سرعت و حافظه که دوستمون بیان کردن

هنگامی که یک متغیر یا متد استاتیک دارید دیگر  نیازی به new کردن کلاس را ندارید و حافظه کمتری مصرف میگردد

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/10/13, 22:51:39، Farzad Sarseifi گفته است :

هنگامی که یک متغیر یا متد استاتیک دارید دیگر  نیازی به new کردن کلاس را ندارید و حافظه کمتری مصرف میگردد

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

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری