๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Back-End/JAVA

[์ž๋ฐ”] ์ž๋ฐ” ๊ธฐ์ดˆ ๊ฐœ๋…

by bamDal 2022. 4. 7.

JAVA๋ž€?

  • JAVA : ๊ฐ์ฒด ์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • JAVA์˜ ํŠน์ง•
    1. ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด (Object Orient Language)
    2. ์ด์‹์„ฑ์ด ๋†’์Œ ( ํ•œ ๋ฒˆ์˜ ์ปดํŒŒ์ผ๋กœ Window, Linux, IOS ์–ด๋””์„œ๋“  ์‹คํ–‰๋จ)
    3. opensource ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ’๋ถ€ํ•จ โ˜…

   ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋ž€?

  • OOP(Object Orient Programing :  ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ์–ธ์–ด
  • ์ž๋™์ฐจ ๊ณต์žฅ์—์„œ ๊ฐ ๋ถ€ํ’ˆ์„ ์กฐ๋ฆฝํ•˜์—ฌ ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค๋“ฏ์ด ํ”„๋กœ๊ทธ๋žจ๋„ ์กฐ๋ฆฝํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ?
  • ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งŒ๋“ค์–ด ๊ณต๊ฐœํ•œ ๋‚ด์šฉ์„ ๊ฐ€์ ธ๋‹ค์“ฐ๋ฉด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋” ๋นจ๋ผ์ง€์ง€ ์•Š์„๊นŒ?
  • ๊ทธ ๊ฒฐ๊ณผ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด ๋ฐ”๋กœ OOP์–ธ์–ด.
  • => JAVA๋Š” ๋ˆ„๊ตฐ๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ ๊ฒƒ์„ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ด€์ ์œผ๋กœ ๋ฐ”๋ผ๋ณด๊ธฐ! โ˜…

 

๋ณ€์ˆ˜๋ž€?

1. ๋ณ€์ˆ˜

  • ๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ด๋Š” ์ปต
  • ๋ฌผ์„ ๋งˆ์‹œ๊ณ ์ž ํ•  ๋•Œ ์ปต์„ ์ด์šฉํ•˜์—ฌ ๋งˆ์‹œ๋ฉด ๋ฌผ์„ ํ˜๋ฆฌ์ง€ ์•Š๊ณ  ๋งˆ์‹ค ์ˆ˜ ์žˆ๋‹ค.

2. ๋ณ€์ˆ˜ ์ด๋ฆ„

  • ๊ฐ™์€ ์ปต์ด ๋งŽ์œผ๋ฉด ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ๊นŒ ๊ฐ ์ปต์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๋ถ™์ด๋Š” ๋ผ๋ฒจ

3. ๋ณ€์ˆ˜์˜ ํƒ€์ž…

  • ๋‹ด๋Š” ์šฉ๋„์— ๋”ฐ๋ผ ์ปต์˜ ํฌ๊ธฐ์™€ ์ข…๋ฅ˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. 
  • ๋งฅ์ฃผ - ๋งฅ์ฃผ์ž”, ๋ง‰๊ฑธ๋ฆฌ - ๋ง‰๊ฑธ๋ฆฌ์ž”, ์†Œ์ฃผ - ์†Œ์ฃผ์ž”, ์™€์ธ - ์™€์ธ์ž”, ๋”ฐ๋œปํ•œ ์šฐ์œ  - ๋จธ๊ทธ์ž”

4. ํ”„๋กœ๊ทธ๋žจ์—์„œ์˜ ๋ณ€์ˆ˜

String wineglass = "๋ ˆ๋“œ ์™€์ธ";

// String : ๋ณ€์ˆ˜ ํƒ€์ž… - ๋‹ด๋Š” ๊ฐ’์— ๋”ฐ๋ผ ํƒ€์ž…์ด ์ •ํ•ด์ง
// wineglass : ๋ณ€์ˆ˜ ์ด๋ฆ„
// ๋ ˆ๋“œ์™€์ธ : ๋ณ€์ˆ˜ ๊ฐ’
  • ๋ณ€์ˆ˜ ์„ ์–ธ ํƒ€์ž…
์ž๋ฃŒํ˜• ์„ค๋ช…
Boolean ๋…ผ๋ฆฌ ์ž๋ฃŒํ˜• (true / false)
String ๋ฌธ์ž์—ด ํด๋ž˜์Šค
Int 4๋ฐ”์ดํŠธ์˜ ์ •์ˆ˜ํ˜• ์ž๋ฃŒ ํƒ€์ž…
Long 8๋ฐ”์ดํŠธ์˜ ์ •์ˆ˜ํ˜• ์ž๋ฃŒ ํƒ€์ž…
Float 4๋ฐ”์ดํŠธ์˜ ์‹ค์ˆ˜ํ˜• ์ž๋ฃŒ ํƒ€์ž…
Double 8๋ฐ”์ดํŠธ์˜ ์‹ค์ˆ˜ํ˜• ์ž๋ฃŒ ํƒ€์ž…

 

5. ๋ณ€์ˆ˜์˜ ์˜์—ญ(scope)

  • ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋œ ๊ณณ๋ณด๋‹ค ๋ฐ”๊นฅ ์ชฝ์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•˜๋‹ค.
  • ์นดํŽ˜ ๋งค์žฅ์˜ ๋จธ๊ทธ์ปต VS ์ง‘์—์„œ ๊ฐ€์ ธ์˜จ ํ…€๋ธ”๋Ÿฌ
  • => ๋งค์žฅ์˜ ๋จธ๊ทธ์ปต์€ ๋ฐ–์œผ๋กœ ๋“ค๊ณ  ๋‚˜๊ฐˆ ์ˆ˜ ์—†๋‹ค.
public class VarScope {
	
	String str = "์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅ ํ•˜์„ธ์š”."; //ํด๋ž˜์Šค ์˜์—ญ์—์„œ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— method์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
	
	public static void main(String[]args) {
		int number = 123; //method์—์„œ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— method ๋ฐ–์œผ๋กœ ๋ชป๋‚˜๊ฐ„๋‹ค.
		
		for (int i = 0; i < args.length; i++) {
			int sum = 0; //for๋ฌธ ์•ˆ์—์„œ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— for ๋ฐ–์œผ๋กœ ๋‚˜๊ฐˆ ์ˆ˜ ์—†๋‹ค.
			sum = i + number; //number๋Š” for๋ฌธ ์•ˆ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
		}
		
		str = sum + "์ž…๋‹ˆ๋‹ค."; //sum์€ for๋ฌธ์„ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋‹ค.
	}

}

 

6. ํ˜• ๋ณ€ํ™˜(casting)

  • ํ•œ ์ปต์— ์žˆ๋Š” ๋‚ด์šฉ๋ฌผ์„ ๋‹ค๋ฅธ ์ปต์— ์˜ฎ๊ฒจ ๋‹ด๋Š” ๊ฒƒ
  • ๋ฌต์‹œ์  ํ˜• ๋ณ€ํ™˜ : ์ž‘์€ ์ปต -> ํฐ ์ปต : ๋”ฐ๋กœ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ
  • ๋ช…์‹œ์  ํ˜• ๋ณ€ํ™˜ : ํฐ ์ปต -> ์ž‘์€ ์ปต : ๋‚ด์šฉ๋ฌผ์ด ๋„˜์น  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ์ฐจ๊ฐ€ ํ•„์š”
public static void main(String[] args) {
    // ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜ ( ํฐ ๊ฑฐ -> ์ž‘์€ ๊ฑฐ, ๋™์ผํฌ๊ธฐ ๋‹ค๋ฅธ ํ˜•ํƒœ)
    // eclipse์—์„œ ์ž๋™์œผ๋กœ ํ•ด ์ค€๋‹ค.
    char charVal;
    int intVal;
    long longVal;
    float floatVal;
    double doubleVal;

    intVal = 44032;
    charVal =(char) intVal;  // int ์ธ๋ฐ char์— ๋“ค์–ด๊ฐˆ๊ฑฐ์•ผ ์ž˜ ํ™•์ธํ•ด๋ด.
    System.out.println(charVal); //syso

    longVal = 500;  //longVal์„ intVal์— ๋„ฃ์–ด๋ณด์ž -> *intVal์ด ์™ผ์ชฝ์— ์žˆ์–ด์•ผ ํ•จ!*
    intVal = (int) longVal;  

    doubleVal = 3.14;  //doubleVal์„ floatVal์— ๋„ฃ์–ด๋ณด์ž 
    floatVal = (float) doubleVal;
}
  • ํƒ€์ž…์˜ ํฌ๊ธฐ : byte < short < int < long
  • ๊ฐ ํƒ€์ž… ๋ณ„ ํฌ๊ธฐ
    //byte
    System.out.println("byte ํฌ๊ธฐ : " + Byte.MIN_VALUE +" ~ "+ Byte.MAX_VALUE);

    //short(JAVA ์—์„œ ๊ฑฐ์˜ ์•ˆ์“ด๋‹ค.)
    System.out.println("short ํฌ๊ธฐ : " +Short.MIN_VALUE +" ~ "+ Short.MAX_VALUE);

    //int
    System.out.println("int ํฌ๊ธฐ : " +Integer.MIN_VALUE +" ~ "+ Integer.MAX_VALUE);

    //long
    System.out.println("long ํฌ๊ธฐ : " +Long.MIN_VALUE +" ~ "+ Long.MAX_VALUE);

    //float
    System.out.println("float ํฌ๊ธฐ : " +Float.MIN_VALUE +" ~ "+ Float.MAX_VALUE);

    //double
    System.out.println("double ํฌ๊ธฐ : " +Double.MIN_VALUE +" ~ "+ Double.MAX_VALUE);

์ฝ”๋“œ ๊ฒฐ๊ณผ๊ฐ’

 

Method๋ž€?

1. ์ •์˜

  • ๋ณ€์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ๋ฐ”๊ตฌ๋‹ˆ๋ผ๋ฉด ๋ฉ”์„œ๋“œ๋Š” ๋™์ž‘์„ ์‹คํ–‰ํ•ด์ฃผ๋Š” ๋ฌด์–ธ๊ฐ€์ด๋‹ค.
  • ๋ณ€์ˆ˜ : ๋นจ๋ž˜๋ฐ”๊ตฌ๋‹ˆ
  • ๋ณ€์ˆ˜๊ฐ’ : ๋นจ๋ž˜๊ฐ
  • ๋ฉ”์„œ๋“œ : ์„ธํƒ๊ธฐ

2. ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์กฐ

  • ๊ตฌ์„ฑ์š”์†Œ : ๋ฐ˜ํ™˜ ํƒ€์ž…, ๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜, ์‹คํ–‰๋ฌธ, ๋ฐ˜ํ™˜๋ฌธ
public class Laundry {
	public static void main(String[] args) {
    	String ๋นจ๋ž˜๋ฐ”๊ตฌ๋‹ˆ = "์˜ค๋Š˜ ์ž…์€ ์˜ท";
        String ๋ฐ”๊ตฌ๋‹ˆ = ์„ธํƒ๊ธฐ(๋นจ๋ž˜๋ฐ”๊ตฌ๋‹ˆ);
        System.out.println(๋ฐ”๊ตฌ๋‹ˆ);
    }
    
    //์„ธํƒ๊ธฐ : ๋ฉ”์„œ๋“œ ์ด๋ฆ„
    //๋นจ๋ž˜๊ฐ : ๋งค๊ฐœ ๋ณ€์ˆ˜
    //String : ๋ณ€์ˆ˜ ํƒ€์ž…
	public static String ์„ธํƒ๊ธฐ (String ๋นจ๋ž˜๊ฐ) {
    	//์‹คํ–‰๋ฌธ
    	System.out.println(๋นจ๋ž˜๊ฐ+"์„ ์„ธํƒ");
        System.out.println(๋นจ๋ž˜๊ฐ+"์„ ํƒˆ์ˆ˜");
        //๋ฐ˜ํ™˜๋ฌธ
        return "๊นจ๋—ํ•œ"+๋นจ๋ž˜๊ฐ;
    }

3. ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜

  • ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค
  • ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์—†์œผ๋ฉด ๋ฐ˜ํ™˜๋„ ์—†๋‹ค. 
  • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ : ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ๋งŒ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ
    ex) ์žํŒ๊ธฐ - ๋ˆ์„ ๋„ฃ์–ด์•ผ ์Œ๋ฃŒ์ˆ˜ ๋ฝ‘์„ ์ˆ˜ ์žˆ์Œ
  • ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ : ๋ฐ˜ํ™˜ ๊ฐ’์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
    • ๋ฐ˜ํ™˜ ํƒ€์ž… O, ๋งค๊ฐœ๋ณ€์ˆ˜ O : ์ปคํ”ผ๋จธ์‹ , ํ† ์ŠคํŠธ๊ธฐ 
    • ๋ฐ˜ํ™˜ ํƒ€์ž… O, ๋งค๊ฐœ๋ณ€์ˆ˜ X : ๋Œ€๊ธฐ ๋ฒˆํ˜ธํ‘œ ๊ธฐ๊ณ„, ์†์†Œ๋…์ œ ์ž๋™๋ถ„์‚ฌ๊ธฐ
    • ๋ฐ˜ํ™˜ ํƒ€์ž… X, ๋งค๊ฐœ๋ณ€์ˆ˜ O : ์ €๊ธˆํ†ต
    • ๋ฐ˜ํ™˜ ํƒ€์ž… X, ๋งค๊ฐœ๋ณ€์ˆ˜ X : ํ˜ธ์ถœ๋ฒจ, ๋ฒ„์Šค ํ•˜์ฐจ๋ฒจ
//๋ฐ˜ํ™˜ ํƒ€์ž… O, ๋งค๊ฐœ ๋ณ€์ˆ˜ O
String ํ† ์ŠคํŠธ๊ธฐ(String ๋นต) {
    return "๊ตฌ์šด ๋นต";
}

String ์ปคํ”ผ๋จธ์‹ (String ์ปคํ”ผ์บก์Š) {
    return "์ปคํ”ผ";
}

//๋ฐ˜ํ™˜ ํƒ€์ž… O, ๋งค๊ฐœ ๋ณ€์ˆ˜ X
String ๋ฒˆํ˜ธํ‘œ๊ธฐ๊ณ„() {
    return "๋ฒˆํ˜ธํ‘œ";
}

String ์†์†Œ๋…์ œ์ž๋™๋ถ„์‚ฌ๊ธฐ() {
    return "์†Œ๋…์ œ";
}

//๋ฐ˜ํ™˜ ํƒ€์ž… X, ๋งค๊ฐœ ๋ณ€์ˆ˜ O
void ์ €๊ธˆํ†ต(int ๋™์ „) {
    System.out.println(๋™์ „+"์ €๊ธˆ");
}

//๋ฐ˜ํ™˜ ํƒ€์ž… X, ๋งค๊ฐœ ๋ณ€์ˆ˜ X
void ํ˜ธ์ถœ๋ฒจ() {
    System.out.println("ํ˜ธ์ถœ");
}

 

<๊ฐœ๋… ์งˆ๋ฌธ ํƒ€์ž„>

  • ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
    => ํŠน์ • ์ฝ”๋“œ๋ฅผ ๋ถ€ํ’ˆ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ด๋‹ค.
  • ์—๋””ํ„ฐ์™€ IDE์˜ ์ฐจ์ด์ 
    => ์—๋””ํ„ฐ๋Š” ํŽธ์ง‘๋งŒ ๊ฐ€๋Šฅ IDE๋Š” ์ฝ”๋”ฉ, ์ปดํŒŒ์ผ, ์‹คํ–‰, ๋ฐฐํฌ๋ฅผ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
  • JDK๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
    ์ž๋ฐ” ๊ฐœ๋ฐœ๊ณผ ์ปดํŒŒ์ผ์„ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค.
  • ๋ณ€์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  • ๋ณ€์ˆ˜ ํƒ€์ž…์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  • ๋ณ€์ˆ˜ ํƒ€์ž…์ด ์žˆ๋Š” ์ด์œ ?
  • ๋ณ€์ˆ˜์˜ scope์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ผ.
  • ๋ณ€์ˆ˜์˜ casting์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ผ.
  • ๋ฉ”์„œ๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  • ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์„ฑ์š”์†Œ์—๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”๊ฐ€?
  • ๋ฐ˜ํ™˜๊ฐ’๋งŒ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์˜ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ผ.