আমরা সকলেই জানি যা String
জাভাতে পরিবর্তনযোগ্য, তবে নিম্নলিখিত কোডটি পরীক্ষা করে দেখুন:
String s1 = "Hello World";
String s2 = "Hello World";
String s3 = s1.substring(6);
System.out.println(s1); // Hello World
System.out.println(s2); // Hello World
System.out.println(s3); // World
Field field = String.class.getDeclaredField("value");
field.setAccessible(true);
char[] value = (char[])field.get(s1);
value[6] = 'J';
value[7] = 'a';
value[8] = 'v';
value[9] = 'a';
value[10] = '!';
System.out.println(s1); // Hello Java!
System.out.println(s2); // Hello Java!
System.out.println(s3); // World
এই প্রোগ্রামটি কেন এভাবে পরিচালিত হয়? এবং কেন মান s1
এবং s2
পরিবর্তিত হয়, কিন্তু না s3
?
(Integer)1+(Integer)2=42
কোনও জিনিসগুলির সাথে ঝামেলা করতে চান তবে আপনি এটিকে এটি তৈরি করতে পারেন যাতে ক্যাশেড অটোবক্সিংয়ের সাথে জগাখিচির মাধ্যমে; (অসন্তুষ্ট-বোমা-জাভা-সংস্করণ) ( thedailywtf.com/Articles/Disgruntled-Bomb-Java-Edition.aspx )