
Java ã€ã³ã¿ãã¥ãŒ: OOP ã«é¢ãã質å
1. Java ã®ç¹åŸŽã¯äœã§ãã?
çãïŒ-
OOP ã®æŠå¿µ:
- ãªããžã§ã¯ãæå
- ç¶æ¿
- ã«ãã»ã«å
- å€æ æ§
- æœè±¡å
-
ã¯ãã¹ãã©ãããã©ãŒã : Java ããã°ã©ã ã¯ãå€æŽãå ããããšãªããã©ã®ãã©ãããã©ãŒã ã§ãå®è¡ã§ããŸãããã¡ãããããã«ã¯ JVM (Java ä»®æ³ãã·ã³) ãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸãã
-
é«æ§èœ:ãžã£ã¹ãã€ã³ã¿ã€ã (JIT) ã³ã³ãã€ã©ãŒã«ãããé«ãããã©ãŒãã³ã¹ãå¯èœã«ãªããŸããJIT ã³ã³ãã€ã©ãŒããã€ãã³ãŒãããã·ã³ã³ãŒãã«å€æããJVM ãå®è¡ãéå§ããŸãã
- ãã«ãã¹ã¬ãã: JVM ã¯ã ãšåŒã°ããå®è¡ã¹ã¬ãããäœæããŸã
main thread
ãããã°ã©ãã¯ãThread ã¯ã©ã¹ãã掟çããããRunnable
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšã«ãã£ãŠãè€æ°ã®ã¹ã¬ãããäœæã§ããŸãã
2. ç¶æ¿ãšã¯äœã§ãã?
ç¶æ¿ãšã¯ãããã¯ã©ã¹ãå¥ã®ã¯ã©ã¹ãç¶æ¿ã§ããããšãæå³ããŸã ( extendsããŒã¯ãŒãã䜿çš)ãããã¯ãç¶æ¿ããã¯ã©ã¹ã®ã³ãŒããåå©çšã§ããããšãæå³ããŸããæ¢åã®ã¯ã©ã¹ã¯ ãšåŒã°ãsuperclass
ãæ°ããäœæãããã¯ã©ã¹ã¯ ãšåŒã°ããŸãsubclass
ããparentããšã ããšããçšèªã䜿çšãããšãã人ãããŸãchild
ã
public class Animal {
private int age;
}
public class Dog extends Animal {
}
ã¯ãã¯Animal
ã§ãã parent
Dog
child
3. ã«ãã»ã«åãšã¯äœã§ãã?
ãã®è³ªåã¯ãJava éçºè ã®è·ã®é¢æ¥ã§ããèãããŸããã«ãã»ã«åã§ã¯ãã¢ã¯ã»ã¹ä¿®é£Ÿåãã²ãã¿ãŒãã»ãã¿ãŒã䜿çšããŠå®è£ ãé ããŸããããã¯ãéçºè ãå¿ èŠãšèããå€éšã¢ã¯ã»ã¹ãé²ãããã«è¡ãããŸããçŸå®ã®ç°¡åãªäŸãšããŠã¯è»ãæããããŸããç§ãã¡ã¯ãšã³ãžã³ã®åäœã«çŽæ¥ã¢ã¯ã»ã¹ããããšã¯ã§ããŸãããç§ãã¡ãããªããã°ãªããªãã®ã¯ãããŒãã€ã°ããã·ã§ã³ã«å·®ã蟌ã¿ããšã³ãžã³ããªã³ã«ããããšã ãã§ããå éšã§è¡ãããããã»ã¹ã¯ç§ãã¡ã«ã¯é¢ä¿ãããŸããããŸãããšã³ãžã³ã®äœåã劚ãããšäºæãã¬äºæ ãåŒãèµ·ãããè»äž¡ã®æå·ã人身å·å®³ã«ã€ãªããå¯èœæ§ããããŸãããŸã£ããåãããšãããã°ã©ãã³ã°ã§ãèµ·ãããŸããããã¯ãŠã£ãããã£ã¢ã«è©³ãã説æãããŠããŸããCodeGymã«ã¯ã«ãã»ã«åã«é¢ããèšäºããããŸãã4. ããªã¢ãŒãã£ãºã ãšã¯äœã§ãã?
ããªã¢ãŒãã£ãºã ãšã¯ããªããžã§ã¯ãã®ç¹å®ã®åã«é¢ããæ å ±ããªããŠããåãã€ã³ã¿ãŒãã§ã€ã¹ãæã€ãªããžã§ã¯ããåãæ¹æ³ã§åŠçããããã°ã©ã ã®æ©èœã§ããããèšãããããã«ãã1 ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ã§å€æ°ã®å®è£ ãã§ããããªã¢ãŒãã£ãºã ã䜿çšãããšãå ±æåäœã«åºã¥ããŠããŸããŸãªã¿ã€ãã®ãªããžã§ã¯ããçµã¿åãããŠäœ¿çšââã§ããŸããããšãã°ãDog ãš Cat ãšãã 2 ã€ã®åå«ãæ〠Animal ã¯ã©ã¹ããããšããŸããäžè¬ç㪠Animal ã¯ã©ã¹ã«ã¯ããã¹ãŠã«å ±éã®åäœãã€ãŸãé³ãåºãæ©èœããããŸããAnimal ã¯ã©ã¹ãç¶æ¿ãããã¹ãŠã®ãã®ãåéãããé³ãåºããã¡ãœãããå®è¡ããå¿ èŠãããå Žåã¯ãããªã¢ãŒãã£ãã¯æ©èœã䜿çšããŸãããã®æ§åã¯æ¬¡ã®ãšããã§ãã
List<Animal> animals = Arrays.asList(new Cat(), new Dog(), new Cat());
animals.forEach(animal -> animal.makeSound());
èšãæããã°ãããªã¢ãŒãã£ãºã ã¯åœ¹ã«ç«ã¡ãŸãããããŠãããã¯ããªã¢ãŒãã£ã㯠(ãªãŒããŒããŒã) ã¡ãœããã«ãåœãŠã¯ãŸããŸããããªã¢ãŒãã£ãºã ã®äœ¿çšæ¹æ³
Java æ§æã«é¢ããã€ã³ã¿ãã¥ãŒã®è³ªå
5. Java ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãšã¯äœã§ãã?
ã³ã³ã¹ãã©ã¯ã¿ãŒã«ã¯æ¬¡ã®ç¹åŸŽããããŸãã- æ°ãããªããžã§ã¯ããäœæããããšãããã°ã©ã ã¯é©åãªã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠãããäœæããŸãã
- ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ã¡ãœããã®ãããªãã®ã§ããæ»ãå€ïŒvoidå«ãïŒããªãããšãšãååãã¯ã©ã¹åãšåãã§ããããšãç¹åŸŽã§ãã
- ã³ã³ã¹ãã©ã¯ã¿ãŒãæ瀺çã«äœæãããªãå Žåã¯ã空ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãèªåçã«äœæãããŸãã
- ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãªãŒããŒã©ã€ãã§ããŸãã
- ãã©ã¡ãŒã¿ãŒã䜿çšããŠã³ã³ã¹ãã©ã¯ã¿ãŒã宣èšãããã©ã¡ãŒã¿ãŒã䜿çšããªãã³ã³ã¹ãã©ã¯ã¿ãŒãå¿ èŠãªå Žåã¯ãèªåçã«äœæãããªããããå¥éäœæããå¿ èŠããããŸãã
6. Object ãç¶æ¿ããªã 2 ã€ã®ã¯ã©ã¹ã¯ã©ãã§ãã?
åŒã£æãåé¡ã«ã ãŸãããªãã§ãã ããããã®ãããªã¯ã©ã¹ã¯ãããŸããããã¹ãŠã®ã¯ã©ã¹ã¯ãçŽæ¥ãŸãã¯å ç¥ãéã㊠Object ã¯ã©ã¹ãç¶æ¿ããŸãã7. ããŒã«ã«å€æ°ãšã¯äœã§ãã?
ããã Java éçºè ã«ãšã£ãŠããããé¢æ¥ã®è³ªåã§ããããŒã«ã«å€æ°ã¯ã¡ãœããå ã§å®çŸ©ãããã¡ãœãããå®è¡ãããŠããéãååšããå€æ°ã§ããå®è¡ãçµäºãããšãããŒã«ã«å€æ°ã¯ååšããªããªããŸãã以äžã¯ãmain() ã¡ãœãã㧠helloMessage ãšããååã®ããŒã«ã«å€æ°ã䜿çšããããã°ã©ã ã§ãã
public static void main(String[] args) {
String helloMessage;
helloMessage = "Hello, World!";
System.out.println(helloMessage);
}
8. ã€ã³ã¹ã¿ã³ã¹å€æ°ãšã¯äœã§ãã?
ã€ã³ã¹ã¿ã³ã¹å€æ°ã¯ãã¯ã©ã¹å ã§å®£èšãããå€æ°ã§ãããªããžã§ã¯ããååšããéããããã¯ååšããŸããããšãã°ãNectarLoad ãš maxNectarLoad ãšãã 2 ã€ã®ã€ã³ã¹ã¿ã³ã¹å€æ°ãæ〠Bee ã¯ã©ã¹ããããŸãã
public class Bee {
/**
* Current nectar load
*/
private double nectarLoad;
/**
* Maximum nectar that can the bee can collect.
*/
private double maxNectarLoad = 20.0;
...
}
9. ã¢ã¯ã»ã¹ä¿®é£Ÿåãšã¯äœã§ãã?
ã¢ã¯ã»ã¹ä¿®é£Ÿåã¯ãã¯ã©ã¹ãã¡ãœãããå€æ°ãžã®ã¢ã¯ã»ã¹ãã«ã¹ã¿ãã€ãºããããã®ã¡ã«ããºã ã§ãã次ã®ä¿®é£ŸåãååšããŸããã¢ã¯ã»ã¹ãå¢å ããé ã«ãªã¹ããããŠããŸããprivate
â ãã®ã¢ã¯ã»ã¹ä¿®é£Ÿåã¯ã¡ãœããããã£ãŒã«ããã³ã³ã¹ãã©ã¯ã¿ãŒã§äœ¿çšãããŸããã¢ã¯ã»ã¹ã¯ããããã宣èšãããŠããã¯ã©ã¹ã«å¶éãããŸããpackage-private (default)
â ããã¯ã¯ã©ã¹ã®ããã©ã«ãã®ã¢ã¯ã»ã¹ ã¬ãã«ã§ããã¢ã¯ã»ã¹ã¯ãã¯ã©ã¹ãã¡ãœãããå€æ°ããŸãã¯ã³ã³ã¹ãã©ã¯ã¿ãŒã宣èšãããŠããç¹å®ã®ããã±ãŒãžã«å¶éãããŸããprotected
package-private
â ãã®ã¢ã¯ã»ã¹ä¿®é£Ÿåã¯ã修食åã䜿çšããŠã¯ã©ã¹ãç¶æ¿ããã¯ã©ã¹ãžã®ã¢ã¯ã»ã¹ã®è¿œå ãšåãã¢ã¯ã»ã¹ ã¬ãã«ãæäŸããŸãprotected
ãpublic
â ãã®ã¢ã¯ã»ã¹ ã¬ãã«ã¯ã¯ã©ã¹ã«ã䜿çšãããŸãããã®ã¢ã¯ã»ã¹ ã¬ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³å šäœã«å®å šãªã¢ã¯ã»ã¹æš©ãããããšãæå³ããŸãã

