Bölüm 10 Alıştırmalar

10.1 Madde 10.2’deki Loan sınıfını getter ve setter metotları olmadan yeniden yazarsanız, bu sınıf değişmez sınıf olur mu?

10.2 Madde 10.4’teki BMI sınıfı değişmez sınıf mıdır?

10.3 Sınıflar arasındaki temel ilişki biçimleri nelerdir?

10.4 Association nedir? Aggregation nedir? Composition nedir?

10.5 aggregation ve composition için kullanılan UML notasyonu nedir?

10.6 Neden aggregation ve composition’ın her ikisi de composition olarak anılır?

10.7 Temel veri türlerini sarmalayan sınıfları açıklayınız?

10.8 Aşağıdaki deyimlerden hangileri derlenebilir?

a. Integer i = new Integer("23");

b. Integer i = new Integer(23);

c. Integer i = Integer.valueOf("23");

d. Integer i = Integer.parseInt("23", 8);

e. Double d = new Double();

f. Double d = Double.valueOf("23.45");

g. int i = (Integer.valueOf("23")).intValue();

h. double d = (Double.valueOf("23.4")).doubleValue();

i. int i = (Double.valueOf("23.4")).intValue();

j. String s = (Double.valueOf("23.4")).toString();

10.9 Bir integer’ı, string’e nasıl dönüştürürsünüz? Sayılardan oluşan bir string’i, integer’a nasıl dönüştürürsünüz. Bir double’ı, string’e nasıl dönüştürürsünüz? Sayılardan oluşan bir string’i, double’a nasıl dönüştürürsünüz.

10.10 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

Integer x = new Integer(3);

System.out.println(x.intValue());

System.out.println(x.compareTo(new Integer(4)));

}

}

10.11 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

System.out.println(Integer.parseInt("10"));

System.out.println(Integer.parseInt("10", 10));

System.out.println(Integer.parseInt("10", 16));

System.out.println(Integer.parseInt("11"));

System.out.println(Integer.parseInt("11", 10));

System.out.println(Integer.parseInt("11", 16));

}

}

10.12 autoboxing ve autounboxing nedir? Aşağıdaki ifadeler doğru mudur?

a. Integer x = 3 + new Integer(5);

b. Integer x = 3;

c. Double x = 3;

d. Double x = 3,0;

e. int x = new Integer(3);

f. int x = new Integer(3) + new Integer(4);

10.13 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

Double x = 3,5;

System.out.println(x.intValue());

System.out.println(x.compareTo(4.5));

}

}

10.15  s1, s2, s3 ve s4 aşağıda belirtildiği gibi dört string olsun.

String s1 = “Merhaba Java";

String s2 = s1;

String s3 = new String(”Merhaba Java");

String s4 = “Merhaba Java";

Aşağıdaki ifadelerin sonuçları nedir?

a. s1 == s2

b. s1 == s3

c. s1 == s4

d. s1.equals(s3)

e. s1.equals(s4)

f. “Merhaba Java".replace("Java", "HTML")

g. s1.replace(’e', 'T')

h. s1.replaceAll(”e", "T")

i. s1.replaceAll(”e", "T")

j. s1.toCharArray()

10.16  Merhaba Java, gibi bir string yaratmak için aşağıdaki ifadeler kullanılabilir.

String s = “Merhaba Java";

ya da:

String s = new String(”Merhaba Java");

Hangisi daha iyidir? Neden?

10.17 Aşağıdaki kodun çıktısı nedir?

String s1 = “Merhaba Java";

String s2 = s1.replace(”a", "abc");

System.out.println(s1);

System.out.println(s2);

10.18 s1, “Merhaba“ ve s2’de “merhaba“  olsun. Aşağıdaki ifadelere karşılık gelen kodu yazınız:

a. s1 string’deki tüm e karakterlerini  E ile değiştirin ve oluşan yeni string’i s2’ye atayın.

b.  Welcome to Java and HTML stringin’i boşluk karakterine göre ayırarak tokens dizisinde saklayınız, ilk elemanı s1 ve ikinci elemanı s2 stringin’e atayınız.

10.19 String sınıfının herhangi bir metodu string’in içeriğini değiştirir mi?

10.20 s string’inin new String(); şeklinde yaratıldığını varsayalım. s.length() ne olur?

10.21 Bir char’ı, karakterlerden oluşan bir diziyi ya da bir sayıyı string’e nasıl dönüştürürsünüz?

10.22 Neden aşağıdaki kod  NullPointerException‘a neden olur?

1 public class Test {

2         private String text;

3

4         public Test(String s) {

5                 String text = s;

6         }

7

8         public static void main(String[] args) {

9                 Test test = new Test("ABC");

10                 System.out.println(test.text.toLowerCase());

11         }

12 }

10.23 Aşağıdaki programdaki hata nedir?

1 public class Test {

2         String text;

3

4         public void Test(String s) {

5                 text = s;

6         }

7

8         public static void main(String[] args) {

9                 Test test = new Test("ABC");

10                 System.out.println(test);

11         }

12 }

10.24 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

System.out.println("Hi, ABC, good".matches("ABC "));

System.out.println("Hi, ABC, good".matches(".*ABC.*"));

System.out.println("A,B;C".replaceAll(",;", "#"));

System.out.println("A,B;C".replaceAll("[,;]", "#"));

String[] tokens = "A,B;C".split("[,;]");

for (int i = 0; i < tokens.length; i++)

System.out.print(tokens[i] + " ");

}

}

10.25 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

String s = "Hi, Good Morning";

System.out.println(m(s));

}

public static int m(String s) {

int count = 0;

for (int i = 0; i < s.length(); i++)

if (Character.isUpperCase(s.charAt(i)))

Count++;

return count;

}

}

10.26 StringBuilder ve StringBuffer sınıfları arasındaki fark nedir?

10.27 Bir string’den nasıl string builder yaratılır? String builder’dan geri dönüş değeri olarak bir string nasıl elde edilir?

10.28  StringBuilder sınıfının reverse metodunu kullanarak s string’ini ters çevirmek için üç adet deyim yazınız.

10.29 20 karakterlik bir string’den, 4’üncü indeksten başlayıp,10’uncu indekse kadar olan bir alt string’i silmek için üç adet deyim yazınız. StringBuilder sınıfının delete metodunu kullanınız.

10.30 string ve string builder sınıflarının karakterleri saklamak için kullandığı içsel veri yapısı nedir?

10.31  s1 ve s2’nin aşağıdaki şekilde verildiğini varsayalım:

StringBuilder s1 = new StringBuilder("Java");

StringBuilder s2 = new StringBuilder("HTML");

Aşağıdaki deyimlerin yürütülmesinden sonra s1 değerini gösteriniz. Deyimlerin birbirinden bağımsız olduğunu varsayın.

a. s1.append(" is fun");

b. s1.append(s2);

c. s1.insert(2, "is fun");

d. s1.insert(1, s2);

e. s1.charAt(2);

f. s1.length();

g. s1.deleteCharAt(3);

h. s1.delete(1, 3);

i. s1.reverse();

j. s1.replace(1, 3, "Computer");

k. s1.substring(1, 3);

l. s1.substring(2);

10.32 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

String s = "Java";

StringBuilder builder = new StringBuilder(s);

change(s, builder);

System.out.println(s);

System.out.println(builder);

}

private static void change(String s, StringBuilder builder) {

s = s + " and HTML";

builder.append(" and HTML");

}

}