전체 커리큘럼

상세 커리큘럼

08. LinkedList 구현하기 (25.02.06)


진행률; 백엔드 시작 - 스프링 입문

자바 기초 이론

Call by Value와 Call by Reference

Call by value와 Call by reference란 원시 타입이나 객체 타입이 **함수의 인자(argument)**로 할당 받고 **매개변수(parameter)**로 전달될 때 어떤 방식으로 전달될 지를 결정하는 방식이다.

  1. Parameter; Argument;

    출처; https://chitru-shrestha.medium.com/argument-and-parameter-in-javascript-with-examples-14405c8c8757

    출처; https://chitru-shrestha.medium.com/argument-and-parameter-in-javascript-with-examples-14405c8c8757

    Value와 Reference의 차이점을 알아보기 전에 가장 먼저 알아야 할 것이 하나 있다. 인자(Argument)와 매개변수(Parameter) 정의와 차이점을 아는 것이다.

    Parameter; 매개변수는 함수(or 메서드)를 정의할 때, 외부에서 입력 받을 값으로써 함수의 Body에서 동작을 정의할 때 사용되는 임의 값을 표현하는 변수를 의미한다.

    Argument; 인자는 함수를 호출할 때, 실제로 사용되는 값을 말한다.

  2. JS

    결론부터, 말하면 JS는 무조건 Call by Value 방식이다.

    값에 의한 전달(Call by Value)

    원시 타입 ⇒ string, boolean, number(int), long (클래스 or 배열을 제외한 모든 타입)

    let str = 'javascript';
    
    function test1(st){
    	st = 'hello';
      console.log(st);
    };
    
    console.log(str); // Output1 : ??
    test1(str);       // Output2 : ??
    console.log(str); // Output3 : ??
    
    let st = str;
    st = 'typescript';
    
    console.log(str); // Output1 : ??
    console.log(st);  // Output2 : ??
    

    참조에 의한 전달(Call by Reference)

    객체 타입(+ Array)

  3. JAVA

    자바의 데이터 타입(Type)

    자바에서는 데이터 타입(Data Type)을 크게 2가지로 카테고리로 구분 한다.

    예제 코드

    package org.coding.test.data.structure.delivery.value;
    
    public class Example1 {
        static void addByValue(int a){
            a += 100;
        }
        static void addByReference(int[] a){
            a[0] += 100;
        }
        public static void main(String[] args) {
            int x = 10;
            int[] y = {1};
    
            addByValue(x);
            System.out.println("Add By Value - Output ::: " + x);
    
            addByReference(y);
            System.out.println("Add By Reference - Output ::: " + y[0]);
        }
    }
    
    
  4. 재귀 호출

LinkedList 자료구조 구현 예제

  1. 정의
  2. 구조

image.png

  1. 특징

  2. 예제 코드

    https://github.com/jinho-yoo-jack/jedi-algorithm-force/blob/master/src/main/java/org/coding/test/data/structure/array/LinkedList.java