10. ã¡ãœããã®ãªãŒããŒã©ã€ããšã¯äœã§ãã?
åã¯ã©ã¹ã芪ã¯ã©ã¹ã®åäœãå€æŽãããå Žåãã¡ãœããããªãŒããŒã©ã€ãããŸãã芪ã¡ãœããã®å 容ãå®è¡ããå¿ èŠãããå Žåã¯ãåã¡ãœãã㧠super.methodName() ã䜿çšã§ããŸããããã«ããã芪ã¡ãœãããå®è¡ãããŸãããã®åŸãè¿œå ã®ããžãã¯ãè¿œå ã§ããŸããéµå®ããªããã°ãªããªãèŠä»¶:- ã¡ãœããã®ã·ã°ããã£ã¯åãã§ããå¿ èŠããããŸã
- æ»ãå€ã¯åãã§ããå¿ èŠããããŸã
11. ã¡ãœãã ã·ã°ããã£ãšã¯äœã§ãã?

12. ã¡ãœããã®ãªãŒããŒããŒããšã¯äœã§ãã?
ã¡ãœããã®ãªãŒããŒããŒãã¯ãã¡ãœããã®ã·ã°ããã£ãå€æŽããŠåãã¢ã¯ã·ã§ã³ãå®è¡ããè€æ°ã®ã¡ãœãããäœæããããªã¢ãŒãã£ãºã ã®æ©èœã§ãã- åãåå
- ç°ãªãè°è«
- ããŸããŸãªæ»ãå€ã®åãååšããå¯èœæ§ããããŸã
ArrayList
ã¯ã©ã¹ã®add()
ã¡ãœããããªãŒããŒããŒãããŠãå
¥ååŒæ°ã«å¿ããŠããŸããŸãªæ¹æ³ã§è¿œå ã§ããããã«ããããšãã§ããŸãã
add(Object o)
â ãã®ã¡ãœããã¯åã«ãªããžã§ã¯ããè¿œå ããã ãã§ãadd(int index, Object o)
â ãã®ã¡ãœããã¯ãç¹å®ã®ã€ã³ããã¯ã¹ã«ãªããžã§ã¯ããè¿œå ããŸãadd(Collection<Object> c)
â ãã®ã¡ãœããã¯ãªããžã§ã¯ãã®ãªã¹ããè¿œå ããŸãadd(int index, Collection<Object> c)
â ãã®ã¡ãœããã¯ãç¹å®ã®ã€ã³ããã¯ã¹ããå§ãŸããªããžã§ã¯ãã®ãªã¹ããè¿œå ããŸãã
13. ã€ã³ã¿ãŒãã§ãŒã¹ãšã¯äœã§ãã?
Java ã¯å€éç¶æ¿ããµããŒãããŠããŸããããã®å¶éãå æããããã«ãç§ãã¡ãããç¥ã£ãŠãã圢åŒã«ã€ã³ã¿ãŒãã§ã€ã¹ãè¿œå ãããŸãã ;) é·ãéãã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯å®è£ ã®ãªãã¡ãœããã®ã¿ããããŸããããã®åçã®æèã§ããããã«ã€ããŠè©±ããŸããããäŸãã°ïŒ
public interface Animal {
void makeSound();
void eat();
void sleep();
}
ããã€ãã®è©³çŽ°ã¯æ¬¡ã®ãšããã§ãã
- ã€ã³ã¿ãŒãã§ãŒã¹å ã®ãã¹ãŠã®ã¡ãœããã¯ãããªãã¯ãã€æœè±¡çã§ã
- ãã¹ãŠã®å€æ°ã¯ public static Final ã§ã
- ã¯ã©ã¹ã¯ã€ã³ã¿ãŒãã§ã€ã¹ãç¶æ¿ããŸãã (ã€ãŸããextends ããŒã¯ãŒãã䜿çšããŸãã)ã代ããã«ãã¯ã©ã¹ãããããå®è£ ããŸã (ã€ãŸããimplements ããŒã¯ãŒãã䜿çšããŸã)ãããã«ãå¿ èŠãªã ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ã§ããŸãã
- ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ã¯ãã€ã³ã¿ãŒãã§ã€ã¹å ã®ãã¹ãŠã®ã¡ãœããã®å®è£ ãæäŸããå¿ èŠããããŸãã
public class Cat implements Animal {
public void makeSound() {
// Method implementation
}
public void eat() {
// Implementation
}
public void sleep() {
// Implementation
}
}
14. ã€ã³ã¿ãŒãã§ãŒã¹ã®ããã©ã«ãã®ã¡ãœãããšã¯äœã§ãã?
次ã«ãããã©ã«ãã®ã¡ãœããã«ã€ããŠèª¬æããŸãããããã¯äœã®ããïŒèª°ã®ããã®ãã®ã§ããïŒãããã®ã¡ãœããã¯ãäž¡æãã«å¯Ÿå¿ããããã«è¿œå ãããŸãããç§ã¯äœã話ããŠããã®ã§ããããïŒããã§ãããäžæ¹ã§ã¯ãã©ã ããš Stream API ãšããæ°ããæ©èœãè¿œå ããå¿ èŠããããŸããããã®äžæ¹ã§ãJava ã®ç¹åŸŽã§ããäžäœäºææ§ãç¶æããå¿ èŠããããŸããããããè¡ãã«ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ã«ããã€ãã®æ°ããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ãããããããããã©ã«ãã®ã¡ãœãããç§ãã¡ã«äžããããçµç·¯ã§ããããã©ã«ã ã¡ãœããã¯ãããŒã¯ãŒãã§ããŒã¯ãããã€ã³ã¿ãŒãã§ã€ã¹ã«å®è£ ãããã¡ãœããã§ãdefault
ãããšãã°ãã€ã³ã¿ãŒãã§ã€ã¹stream()
ã§ããç¥ãããŠããã¡ãœããCollection
ãä¿¡ããŠãã ããããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯èŠãç®ã»ã©åçŽã§ã¯ãããŸããããŸãã¯ãåæ§ã«æåãªforEach()
æ¹æ³ã§ããIterable
ã€ã³ã¿ãŒãã§ãŒã¹ããŸããããã©ã«ãã®ã¡ãœãããè¿œå ããããŸã§ã¯ååšããŸããã§ãããã¡ãªã¿ã«ãããã«ã€ããŠã¯ CodeGym ã®ãã¡ãã§èªãããšãã§ããŸãã
15. ã§ã¯ã2 ã€ã®åäžã®ããã©ã«ã ã¡ãœãããç¶æ¿ããã«ã¯ã©ãããã°ããã§ãããã?
ããã©ã«ãã®ã¡ãœãããšã¯äœãã«ã€ããŠã®ä»¥åã®åçã§ã¯ãå¥ã®çåãçããŸããã€ã³ã¿ãŒãã§ã€ã¹ã«ã¡ãœãããå®è£ ã§ããå Žåãçè«çã«ã¯åãã¡ãœãã㧠2 ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ã§ããŸããã©ããã£ãŠãããè¡ãã®ã§ããããïŒåãã¡ãœããã䜿çšãã 2 ã€ã®ç°ãªãã€ã³ã¿ãŒãã§ã€ã¹ã次ã«ç€ºããŸãã
interface A {
default void foo() {
System.out.println("Foo A");
}
}
interface B {
default void foo() {
System.out.println("Foo B");
}
}
ããã 2 ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããã¯ã©ã¹ããããŸããããããã€ã³ã¿ãŒãã§ã€ã¹ A ãŸã㯠B ã§ç¹å®ã®ã¡ãœãããéžæããã«ã¯ã©ãããã°ããã§ãããã? 次ã®ç¹å¥ãªæ§é ã«ãããããå¯èœã«ãªããŸãA.super.foo()
ã
public class C implements A, B {
public void fooA() {
A.super.foo();
}
public void fooB() {
B.super.foo();
}
}
ãããã£ãŠãã¡ãœããã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®fooA()
ããã©ã«ãã®ã¡ãœããã䜿çšããŸãããã¡ãœããã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®ã¡ãœããã䜿çšããŸãã foo()
A
fooB()
foo()
B
16. æœè±¡ã¡ãœãããšæœè±¡ã¯ã©ã¹ãšã¯äœã§ãã?
Java ã§ã¯ãabstract
ã¯äºçŽèªã§ããæœè±¡ã¯ã©ã¹ãšã¡ãœãããè¡šãããã«äœ¿çšãããŸãããŸããå®çŸ©ãå¿
èŠã§ããabstract
æœè±¡ã¡ãœããã¯ãæœè±¡ã¯ã©ã¹ã«å®è£
ããã«ããŒã¯ãŒãã䜿çšããŠå®£èšãããã¡ãœããã§ããã€ãŸããããã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšåæ§ã®ã¡ãœããã§ããã次ã®ãããªããŒã¯ãŒããè¿œå ãããŠããŸãã
public abstract void foo();
æœè±¡ã¯ã©ã¹ã¯ã次ã®ããŒã¯ãŒãã§ãããŒã¯ãããã¯ã©ã¹ã§ãabstract
ã
public abstract class A {
}
æœè±¡ã¯ã©ã¹ã«ã¯ããã€ãã®æ©èœããããŸãã
- æœè±¡ã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããããšã¯ã§ããŸãã
- æœè±¡ã¡ãœãããå«ããããšãã§ããŸã
- æœè±¡ã¡ãœããããªãå ŽåããããŸã
17. StringãStringBuilderãStringBuffer ã®éãã¯äœã§ãã?
String
å€ã¯å®æ°æååããŒã«ã«ä¿åãããŸããæååãäœæããããšããã«ããã®ããŒã«ã«è¡šç€ºãããŸãããããŠãããåé€ããããšã¯ã§ããŸãããäŸãã°ïŒ
String name = "book";
å€æ°ã¯å®æ°æååããŒã«ãæããŸãã 
name = "pen";
å®æ°æååããŒã«ã¯æ¬¡ã®ããã«ãªããŸãã 
String
å€ã¯ã¹ã¿ãã¯ã«æ ŒçŽãããŸããå€ãå€æŽããããšãå€ãå€ãæ°ããå€ã«çœ®ãæããããŸããString Buffer
åæãããŠãããããã¹ã¬ããã»ãŒãã§ãã- ã¹ã¬ããã®å®å šæ§ã®ãããããã©ãŒãã³ã¹ã¯äœããªããŸãã
StringBuffer name = âbookâ;


