Inner class (= Nested class) :
- ํด๋์ค ์์ ํด๋์ค
- why? ์ฝ๋ฉ์ ํธ์์ฑ + ์ class ์ฐธ์กฐํ๊ธฐ ์ํด / class๋ผ๋ฆฌ ๊ฐ๊น์ธ ๋(๊ฐ๋ ์ฌ์ฉ)
- ํ์ผ ์ด๋ฆ ์ฐพ์ ๋ :
๐ Note Code
Test1
๐ป ์ ๋ ฅ
class Outer1 {
static int a = 10;
int b = 20; // ๊ฐ์ฒด์์ฑ์ผ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ผ๊ฐ - ๊ทผ๋ฐ ์์ง ๊ฐ์ฒด ์์ฑ์ํ์ง์์๋,,?
//Inner a;
//innerํด๋์ค๋ฅผ outer์์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์
//public Outer1(new Inner1()) {//๊ธฐ๋ณธ์์ฑ์์๋ค๊ฐ '๊ฐ์ฒด์์ฑ๋ Inner1ํด๋์ค' ๋ฅผ ์ง์ด๋ฃ๋๋ค
// this.a=a;
//}
public class Inner1 {// ํด๋์ค ์ ํด๋์ค (์ธ๋ถ์์ ๊ฑฐ์ ๊ฐ์ ธ๋ค์ธ ์ผ ์์)
int c = 30; // ๊ฐ์ฒด์์ฑ์ผ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ผ๊ฐ
public void write() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
public void print() {
Inner1 ob = new Inner1(); // ๋ด๋ถ์์ ์์ฑ๊ฐ๋ฅ
ob.write();
}
}
public class Test1 {
public static void main(String[] args) {
Outer1 out = new Outer1();// 0 (์์ฐํฐ๊ฐ ๋จผ์ ์์ฑ๋์ด์์ด์ผํจ)
out.print(); // 1
System.out.println("----------------------");
Outer1.Inner1 in = out.new Inner1();// 2
in.write();
}
}
10
20
30
----------------------
10
20
30
๐ Note Code
Test2
๐ป ์ ๋ ฅ
class Outer2{
static int a =10;//static๋ณ์
int b = 20;//instace๋ณ์,์ ์ญ๋ณ์
public void write() {
int c = 30;// ์ง์ญ๋ณ์
final int D = 40;
//write๋ฅผ ํธ์ถํ๋ฉด 30,40์ด ๋ง๋ค์ด์ง๋๋ฐ ๊ทธ๋ local์ ๊ฐ์ฒด๋ ๊ฐ์ด ์์ฑ๋จ
class Local {
public void print() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(D);
}
}
// write๋ฉ์๋ ์์์๋ง ์์ฑํ ์ ์์
Local ob = new Local();
ob.print();
}
}
public class Test2 {
public static void main(String[] args) {
Outer2 out = new Outer2();
out.write();
}
}
10
20
30
40
๐ Note Code
Test3
๐ป ์ ๋ ฅ
class Outer3{
static int a = 10; // Outer3์ ํด๋์ค ๋ณ์
int b = 20; // Outer3์ ์ธ์คํด์ค๋ณ์
public static class Inner3 {
int c = 30;
public void write() {
System.out.println(a);
//System.out.println(b); //new ๊ฐ์ฒด์์ฑ x - ์๋ฌ
System.out.println(c);
Outer3 out = new Outer3();//ํด๋์ค ๋ด ํด๋์ค ๋ด ๋ฉ์๋ ์์์ ๊ฐ์ฒด์์ฑ ํ ์ ์์
System.out.println(out.b);
}
}
public void print() {
System.out.println("Outer3 print()");
}
}
public class Test3 {
public static void main(String[] args) {
Outer3 out = new Outer3();
out.print();
Outer3.Inner3 in = new Outer3.Inner3();
in.write();
}
}
Outer3 print()
10
30
20
๐ Note Code
toString๋ฉ์๋๊ฐ ์๋์ผ๋ก ํธ์ถ๋๋ ์ด์ ?
java์์๋ ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ํํํ ๋ -> System.out.println๋ ๋ค๋ฅธ ์ถ๋ ฅ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋ ๋ด๋ถ์ ์ผ๋ก toString ๋ฉ์๋ ์๋์ผ๋ก ํธ์ถ
why? System.out.println์ ๋ฉ์๋ = ์ถ๋ ฅํ๋ ค๋ ๊ฐ์ฒด์ toString ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ํธ์ถํ์ฌ
ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ ์ถ๋ ฅํจ.
๋ง์ผ, ๊ฐ์ฒด๊ฐ toString ์ค๋ฒ๋ผ์ด๋๋ฅผ ์ํ๋ค๋ฉด -> Object ํด๋์ค์ ๊ธฐ๋ณธ์ธ toString ๋ฉ์๋๊ฐ ํธ์ถ๋์ด ํด๋์ค์ด๋ฆ๊ณผ ํด์์ฝ๋ ์ถ๋ ฅํจ
์๋ ์์์์ ์ค๋ฒ๋ผ์ด๋ํ toString ๋ฉ์๋ = ์์ why?์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ main์์ System.out.println(ob.getTitle()); ์คํ๋ ๋, ๋ด๋ถ์ ์ผ๋ก toString ๋ฉ์๋๊ฐ ํธ์ถ๋์ด "์ต๋ช ์ ํด๋์ค" ๋ฌธ์์ด์ด ๋ฐํ๋๊ณ ์ถ๋ ฅ๋ฉ๋๋ค.
- ์๋๋ toString์ ์์จ๋ ์ถ๋ ฅํ ๋ ์๋์ผ๋ก ํธ์ถ์ด ๋์ง๋ง, ์๋ Test4์์ toString๋ฉ์๋๋ฅผ ์ด ์ด์ ๋?
: getTitle๋ฉ์๋์์ ์๋ก์ด return new Object() ๋ฅผ ๋ฐํํ๊ณ , ์ด ๊ฐ์ฒด์ ๋ํ toString์ ์ค๋ฒ๋ผ์ด๋ํด์ '์ต๋ช
์ ํด๋์ค' ๋ฌธ์์ด๋ก ๋ฐํํจ. ์ด๋ฌ๋ฉด System.out.println(ob.getTitle()); ํธ์ถํ ๋ ์๋์ผ๋ก ์์๊บผ toString์ ๋ถ๋ฌ์์ '์ต๋ช
์ ํด๋์ค'๋ฅผ ์ถ๋ ฅํด๋
Test4
๐ป ์ ๋ ฅ
public class Test4 {
//public Object getTitle(new Object) { //๋งค๊ฐ๋ณ์์๋ฆฌ์ ๋ง๋ฆ
public Object getTitle() {
return new Object() {// Objectํด๋์ค๋ฅผ return๊ฒฐ๊ณผ๊ฐ ์๋ฆฌ์ ๋ง๋ฆ
public String toString() {// ํธ์ถํ์ง์์๋ ๋ฌด์กฐ๊ฑด ์คํ๋จ
return "์ต๋ช
์ ํด๋์ค";
}
};// ์ธ๋ฏธ์ฝ๋ก ํ์ - return๊ณผ ์
ํธ
}
public static void main(String[] args) {
Test4 ob = new Test4();
System.out.println(ob.getTitle());
}
}
์ต๋ช
์ ํด๋์ค
๐ Note Code
Collection : ์ธํฐํ์ด์ค [API์์ ํ์ธ] / ์ธํฐํ์ด์ค๋ ์ ์ฅ๊ณต๊ฐ์ผ๋ก๋ ์ฌ์ฉ๊ฐ๋ฅ
Collection Framework(๋ฐฉ๋ฒ๋ค) - ๋ฐ์ดํฐ ์์งํด์ ๋ชจ์๋๋๊ฑด๋ฐ ๋ฐฐ์ด์ด๋ ๋๊ฐ์ง๋ง, ๊ธฐ๋ณธ default๊ฐ 10๊ฐ๊ณ ,
๋ฐ์ดํฐ๊ฐ ์์์ ๋์ด๋๊ณ ์ค์ด๋๊ฑด ๋ช
๋ น์ด๋ฅผ ํตํด ๊ฐ๋ฅ
ex) List,Vector,Set,Map,LinkedList,HashSet, TreeSet, Hashtable
List(interface) - Vector(class) : ๋๊ธฐํ ์ง์ -> ArrayLsit๋ณด๋ค ๋๋ฆฌ๋ค
List(interface) - ArrayLsit (class) : ๋๊ธฐํ ์ง์ x -> Vector๋ณด๋ค ๋น ๋ฅด๋ค
๋ฐฐ์ด๊ณผ์ ์ฐจ์ด์ ?
- ๊ฐฏ์๊ฐ ์ ํด์ ธ์์
- ๊ฐฏ์ ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๊ฑฐ๋ ํ์ง ๋ชปํจ
vector์ ํฌ๊ธฐ : v.size( )
Test5
๐ป ์ ๋ ฅ
import java.util.Vector;
public class Test5 {
public static void main(String[] args) {
//generic <E> : ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
- Object๋ฅผ ์ด๋ค๋ฉด <E>์ง์ฐ๋ฉด ๋จ
//generic์ ์ฐ์ง ์์์ผ๋ -> ๋ชจ๋ ํ์
์ ๊ฐ์ฒด๋ฅผ Vector์ ๋ฃ์ด๋ ๋จ -> ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์
์บ์คํธํจ
//Vector <E> = new Vector<E>(); ์ํ๋ ๊ธฐ๋ณธํ์ด ์๋ค๋ฉด ์จ์ฃผ๋ฉด๋จ
Vector v = new Vector();
v.add("์์ธ"); //upcast
v.add(30); //Object <- Integer (class) : ๋ถ๋ชจ
v.add('c'); //Object <- Character ๊ฐ
String str;
Integer i;
Character c;
str = (String)v.get(0); // downcast
System.out.println(str);
i = (Integer)v.get(1);
System.out.println(i);
c = (char)v.get(2);
System.out.println(c);
for(int n=0;n<v.size();n++){ // v.size (3๊ฐ : 0,1,2)
Object ob = v.get(n);
if(ob instanceof String) {
str = (String)ob;//downcast
System.out.println(str);
}else if(ob instanceof Integer) {
i = (Integer)ob;//downcast
System.out.println(i);
}else if(ob instanceof Character) {
c = (char)ob;//downcast
System.out.println(c);
}
}
}
}
์์ธ
30
c
์์ธ
30
c
๐ Note Code
Test6
๐ป ์ ๋ ฅ
import java.util.Iterator;
import java.util.Vector;
public class Test6 {
//๊ณต๊ฐ์ ๊ฐ์๋ฅผ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋๊ฒ์ด ์ฅ์
private static String[] city = {"์์ธ","๋ถ์ฐ","๋๊ตฌ","์ธ์ฒ","๊ด์ฃผ","๋์ ","์ธ์ฐ"}; //static final ์๋ต
public static void main(String[] args) {
Vector<String> v = new Vector<String>(); //ํด๋น ๋ฒกํฐ์๋ ์ด์ ์คํธ๋งํ์
๋ง ์ง์ด๋ฃ์ ์ ์์, ๋ค์ <String>์ด ์๋์ฌ ์๋ ์์
//v.add(30);
for(String str : city) { //String str : city์ city๋ static์ด ์๋ถ์ด์ 1์ธต์ ์์ผ๋ฏ๋ก staticํด์ผํจ
v.add(str);
}
String str;
str = v.firstElement(); //์ฒซ๋ฒ์งธ ์์= ๋ฐฐ์ด 0๋ฒ์ง
System.out.println(str);
str = v.lastElement();// first๋ last๋ง ์์
System.out.println(str);
str = v.get(1);
System.out.println(str);
//1๋ฒ์งธ ๋ฐฉ๋ฒ - for๋ฌธ
for(int i=0; i<v.size();i++) {
System.out.print(v.get(i)+" ");
}
System.out.println();
//2๋ฒ์งธ ๋ฐฉ๋ฒ - ํ์ฅfor๋ฌธ
for(String s : v) { //ํ์ฅfor๋ฌธ = ๋ฐฐ์ด, collection ๊ฐ์ ๊ณณ์์๋ง ๊ฐ๋ฅ
System.out.print(s+" ");
}
System.out.println("");
Iterator<String> it = v.iterator(); // **์ดํฐ๋ ์ดํฐ๋ฅผ ํตํด it์ ๊ฐ์()๋ฅผ ๊บผ๋ด๋์ -> it์ถ๋ ฅ
while (it.hasNext()) {// ๋ช๊ฐ์ธ์ง ๋ชจ๋ฅผ๋ ํ๋์ฉ ๊บผ๋ด๋ด
str = it.next(); // ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ฝ์ด๋ด๋ ๋ช
๋ น์ด
System.out.print(str + " ");
}
while (it.hasNext()) {// ๋ช๊ฐ์ธ์ง ๋ชจ๋ฅผ๋ ํ๋์ฉ ๊บผ๋ด๋ด
str = it.next(); // ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ฝ์ด๋ด๋ ๋ช
๋ น์ด
System.out.print(str + " ");
}
}
}
์์ธ
์ธ์ฐ
๋ถ์ฐ
์์ธ ๋ถ์ฐ ๋๊ตฌ ์ธ์ฒ ๊ด์ฃผ ๋์ ์ธ์ฐ
์์ธ ๋ถ์ฐ ๋๊ตฌ ์ธ์ฒ ๊ด์ฃผ ๋์ ์ธ์ฐ
์์ธ ๋ถ์ฐ ๋๊ตฌ ์ธ์ฒ ๊ด์ฃผ ๋์ ์ธ์ฐ
๐ Note Code
v.size : ๋ฐ์ดํฐ ๊ฐ์
v.capacity( ) : ๊ธฐ๋ณธ์ฉ๋ (10)
v.add( ) : Vector์ ์ถ๊ฐ
v.set(0,"Seoul") : ๋ฎ์ด์ / ๊ธฐ์กด index - 0๋ฒ์ง์ seoul๋ก ๋ฎ์ด์จ๋ผ
v.insertElementAt("๋ํ๋ฏผ๊ตญ",0) : 0๋ฒ์ง ์๋ฆฌ์ "๋ํ๋ฏผ๊ตญ"์ ์ฝ์ ํด๋ผ -> ๊ธฐ์กด ์น๊ตฌ๋ค ๋ค๋ก ๋ฐ๋ฆผ
int index = v.indextOf("์์ธ") : "์์ธ" index ๋ฒ์ง์ ์ฐพ์๋ผ
if ( index!=-1) : ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด,
Collections.sort(v); : ์ค๋ฆ์ฐจ์
Collections.sort(v,Collections.reverseOrder()); : ๋ด๋ฆผ์ฐจ์
v.remove("๋ถ์ฐ") = v.remove(7) : ์ ๊ฑฐ
for (int i = 1; i <= 20; i++) {
v.add(Integer.toString(i)); : Vector์ integerํ์
์ผ๋ก ํ๋ณํํด์ ์ซ์ 20๊น์ง ์ถ๊ฐํ์ฌ๋ผ
for(int i=1;i<=10;i++) {
v.remove(5); : 5๋ฒ์งธ index๋ฐ์ดํฐ 10๋ฒ ์ง์์ง
v.trimToSize( ); : ๋น๊ณต๊ฐ ์ญ์
v.clear( ) : Vector ๋ด ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ -> ์์ ํ๊ฒ ๋ค ์ง์ฐ๊ณ ์ถ์ผ๋ฉด (๋์ด๋๊ฑด ์์์ ์ค์ง ์์ผ๋ฏ๋ก) v.trimToSizeํ๋ฒ ๋ ํด์ค์ผํจ
Test7
๐ป ์ ๋ ฅ
import java.util.Collections;
import java.util.Vector;
public class Test7 {
private static String[] city = {"์์ธ","๋ถ์ฐ","๋๊ตฌ","์ธ์ฒ","๊ด์ฃผ","๋์ ","์ธ์ฐ"};
public static void main(String[] args) {
Vector<String> v = new Vector<String>();
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());
for (String c : city) {
v.add(c);
}
for (String s : v) {
System.out.print(s + " ");
}
System.out.println();
System.out.println("๋ฐ์ดํฐ๊ฐ์: "+v.size()+"๊ฐ");
//๋ฎ์ด์์ฐ๊ธฐ - ์์
v.set(0, "Seoul");
v.set(1, "Busan");
for (String s : v) {
System.out.print(s + " ");
}
System.out.println();
//0๋ฒ์งธ ์๋ฆฌ์ ์ฝ์
-> ๊ทธ๋ผ ์๋ ์๋ ์น๊ตฌ๋ค์ ๋ค๋ก ๋ฐ๋ฆผ
v.insertElementAt("๋ํ๋ฏผ๊ตญ", 0);
for (String s : v) {
System.out.print(s + " ");
}
System.out.println();
//๊ฒ์
int index = v.indexOf("๋๊ตฌ");
//index!=-1 (๊ธ์ ) : ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด
if(index!=-1) {
System.out.println("๊ฒ์ ์ฑ๊ณต:"+index);
}else {
System.out.println("๊ฒ์ ์คํจ:"+index);
}
//์ค๋ฆ์ฐจ์
Collections.sort(v);
for(String s : v) {
System.out.println(s + " ");
}
System.out.println();
// ๋ด๋ฆผ์ฐจ์
Collections.sort(v, Collections.reverseOrder());
for (String s : v) {
System.out.println(s + " ");
}
System.out.println();
// ์ญ์
v.remove("Busan");// v.remove(7)
for (String s : v) {
System.out.println(s + " ");
}
System.out.println();
// ์ฉ๋ ์ฆ๊ฐ
for (int i = 1; i <= 20; i++) {
v.add(Integer.toString(i));// vector๋ ์คํธ๋ง ๊ฐ์ด๊ณ - i๋ int๊ฐ์ด๋ผ์
// wrapper class๋ฅผ ํ์ฉํด์ intํ์
์ integer ์๋ฃํ์ผ๋ก ๋ฐ๊ฟ๋ผ
}
for (String s : v) {
System.out.print(s + " ");
}
System.out.println();
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());//40๊ฐ
System.out.println("๋ฐ์ดํฐ๊ฐ์: "+v.size()+"๊ฐ"); //27๊ฐ
for(int i=1;i<=10;i++) {
v.remove(5); //5๋ฒ์งธ index๋ฐ์ดํฐ 10๋ฒ ์ง์์ง
}
for (String s : v) {
System.out.print(s + " ");
}
System.out.println();
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());//40๊ฐ - ๋์ด๋๊ฑด ์์์ ์ค์ง์๋๋ค
System.out.println("๋ฐ์ดํฐ๊ฐ์: "+v.size()+"๊ฐ"); //17๊ฐ
// ๋น๊ณต๊ฐ ์ญ์
v.trimToSize();
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());// 17๊ฐ
System.out.println("๋ฐ์ดํฐ๊ฐ์: " + v.size() + "๊ฐ"); // 17๊ฐ
// ๋ฒกํฐ๋ด ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
v.clear();
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());// 17๊ฐ
System.out.println("๋ฐ์ดํฐ๊ฐ์: " + v.size() + "๊ฐ"); // 17๊ฐ
v.trimToSize();// ๋์ด๋๊ฑด ์์์ ์ค์ง์์ผ๋ฏ๋ก
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());// 17๊ฐ
System.out.println("๋ฐ์ดํฐ๊ฐ์: " + v.size() + "๊ฐ"); // 17๊ฐ
v.add("์์ธ");
System.out.println("๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : " + v.capacity());// 17๊ฐ
System.out.println("๋ฐ์ดํฐ๊ฐ์: " + v.size() + "๊ฐ"); // 17๊ฐ
}
๋๊ตฌ
๊ด์ฃผ
Seoul
Busan
์ธ์ฒ
์ธ์ฐ
๋ํ๋ฏผ๊ตญ
๋์
๋๊ตฌ
๊ด์ฃผ
Seoul
์ธ์ฒ ์ธ์ฐ ๋ํ๋ฏผ๊ตญ ๋์ ๋๊ตฌ ๊ด์ฃผ Seoul 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : 40
๋ฐ์ดํฐ๊ฐ์: 27๊ฐ
์ธ์ฒ ์ธ์ฐ ๋ํ๋ฏผ๊ตญ ๋์ ๋๊ตฌ 9 10 11 12 13 14 15 16 17 18 19 20
๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : 40
๋ฐ์ดํฐ๊ฐ์: 17๊ฐ
๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : 17
๋ฐ์ดํฐ๊ฐ์: 17๊ฐ
๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : 17
๋ฐ์ดํฐ๊ฐ์: 0๊ฐ
๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : 0
๋ฐ์ดํฐ๊ฐ์: 0๊ฐ
๋ฒกํฐ์ ์ด๊ธฐ ์ฉ๋ : 1
๋ฐ์ดํฐ๊ฐ์: 1๊ฐ
Test8
๐ป ์ ๋ ฅ
import java.util.Vector;
class Test{
String name;
int age;
}
public class Test8 {
public static void main(String[] args) {
Vector<Test> v = new Vector<Test>(); //<class - Test> (string ํํ 1๊ฐ + int ๋ฐ์ดํฐ 1๊ฐ)
//Test ob = new Test();
Test ob;
ob = new Test(); //for๋ฌธ์ ์์จ์ ๋๋ฒ์จ์ผํจ
ob.name = "๋ฐฐ์์ง";
ob.age = 28;
v.add(ob);
ob = new Test();//for๋ฌธ์ ์์จ์ ๋๋ฒ์จ์ผํจ
ob.name = "์ด์ด๋ด";
ob.age = 26;
v.add(ob);
for(Test t : v) {
System.out.println(t.name+" : "+t.age);
}
}
}
๋ฐฐ์์ง : 28
์ด์ด๋ด : 26