โš™๏ธ backend/โ˜•๏ธ java

Day03. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ

dev!n 2023. 7. 7. 08:56

๋ชฉ์ฐจ

    ์ž๋ฐ” ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

    Overloading

    1. ํ•˜๋‚˜์˜ class ๋‚ด๋ถ€์— ์ด๋ฆ„์ด ๊ฐ™์€ method๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒƒ
    2. ํ•˜๋‚˜์˜ method ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„
    3. ์ž‘์„ฑ ๊ทœ์น™
      1. modifier(์ ‘๊ทผ ์ œํ•œ์ž)๋Š” ๊ฐ™์•„๋„ ๋‹ฌ๋ผ๋„ ์ƒ๊ด€ ์—†์Œ
      2. returnType ๊ฐ™์•„๋„ ๋‹ฌ๋ผ๋„ ์ƒ๊ด€ ์—†์Œ
      3. method ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๊ฐ™์•„์•ผ ํ•จ!
      4. ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ˆœ์„œ or ํƒ€์ž… or ๊ฐœ์ˆ˜ ์…‹ ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ฌ๋ผ์•ผ ํ•จ!

    ์˜ˆ) System.out.println()

    public void println()
    public void println(boolean x)
    public void println(char x)
    public void println(int x)
    public void println(long x)
    public void println(float x)
    public void println(double x)
    public void println(char[] x)
    public void println(String x)
    public void println(Object x)
    

    Parameter & Argument

    Parameter(๋งค๊ฐœ๋ณ€์ˆ˜) : ํ•จ์ˆ˜ ์ •์˜ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜

    Argument(์ธ์ˆ˜) : ํ•จ์ˆ˜์— ์‹ค์ œ๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’

    Variable Arguments

    1. ์ค„์—ฌ์„œ Varargs
    2. ์ž„์˜์˜ ๊ฐœ์ˆ˜์˜ ์ธ์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
    3. Vararg parameter must be the last in the list: ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋งŒ ์„ ์–ธ ๊ฐ€๋Šฅ
    4. syntax
    5. accessModifier methodName(datatype… arg) { // method body }

    ์˜ˆ) System.out.printf()

    public PrintStream printf(String format, Object... args)
    public PrintStream printf(Locale l, String format, Object... args)
    

    ์‹ค์Šต) ๋‹ค์–‘ํ•œ datatype์˜ varargs

    /* ์ฝ”๋“œ */
    class VarargsTest {
        public void varargsTest(Object... objects) { 
            System.out.println("objects = " + objects);
            System.out.println("objects.length = " + objects.length);
            for (Object obj : objects) {
                System.out.printf("%s %s", obj, obj.getClass());
                System.out.println();
            }
            System.out.println("----------");
        }
    
        public void varargsLast(String s, int... ints) {
            System.out.println("s = " + s);
            for (int i : ints) {
                System.out.println("i = " + i);
            }
        }
    }
    
    public class VariableArgsExam {
        public static void main(String[] args) {
            VarargsTest t = new VarargsTest();
            t.varargsTest(2);
            t.varargsTest();
            t.varargsTest(1, 3, 5, 6, 7);
    
            t.varargsTest("aa", "bb", "cc");
    
            t.varargsTest(2, 3, "aa");
    
            t.varargsLast("ํ…Œ์ŠคํŠธ", 1, 2, 3);
        }
    }
    
    /* ๊ฒฐ๊ณผ */
    objects = [Ljava.lang.Object;@6aaa5eb0 // ์ธ์ž๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ›์•„์˜จ๋‹ค
    objects.length = 1
    2 class java.lang.Integer
    ----------
    objects = [Ljava.lang.Object;@62ee68d8 // 0๊ฐœ ์ด์ƒ์˜ ์ธ์ž
    objects.length = 0
    ----------
    objects = [Ljava.lang.Object;@735b5592
    objects.length = 5
    1 class java.lang.Integer
    3 class java.lang.Integer
    5 class java.lang.Integer
    6 class java.lang.Integer
    7 class java.lang.Integer
    ----------
    objects = [Ljava.lang.Object;@58651fd0 // ์—…์บ์ŠคํŒ…
    objects.length = 3
    aa class java.lang.String
    bb class java.lang.String
    cc class java.lang.String
    ----------
    objects = [Ljava.lang.Object;@4520ebad // ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ํ•œ๋ฒˆ์— ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
    objects.length = 3
    2 class java.lang.Integer
    3 class java.lang.Integer
    aa class java.lang.String
    ----------
    s = ํ…Œ์ŠคํŠธ 
    i = 1 // ๋ฐ˜๋“œ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋งˆ์ง€๋ง‰์—! 
    i = 2
    i = 3
    
    Process finished with exit code 0
    

    Constructor

    1. ํŠน๋ณ„ํ•œ method
      1. ์ƒ์„ฑ์ž๋„ ๋ฉ”์†Œ๋“œ์ด๋ฏ€๋กœ ์Šคํƒ์˜์—ญ์— ์Œ“์ธ๋‹ค.
    2. method ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ class ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค!
    3. returnType์ด ์—†๋‹ค
    4. โ‡จ modifier ClassName( [ datatype variableName, ... ] ){ }
    5. ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ(new)๋˜๋Š” ์‹œ์ ์— ๋”ฑ ํ•œ ๋ฒˆ ์‹คํ–‰๋œ๋‹ค
      1. ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ์ ์— ํ•˜๋‚˜๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
    6. java์˜ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ–๋Š”๋‹ค
    7. Overloading์ด ๊ฐ€๋Šฅํ•˜๋‹ค
      1. (์ด๋ฆ„ ๊ฐ™์Œ, ์ œํ•œ์ž ๋‹ค๋ฅผ์ˆ˜๋„, ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜.ํƒ€์ž….์œ„์น˜ ์ตœ์†Œ ํ•˜๋‚˜๋Š” ๋‹ค๋ฆ„)
    8. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด default ์ƒ์„ฑ์ž๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค
    9. โ‡จ modifier ClassName( ){ }

    ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ์ผ์–ด๋‚˜๋Š” ์ผ

    ClassName c = new ClassName(datatype d, ...);

    1. ์ „์—ญ๋ณ€์ˆ˜๋ฅผ 0์— ์ค€ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ex) int i; ⇒ 0
    2. ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ดˆ๊ธฐํ™”(ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’) ex) int i = 5;
    3. ์ƒ์„ฑ์ž ๊ตฌํ˜„๋ถ€ ์‹คํ–‰

    ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ

    this([๊ฐ’, ๊ฐ’, ... ]); โ‡จ ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž ๊ตฌํ˜„๋ถ€ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ๋งŒ ๊ฐ€๋Šฅ

    ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ

    ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ๋”ฑ ํ•œ๋ฒˆ ํ•ด์•ผํ•˜๋Š” ์ผ์ด ์žˆ์„ ๊ฒฝ์šฐ

    DB ๋กœ๋“œ, ์ดˆ๊ธฐ ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ํ™˜๊ฒฝ ์„ธํŒ…, ...

    ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ƒ์„ฑ์ž๋Š” ์ž๋™ ํ˜ธ์ถœ ์ด์ 

    Array Size

    Java์—์„  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์—†๋‹ค

    ๊ทธ๋ž˜์„œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๊ฒŒ ๋” ์œ ์—ฐํ•˜๋‹ค. ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ฃจํ”„ ๋Œ ๋•Œ.

    (์‚ฌ์‹ค ์ž๋ฃŒ๊ตฌ์กฐ ์“ฐ๋ฉด ๋ฐ์ดํ„ฐ ์กฐ์ž‘์ด ํ›จ์”ฌ ํŽธํ•˜๋‹ค!)

    ex)

    public class StudentService {
        Student[] students = new Student[10]; 
        static int STUDENT_SIZE = 0;
    
        public StudentService() {
            students[STUDENT_SIZE++] = new Student("name1", 21, "seoul");
            students[STUDENT_SIZE++] = new Student("name2", 22);
            students[STUDENT_SIZE++] = new Student("name3", 23, "seoul");
            students[STUDENT_SIZE++] = new Student("name4", 24, "seoul");
            students[STUDENT_SIZE++] = new Student("name5", 25);
        }
    
        /**
         * ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ํ•™์ƒ์ •๋ณด ๊ฒ€์ƒ‰
         *
         * @param name ์ด๋ฆ„์€ ์ค‘๋ณต ์•ˆ๋จ(pk)
         * @return ์ฐพ์œผ๋ฉด Student ๋ฆฌํ„ด, ๋ชป์ฐพ์œผ๋ฉด null ๋ฆฌํ„ด(์•ฝ์†)
         */
        public Student selectByName(String name) {
            for (int i = 0; i < STUDENT_SIZE; i++) { // STUDNET_SIZE ๋งŒํผ ๋ฃจํ”„๋ฅผ ๋ˆ๋‹ค
                if (students[i].name.equals(name)) return students[i]; //String์€ ์ƒ์ˆ˜, ๋ถˆ๋ณ€ ๊ฐ์ฒด. ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด์žˆ์Œ.
            }
            return null;
        }
    }
    

     

    ์ฐธ๊ณ  ๋งํฌ

    https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/PrintStream.html#println()

    https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/PrintStream.html#println():~:text=public PrintStream printf(String format%2C Object... args)

    https://www.programiz.com/java-programming/varargs

    https://velog.io/@zionedoha/JAVA-์˜ค๋ฒ„-๋ผ์ด๋”ฉ๊ณผ-ํ˜•๋ณ€ํ™˜

    http://www.ktword.co.kr/test/view/view.php?m_temp1=5482&id=1472