الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

intern

مغلق
بدأه yadoo86 في 1 أكتوبر 2005 · 6 رد · 662 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام على جميع أخوان في منتدى

سؤالي كان (ولو أسألتي كثرت هذة الأيام بس بليز أتحملوني شوي كما تعرفون أني مبتداء في سالفة) هو

أنظروا الى هذا الكود

//start class
public class hallodsd {
	public static void main (String[] args){
  String a = "Too many ";
  String b = "cooks";
  String c = "Too many cooks";
  String d1 ="Too many cook";
  String d2 = "s";
  
  a += b;
  d1 += d2;
  
  a = a.intern();
  
  
  System.out.println("Case 1");
  if (a == c) System.out.println("yes");
  else System.out.println("no");
  // And in screen will dispaly yes
  
  System.out.println("Case 2");
  if (a == d1) System.out.println("yes");
  else System.out.println("no");
  // And in screen will dispaly No
  
	}
}

وسؤال هو عند كتابة a = a.intern(); لمرتين فأن حالة ثانية تتحقق أيضا و لكن ألا يوجد طريقة كتابة كود inern بحيث يغير جميع الحالات مرة واحدة

تم تعديل هذه المشاركة بواسطة yadoo86 في 1 أكتوبر 2005 في 23:25

winter-main.jpg

6179.gif

#2

أول مرة أعرف عن الأمر intern،، يمكنك قراءة ما يفعل من هنا:

http://java.sun.com/j2se/1.4.2/docs/api/ja...g.html#intern()

لا أدري لماذا تريد استعمال intern لكن إن أردت أن تقارن بين الكلمات فاستعمل a.equlas(B);//a and b are strings

بدلا من a=b،

الواضح من مثالك أن d1 ليست من مسبح الكلمات المختلفة! فلذلك أعتقد لو كتبت :

d1=d1.intern();

سيخرج الناتج الثاني YES.

بالتوفيق!

#3

مشكور أخي العزيز أبو مازن

فعلا كما أعتقد أن interne تم أضفتها الى jkd 5 و عمليها جميل جدا يستفاد منه عادة لزيادة سرعة البرنامج

بنسبة الى

d1=d1.intern();

فأنا أعرف هذا سوف يحل المشكلة و لكن أفرض أن لديك 100 variable فعليك كم مرة عليك كتابتها :wacko: :wacko: :wacko:

و لكن هل يوجد طريقة لتغير جميع

تم تعديل هذه المشاركة بواسطة yadoo86 في 2 أكتوبر 2005 في 11:25

winter-main.jpg

6179.gif

#4

ما نوع البرنامج الذي تصنعه، الذي يحتاج إلى هذه السرعة العالية؟؟

وهل كلماتك الجديدة ناتجة عن الإضافة والحذف كما في مثالك؟؟

وهل جامع النفايات عندك يعمل أو لا؟؟

بما أنك تستخدم جافا فاستخدمها فيما صنعت له،، استخدم euqals لمقارنة الكلمات... فهي أشياء!

أما إذا كنت تبحث عن السرعة أو تقليل الذاكرة المستهلكة فاستعمل لغة سي!

جرب هذا البرنامج وانظر إلى الذاكرة التي تتحدث عنها:

import java.util.*;
import javax.swing.*;
public class Test{
	public static void main(String[]args){
  Vector v = new Vector();
  for (int i=0; i<10000; i++){
// 	 v.add(new JTable());
 	 v.add("Yadoo"+i);
 	 System.out.println(i+"\t"+Runtime.getRuntime().totalMemory()+"\t"+Runtime.getRuntime().maxMemory());
  }
  System.out.println (v);
	}

}

كيف ترى الذاكرة الكلية والذاكرة المستخدمة... بعد ذلك جرب إضافة JTable بدل من String إلى المجموعة v وانظر إلى حجم الذاكرة!

وأخبرنا بالنتائج!!

ولو أردت أن ترى كيف يعمل جامع النفايات فلا تخزن القيم في المجموعة v

	public static void main(String[]args){
  Vector v = new Vector();
  for (int i=0; i<10000; i++){
 	 new JTable();
// 	 v.add("Yadoo"+i);
 	 System.out.println(i+"\t"+Runtime.getRuntime().totalMemory()+"\t"+Runtime.getRuntime().maxMemory());
  }
  System.out.println (v);
	}

بالتوفيق!!

تم تعديل هذه المشاركة بواسطة أبومازن في 2 أكتوبر 2005 في 12:22

#5

لكن .... للإجابة على سؤالك في كيفية جعل كل الكلمات من (مسبح الكلمات المسجلة) intern..

هذا يعتمد على طريقة تصميم شفرتك ، لكن خذ هذه الأفكار:

اكتب كلماتك هكذا:

String x = "yadoo".inter();
//code

public void addName(String word){

v.add(word.intern());
}
#6

سلام عليكم

ظاهر أن أسائلتي صارت مالها طعم :

أوكي , مشكور أخي العزيز أبو مازان على رد و ملاحظتك جميلة

بنسبة الى البرنامج الذي أصنعة فهو برنامج بسيط و لا يحتاج الى السرعة العالية و أستطيع أن أقول أنة لأختبار intern فقط يعني كبرامج المبتداء العادية جدا فقط لختبار شئ معين

أما بنسبة الى أدوات تسريع الأخرى الموجودة في لغتنا الحبيبة جافا مثل (جامع النفايات) التي تعمل أكثر فعالية بنسبة الى زيادة سرعة و تقليل أستخدام ذاكرة فصدقني لا أعرف عنها شئ

أما بنسبة الى

اقتباس
بما أنك تستخدم جافا فاستخدمها فيما صنعت له

فأنا أوفق 100% حتى قبل بداء في تعلمي لجافا درست ما هو قوي فيها و ما هو ضعيف فيها أيضا

أما بنسبة الى قولي أن Interne تعمل على تخفيض سرعة فقد قراءت كتاب ل Ivor horton's والله يا أبو مازان هو الذي يقول مو أنا و كلنا نعلم وجود أدوات أخرى أفضل منها

مشكور أخي أبو مازان على ردك

و دائما تخجلنا و ما نعرف كيف نجازيك على تعبك الذي أجدة في كل سؤال أجده في منتدى

و أكرر أسفي و أعتذاري الى جميع أعضاء المنتدى بسبب أزعاجي

:unsure: :( :rolleyes:

تم تعديل هذه المشاركة بواسطة yadoo86 في 2 أكتوبر 2005 في 16:02

winter-main.jpg

6179.gif

#7

هاهاها،، اعتذار وأسف...

المنتدى لماذا موجود إذن،، أليست للأسئلة والأجوبة و(الإزعاج) كما تسميه....

خذ راحتك،، فهذا منتداك ومنتداي!!

هذا الموضوع مغلق.

مواضيع مشابهة