StringBuffer
ãã¹ã¬ãã ã»ãŒãã§ã¯ãªãã ãã§ãããã®çµæã ãããèããé«éã«ãªããŸãStringBuffer
ã
18. æœè±¡ã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ã®éãã¯äœã§ãã?
æœè±¡ã¯ã©ã¹:- æœè±¡ã¯ã©ã¹ã«ã¯ããã©ã«ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒããããŸããããã¯ãæœè±¡ã¯ã©ã¹ã®åå«ãäœæããããã³ã«åŒã³åºãããŸãã
- æœè±¡ã¡ãœãããšéæœè±¡ã¡ãœããã®äž¡æ¹ãå«ããããšãã§ããŸããäžè¬ã«ãæœè±¡ã¯ã©ã¹ã«ã¯æœè±¡ã¡ãœãããå¿ èŠãããŸããã
- æœè±¡ã¯ã©ã¹ãç¶æ¿ããã¯ã©ã¹ã¯ãæœè±¡ã¡ãœããã®ã¿ãå®è£ ããå¿ èŠããããŸãã
- æœè±¡ã¯ã©ã¹ã¯ã€ã³ã¹ã¿ã³ã¹å€æ°ãæã€ããšãã§ããŸã (質å #5 ãåç §)ã
- ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ã³ã³ã¹ãã©ã¯ã¿ãŒããªããããåæåã§ããŸããã
- è¿œå ã§ããã®ã¯æœè±¡ã¡ãœããã®ã¿ã§ã (ããã©ã«ã ã¡ãœãããé€ã)ã
- ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ã¯ããã¹ãŠã®ã¡ãœãã (ããã©ã«ã ã¡ãœãããé€ã) ãå®è£ ããå¿ èŠããããŸãã
- ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯å®æ°ã®ã¿ãå«ããããšãã§ããŸãã
19. é åå ã®èŠçŽ ãžã®ã¢ã¯ã»ã¹ã O(1) ã«ãªãã®ã¯ãªãã§ãã?
ãã®è³ªåã¯æåéããç§ã®æåŸã®ã€ã³ã¿ãã¥ãŒã§å°ããããŸãããåŸã§ç¥ã£ãã®ã§ããããã®è³ªåã®ç®çã¯ãã®äººã®èãæ¹ãç¥ãããšã§ããæããã«ããã®ç¥èã«ã¯å®çšçãªäŸ¡å€ã¯ã»ãšãã©ãããŸããããããç¥ãã ãã§ååã§ãããŸããO(1)ããäžå®æéãã¢ã«ãŽãªãºã ã®æéèšç®éã®è¡šèšã§ããããšãæ確ã«ããå¿ èŠããããŸããã€ãŸãããã®æå®ã¯æéã®å®è¡æéã瀺ããŸãããã®è³ªåã«çããã«ã¯ãé åã«ã€ããŠäœãç¥ã£ãŠããããèããå¿ èŠããããŸããé åãäœæããã«ã¯int
ã次ã®ããã«èšè¿°ããå¿
èŠããããŸãã
int[] intArray = new int[100];
ãã®æ§æããããã€ãã®çµè«ãå°ãåºãããšãã§ããŸãã
- é åã宣èšããããšããã®åãããããŸããåãããã£ãŠããã°ãé åå ã®åã»ã«ã®ãµã€ãºãããããŸãã
- é åå šäœã®ãµã€ãºã¯æ¢ç¥ã§ãã
ã§ã¯ãArrayList å ã®ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ãããšãã«ãã©ã®ããã«ã㊠O(1) ã«å°éããã®ã§ãããã?
ãã®è³ªåã¯åã®è³ªåã®çŽåŸã«ç¶ããŸããå®éã®ãšãããããªããã£ããä¿æããé åãæäœããå ŽåãèŠçŽ ã®åã®ãµã€ãºã¯ (äœææã«) äºåã«ããã£ãŠããŸãã
List<A> list = new ArrayList();
list.add(new B());
list.add(new C());
list.add(new D());
list.add(new B());
ãã®ç¶æ³ã§ã¯ãåã»ã«ã®ãµã€ãºãã©ã®ããã«èšç®ããã°ããã§ãããã? çµå±ã®ãšãããåãªããžã§ã¯ãã¯ç°ãªããããããè¿œå ãã£ãŒã«ããç°ãªããŸããäœããã¹ããïŒããã§ã®è³ªåã¯ãããªããæ··ä¹±ãããããšãæå³ããæ¹æ³ã§æ瀺ãããŠããŸããã³ã¬ã¯ã·ã§ã³ã«ã¯ãªããžã§ã¯ããçŽæ¥ä¿åãããŠããªãããšãããã£ãŠããŸãããªããžã§ã¯ããžã®åç
§ã®ã¿ãä¿åããŸãããããŠããã¹ãŠã®åç
§ã¯åããµã€ãºã§ããããšãããã£ãŠããŸãããã®çµæãããã§ã¯åã®è³ªåãšåãæ¹æ³ã§ã¢ãã¬ã¹ãèšç®ããŸãã
21. ãªãŒãããã¯ã¹åãšã¢ã³ããã¯ã¹å
æŽå²çèæ¯:ãªãŒãããã¯ã¹åãšã¢ã³ããã¯ã¹åã¯ãJDK 5 ã®äž»èŠãªé©æ°ã®äžéšã§ãã ãªãŒãããã¯ã¹åã¯ãããªããã£ãåãã察å¿ããã©ãã㌠ã¯ã©ã¹ã«èªåçã«å€æããããã»ã¹ã§ãã ã¢ã³ããã¯ã¹åã¯ãªãŒãããã¯ã¹åã®æ£å察ã§ããããã¯ãã©ãã㌠ã¯ã©ã¹ãããªããã£ãã«å€æããããã»ã¹ã§ãããã ããã©ãããŒã®å€ã ã®å Žånull
ãNullPointerException
ããã¯ã¹å解é€äžã« ãã¹ããŒãããŸãã
ããªããã£ããšããã«å¯Ÿå¿ããã©ãããŒ
åçç | ã©ãããŒã¯ã©ã¹ |
---|---|
ããŒã«å€ | ããŒã«å€ |
æŽæ° | æŽæ° |
ãã€ã | ãã€ã |
æå | ãã£ã©ã¯ã¿ãŒ |
æµ®ã | æµ®ã |
é·ã | é·ã |
çã | çã |
ããã« | ããã« |
// ãªãŒããã¯ã·ã³ã°ãçºçããŸã:
-
ã©ãããŒã¯ã©ã¹ãžã®åç §ã«ããªããã£ããå²ãåœãŠãå Žå:
Java 5 ããå:
// Manual boxing (the way it was BEFORE Java 5). public void boxingBeforeJava5() { Boolean booleanBox = new Boolean(true); Integer intBox = new Integer(3); // And so on for other types } After Java 5: // Automatic boxing (the way it became in Java 5). public void boxingJava5() { Boolean booleanBox = true; Integer intBox = 3; // And so on for other types }
-
ã©ãããŒãæåŸ ããã¡ãœããã«åŒæ°ãšããŠããªããã£ããæž¡ãããå Žå:
public void exampleOfAutoboxing() { long age = 3; setAge(age); } public void setAge(Long age) { this.age = age; }
// é梱ãè¡ãããŸã:
-
ã©ãã㌠ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãããªããã£ãå€æ°ã«ä»£å ¥ãããšã次ã®ããã«ãªããŸãã
// BEFORE Java 5: int intValue = new Integer(4).intValue(); double doubleValue = new Double(2.3).doubleValue(); char c = new Character((char) 3).charValue(); boolean b = Boolean.TRUE.booleanValue(); // And after JDK 5: int intValue = new Integer(4); double doubleValue = new Double(2.3); char c = new Character((char) 3); boolean b = Boolean.TRUE;
-
ç®è¡æŒç®äžããã®æäœã¯ããªããã£ãåã«ã®ã¿é©çšããããããããªããã£ããããã¯ã¹å解é€ããå¿ èŠããããŸãã
// BEFORE Java 5: Integer integerBox1 = new Integer(1); Integer integerBox2 = new Integer(2); // A comparison used to require this: integerBox1.intValue() > integerBox2.intValue() // In Java 5 integerBox1 > integerBox2
-
ã©ãã㌠ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãã察å¿ããããªããã£ããåãåãã¡ãœããã«æž¡ãå Žå:
public void exampleOfAutoboxing() { Long age = new Long(3); setAge(age); } public void setAge(long age) { this.age = age; }
22. æåŸã®ããŒã¯ãŒãã¯äœã§ãã?ãŸãã©ãã§äœ¿çšãããŸãã?
ããŒã¯ãŒãfinal
ã¯å€æ°ãã¡ãœãããã¯ã©ã¹ã§äœ¿çšã§ããŸãã
- æçµå€æ°ã®å€ã¯ãåæååŸã«å€æŽããããšã¯ã§ããŸããã
- æåŸã®ã¯ã©ã¹ã¯ç¡èã§ã:) åãæã€ããšã¯ã§ããŸããã
- æçµã¡ãœããã¯åå«ã«ãã£ãŠãªãŒããŒã©ã€ãã§ããŸããã
æçµå€æ°
Java ã§ã¯ãå€æ°ã宣èšããŠå€ãå²ãåœãŠãæ¹æ³ã 2 ã€ãããŸãã- å€æ°ã宣èšããŠãåŸã§åæåããããšãã§ããŸãã
- å€æ°ã宣èšããŠãããã«å€ãå²ãåœãŠãããšãã§ããŸãã
public class FinalExample {
// A static final variable that is immediately initialized:
final static String FINAL_EXAMPLE_NAME = "I'm likely the final one";
// A final variable that is not initialized, but will only work if you
// initialize it in the constructor:
final long creationTime;
public FinalExample() {
this.creationTime = System.currentTimeMillis();
}
public static void main(String[] args) {
FinalExample finalExample = new FinalExample();
System.out.println(finalExample.creationTime);
// The final FinalExample.FINAL_EXAMPLE_NAME field cannot be accessed
// FinalExample.FINAL_EXAMPLE_NAME = "Not you're not!";
// The final Config.creationTime field cannot be accessed
// finalExample.creationTime = 1L;
}
}
æçµå€æ°ã¯å®æ°ãšã¿ãªããã§ãããã?
æçµå€æ°ã«ã¯æ°ããå€ãå²ãåœãŠãããšãã§ããªãããããããã¯å®æ°å€æ°ã§ããããã«èŠããŸãããã ããããã¯äžèŠããã ãã§ããå€æ°ã®ããŒã¿åã ã®å Žåimmutable
ãã¯ããããã¯å®æ°ã§ãããã ããããŒã¿åãmutable
ãã€ãŸãå€æŽå¯èœãªå Žåã¯ãã¡ãœãããšå€æ°ã䜿çšããŠãå€æ°ã«ãã£ãŠåç
§ããããªããžã§ã¯ãã®å€ãå€æŽããããšãã§ããŸãfinal
ããã®ãããå®æ°ãšã¯èšããŸããã次ã®äŸã¯ãäžéšã®æçµå€æ°ã¯å®éã«å®æ°ã§ãããããã®ä»ã¯å€æŽå¯èœã§ããããå®æ°ã§ã¯ãªãããšã瀺ããŠããŸãã
public class FinalExample {
// Immutable final variables
final static String FINAL_EXAMPLE_NAME = "I'm likely the final one";
final static Integer FINAL_EXAMPLE_COUNT = 10;
// Mutable final variables
final List<String> addresses = new ArrayList();
final StringBuilder finalStringBuilder = new StringBuilder("Constant?");
}
ããŒã«ã«æçµå€æ°
final
ã¡ãœããå
ã§å€æ°ãäœæããããšãããã¯local final
å€æ°ãšåŒã°ããŸãã
public class FinalExample {
public static void main(String[] args) {
// You can do this
final int minAgeForDriveCar = 18;
// Or you can do this, in a for-each loop:
for (final String arg : args) {
System.out.println(arg);
}
}
}
ã«ãŒãã®åå埩åŸã«æ°ããå€æ°ãäœæããããããæ¡åŒµããã for ã«ãŒã㧠Final ããŒã¯ãŒãã䜿çšã§ããŸããããã¯éåžžã® for ã«ãŒãã«ã¯é©çšãããªããããã³ã³ãã€ã«æã«ãšã©ãŒãçºçããããšã«æ³šæããŠãã ããã
// The final local j variable cannot be assigned
for (final int i = 0; i < args.length; i ++) {
System.out.println(args[i]);
}
æçµã¯ã©ã¹
ãšããŠå®£èšãããã¯ã©ã¹ã¯final
æ¡åŒµã§ããŸããããã£ãšç°¡åã«èšããšãä»ã®ã¯ã©ã¹ã¯ãããç¶æ¿ã§ããŸãããfinal
JDK ã®ã¯ã©ã¹ã®åªããäŸã¯String ã§ããäžå€ã¯ã©ã¹ãäœæããããã®æåã®ã¹ãããã¯ããã®ã¯ã©ã¹ã ãšããŠããŒã¯ããfinal
æ¡åŒµãããªãããã«ããããšã§ãã
public final class FinalExample {
}
// Compilation error!
class WantsToInheritFinalClass extends FinalExample {
}
æçµçãªã¡ãœãã
ã¡ãœããããfinalããšããŒã¯ãããŠããå Žåããã®ã¡ãœããã¯ãfinal ã¡ãœããããšåŒã°ããŸã (åœç¶ã§ããã?)ãFinal ã¡ãœãããåã¯ã©ã¹ã§ãªãŒããŒã©ã€ãããããšã¯ã§ããŸãããã¡ãªã¿ã«ãObject ã¯ã©ã¹ã® wait() ã¡ãœãããš Notify() ã¡ãœããã¯æçµçãªãã®ã§ããããããããããªãŒããŒã©ã€ãããããšã¯ã§ããŸããã
public class FinalExample {
public final String generateAddress() {
return "Some address";
}
}
class ChildOfFinalExample extends FinalExample {
// Compilation error!
@Override
public String generateAddress() {
return "My OWN Address";
}
}
Javaã§finalã䜿çšããæ¹æ³ãšå Žæ
- ããã€ãã®ã¯ã©ã¹ã¬ãã«ã®å®æ°ãå®çŸ©ããã«ã¯ãfinal ããŒã¯ãŒãã䜿çšããŸãã
- å€æŽããããªããªããžã§ã¯ãã®æçµå€æ°ãäœæããŸããããšãã°ããã®ã³ã°ç®çã§äœ¿çšã§ãããªããžã§ã¯ãåºæã®ããããã£ãªã©ã§ãã
- ã¯ã©ã¹ãæ¡åŒµããããªãå Žåã¯ããã®ã¯ã©ã¹ãæçµãšããŠããŒã¯ããŸãã
- äžå€ã¯ã©ã¹ãäœæããå¿ èŠãããå Žåã¯ãããã Final ã«ããå¿ èŠããããŸãã
- ã¡ãœããã®å®è£
ããã®åå«ã§å€æŽãããªãããã«ããã«ã¯ãã¡ãœããã ãšããŠããŒã¯ããŸã
final
ãããã¯ãå®è£ ãå€æŽãããŠããªãããšã確èªããããã«éåžžã«éèŠã§ãã
23. å¯å€åãšäžå€åãšã¯äœã§ãã?
å¯å€
å¯å€ãªããžã§ã¯ãã¯ãäœæåŸã«ç¶æ ãšå€æ°ãå€æŽã§ãããªããžã§ã¯ãã§ããå¯å€ã¯ã©ã¹ã®äŸã«ã¯ãStringBuilder ã StringBuffer ãªã©ããããŸããäŸïŒ
public class MutableExample {
private String address;
public MutableExample(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
// This setter can change the name field
public void setAddress(String address) {
this.address = address;
}
public static void main(String[] args) {
MutableExample obj = new MutableExample("First address");
System.out.println(obj.getAddress());
// We are updating the name field, so this is a mutable object
obj.setAddress("Updated address");
System.out.println(obj.getAddress());
}
}
äžå€
äžå€ãªããžã§ã¯ããšã¯ããªããžã§ã¯ãã®äœæåŸã«ç¶æ ãå€æ°ãå€æŽã§ããªããªããžã§ã¯ãã§ããHashMap ã«ãšã£ãŠçŽ æŽãããããŒã ãšæããŸããã? :) ããšãã°ãæååãæŽæ°ãå粟床浮åå°æ°ç¹æ°ãªã©ã§ããäŸïŒ
// We'll make this class final so no one can change it
public final class ImmutableExample {
private String address;
ImmutableExample(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
// We remove the setter
public static void main(String[] args) {
ImmutableExample obj = new ImmutableExample("Old address");
System.out.println(obj.getAddress());
// There is no way to change this field, so it is an immutable object
// obj.setName("new address");
// System.out.println(obj.getName());
}
}
次ã®ããŒãã§ã¯ãã³ã¬ã¯ã·ã§ã³ã«é¢ãã質åãšåçã«ã€ããŠèããŸãã GitHub ã®ç§ã®ãããã£ãŒã« Java Core ã«é¢ããå°±è·é¢æ¥ã®è³ªåãšåçããã 50ãããŒã2
GO TO FULL VERSION