Java Basic

스스로 기초를 다지는 데 도움이 되는 공부 거리를 목차로 정리합니다. 큰 목차는 MIT 6.005의 2: Basic Java와 거의 같습니다.

Language Basic #

flowchart TB
    classDef site stroke:none,fill:none;
    classDef section fill:none;
    classDef group stroke:none,fill:none;

    basic_syntax@{ shape: text, label: "문법을 익히는 데 도움이 됩니다" }
    -.- |baeldung| gswj(Get Started with Java)
    --- gswj_basic(Java Language Basics)
    --- gswj_arrays(Java Arrays)
    basic_syntax -.- |oracle| oracle_basic(Language Basic)

    click oracle_basic "https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html"
    click gswj "https://www.baeldung.com/get-started-with-java-series"

    class gswj site;
    class oracle_basic site;

    basic_programming@{ shape: text, label: "문법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
    -.- |MIT OCW| mit_ocw_6092(6.092: Introduction to Programming in Java)
    basic_programming -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
    basic_programming -.- |Robert Sedgewick & Kevin Wayne| introcs_java(Introduction to Programming in Java)

    mit_ocw_6092
    --> mit_ocw_6092_lecture1(Lecture 1 - Types, Variables, Operators)
    --> mit_ocw_6092_lecture2(Lecture 2 - More Types, Methods, Conditionals)
    --> mit_ocw_6092_lecture3(Lecture 3 - Loops, Arrays)

    javanotes
    --> javanotes_chapter1(Chapter 1: Overview: The Mental Landscape)
    --> javanotes_chapter2(Chapter 2: Programming in the Small I: Names and Things)
    --> javanotes_chapter3(Chapter 3: Programming in the Small II: Control)
    --> javanotes_chapter4(Chapter 4: Programming in the Large I: Subroutines)
    --> javanotes_chapter7(Chapter 7: Arrays, ArrayLists, and Records)
    --> javanotes_chapter7_section1(Section 1:
            Array Details)
    --> javanotes_chapter7_section2(Section 2:
            Array Processing)

    introcs_java
    --> introcs_java_chapter1(Chapter 1: Elements of Programming)
    --> introcs_java_chapter2(Chapter 2: Functions)

    click mit_ocw_6092 "https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/lecture-notes/"
    click javanotes "https://math.hws.edu/javanotes/"
    click introcs_java "https://introcs.cs.princeton.edu/java/home/"

    class mit_ocw_6092 site
    class javanotes site
    class introcs_java site

    class javanotes_chapter7_section1 section
    class javanotes_chapter7_section2 section

Numbers & Strings #

flowchart TB
    classDef site stroke:none,fill:none;
    classDef section fill:none;
    classDef group stroke:none,fill:none;

    cs@{ shape: diam, label: "0.3 == 0.1 + 0.1 + 0.1?" }
    cs --> |false| start
    cs --> |true| introcs_sc_float([
        _9.1: Floating Point_,
        Scientific Computation
        ])
    --> cs

    start@{ shape: sm-circ , label: "" } -.- |oracle| oracle_data(Numbers & Strings)

    start -.- |baeldung| baeldung_wrapper_classes([Wrapper Classes in Java])
        --> baeldung_number_class(Guide to the Number Class in Java)
        --> gswj_strings(
            _Java Strings_,
            Get Started with Java
            )

    oracle_data & gswj_strings
    -.- prerequisite_classes_objects(Classes & Objects)
    -.- prerequisite_essential_java_classes(Essential Java Classes)
    -.- |baeldung| gswj_overflow_underflow([Overflow and Underflow in Java])
    --> gswj_comparing_doubles([Comparing Doubles in Java])

    click oracle_data "https://docs.oracle.com/javase/tutorial/java/data/index.html"
    click introcs_sc_float "https://introcs.cs.princeton.edu/java/91float/"
    click baeldung_wrapper_classes "https://www.baeldung.com/java-wrapper-classes"
    click baeldung_number_class "https://www.baeldung.com/java-number-class"
    click prerequisite_classes_objects "#classes--objects"
    click prerequisite_essential_java_classes "#essential-java-classes"
    click gswj_strings "https://www.baeldung.com/get-started-with-java-series"
    click gswj_comparing_doubles "https://www.baeldung.com/java-comparing-doubles"
    click gswj_overflow_underflow "https://www.baeldung.com/java-overflow-underflow"

    class gswj_strings chapter
    class prerequisite_classes_objects section
    class prerequisite_essential_java_classes section
    class oracle_data chapter
    class introcs_sc_float section
    class baeldung_wrapper_classes section
    class baeldung_number_class section
    class gswj_comparing_doubles section
    class gswj_overflow_underflow section

Classes & Objects #

flowchart TB
    classDef site stroke:none,fill:none;
    classDef section fill:none;
    classDef group stroke:none,fill:none;

    subgraph programming [ ]
        direction TB

        basic_programming@{ shape: text, label: "문법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |MIT OCW| mit_ocw_6092_lecture4(
            _Lecture 4 - Classes and Objects_,
            6.092: Introduction to Programming in Java)
        basic_programming
        -.- |David J. Eck| javanotes_chapter5(
            _Chapter 5: Programming in the Large II:
                Objects and Classes_,
            Introduction to Programming Using Java
            )
        basic_programming
        -.- |Robert Sedgewick & Kevin Wayne| introcs_chapter3(
            _Chapter 3: Object-Oriented Programming_,
            Introduction to Programming in Java)

        click mit_ocw_6092_lecture4 "https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/resources/mit6_092iap10_lec04/"
        click javanotes_chapter5 "https://math.hws.edu/javanotes/c5/index.html"
        click introcs_chapter3 "https://introcs.cs.princeton.edu/java/30oop/"


        class mit_ocw_6092 site
        class javanotes site
        class introcs_java site
    end

    subgraph syntax [ ]
        direction TB
        basic_syntax@{ shape: text, label: "문법을 익히는 데 도움이 됩니다" }
        -.- |baeldung| gswj_oo(
            _Java OOP_,
            Get Started with Java
            )
        basic_syntax -.- |oracle| oracle_oo(Classes & Objects)
        --> oracle_ii(Interface & Inheritance)

        click oracle_basic "https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html"
        click gswj_oo "https://www.baeldung.com/get-started-with-java-series"
        click oracle_oo "https://docs.oracle.com/javase/tutorial/java/javaOO/index.html"
        click oracle_ii "https://docs.oracle.com/javase/tutorial/java/IandI/index.html"

        class gswj_oo chapter;
        class oracle_oo chapter;
        class oracle_ii chapter;
    end

    subgraph supplements [ ]
        direction LR
        mit_ocw_6005_s16_equality([
            _15: Equality_,
            6.005: Software Construction Readings
            ])
        -.- | baeldung | baeldung
        subgraph baeldung [ ]
        baeldung_equals(["Difference Between == and equals() in Java"])
        --> baeldung_contracts(["Java equals() and hashCode() Contracts"])
        --> baeldung_hashcode(["Guide to hashCode() in Java"])
        --> baeldung_comparable(["Comparing Objects in Java"])
        end

        click mit_ocw_6005_s16_equality "https://ocw.mit.edu/ans7870/6/6.005/s16/classes/15-equality/"
        click baeldung_equals "https://www.baeldung.com/java-equals-method-operator-difference"
        click baeldung_contracts "https://www.baeldung.com/java-equals-hashcode-contracts"
        click baeldung_hashcode "https://www.baeldung.com/java-hashcode"
        click baeldung_comparable "https://www.baeldung.com/java-comparing-objects"

        class mit_ocw_6005_s16_equality section
        class baeldung_equals section
        class baeldung_contracts section
        class baeldung_hashcode section
        class baeldung_comparable section
    end

    syntax & programming -.- |MIT OCW| mit_ocw_6005_s16_equality

    class syntax group
    class programming group
    class supplements group
    class baeldung group

Essential Java Classes #

flowchart TB
    classDef site stroke:none,fill:none;
    classDef section fill:none;
    classDef group stroke:none,fill:none;

    subgraph programming [ ]
        direction TB
        basic_programming@{ shape: text, label: "사용법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        --> |Chapter 8: Correctness, Robustness, Efficiency| javanotes_chapter8_section1(
            Section 1: Introduction to Correctness and Robustness)
        --> javanotes_chapter8_section2(Section 2: Writing Correct Programs)
        --> javanotes_chapter8_section3(Section 3: Exceptions and try..catch)
        --> |Chapter 11: Input/Output Streams, Files, and Networking| javanotes_chapter11_section1(
            Section 1: I/O Streams, Readers, and Writers)
        --> javanotes_chapter11_section2(Section 2: Files)
        --> javanotes_chapter11_section3(Section 3: Programming With Files)

        click javanotes "https://math.hws.edu/javanotes/"

        class javanotes site
        class javanotes_chapter8_section1 section
        class javanotes_chapter8_section2 section
        class javanotes_chapter8_section3 section
        class javanotes_chapter11_section1 section
        class javanotes_chapter11_section2 section
        class javanotes_chapter11_section3 section
    end

    subgraph syntax [ ]
        direction TB
        basic_syntax@{ shape: text, label: "사용법을 익히는 데 도움이 됩니다" }
        basic_syntax -.- |baeldung| gswj(Getting Started with Java)
        --> gswj_exception(Java Exceptions)
        --> io(Java I/O)
        --> gswj_regular_expressions([A Guide To Java Regular Expressions API])

        basic_syntax -.- |oracle| oracle_essential(Essential Java Classes)
        --> oracle_exceptions(Exceptions)
        --> oracle_io(Basic I/O)
        --> oracle_regular_expressions(Regular Expressions)

        click gswj "https://www.baeldung.com/get-started-with-java-series"
        click gswj_regular_expressions "https://www.baeldung.com/regular-expressions-java"
        click oracle_essential "https://docs.oracle.com/javase/tutorial/essential/index.html"

        class gswj site
        class oracle_essential site
        class gswj_regular_expressions section
    end

    class syntax group
    class programming group

Collections #

flowchart TB
    classDef site stroke:none,fill:none;
    classDef section fill:none;
    classDef group stroke:none,fill:none;

    subgraph generics [ ]
        direction LR

        generics_begins@{ shape: text, label: "
            Generics (parametric polymorphism)
            type을 parameter로 받아서
            type-safe & reusable code를 짜는 공부" }
        -.- |baeldung| baeldung_generics([The Basics of Java Generics])
        --> baeldung_generics_vs_extends_object(["
                Java Generics:
                    < ? > vs.  < ? extends Object >"
                    ])

        generics_begins -.- |oracle| oracle_generics(Generics)

    click baeldung_generics "https://www.baeldung.com/java-generics"
    click baeldung_generics_vs_extends_object "https://www.baeldung.com/java-generics-vs-extends-object"
    click oracle_generics "https://docs.oracle.com/javase/tutorial/java/generics/index.html"

    class baeldung_generics section
    class baeldung_generics_vs_extends_object section
    class oracle_generics chapter
    end

    subgraph programming [ ]
        direction TB
        basic_programming@{ shape: text, label: "사용법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        --> javanotes_chapter7_section3([
            _Section 3: ArrayList_,
            Chapter 7: Arrays, ArrayLists, and Records])
        --> javanotes_10(Chapter 10:
            Generic Programming and Collection Classes)

        click javanotes "https://math.hws.edu/javanotes/"

        class javanotes site
        class javanotes_chapter7_section3 section
    end

    subgraph syntax [ ]
        direction TB

        basic_syntax@{ shape: text, label: "사용법을 익히는 데 도움이 됩니다" }
        -.- |oracle| oracle_collections(Collections)

        basic_syntax
        -.- |baeldung| gswj(Get Started with Java)
        --> gswj_collections(Java Collections)

        click oracle_collections "https://docs.oracle.com/javase/tutorial/collections/index.html"
        click gswj "https://www.baeldung.com/get-started-with-java-series"

        class oracle_collections site
        class gswj site
    end

    generics ---> syntax
    generics ---> programming

    class generics group
    class programming group
    class syntax group

Concurrency & Networking #

flowchart TB
    classDef site stroke:none,fill:none;
    classDef section fill:none;
    classDef group stroke:none,fill:none;

    subgraph programming [ ]
        direction TB
        basic_programming@{ shape: text, label: "사용법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |MIT OCW| mit_ocw_6005_s16_readings(6.005: Software Construction
                        Readings)
        --> mit_ocw_6005_s16_reading19(19: Concurrency)
        --> mit_ocs_6005_s16_reading20(20: Thread Safety)
        --> mit_ocs_6005_s16_reading21(21: Sockets & Networking)
        --> mit_ocs_6005_s16_reading22(22: Queues & Message-Passing)
        --> mit_ocs_6005_s16_reading23(23: Locks & Synchronization)

        basic_programming
        -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        --> javanotes_chapter11_section4([
            _Section 4: Networking_,
            Chapter 11: Input/Output Streams,
                Files, and Networking
            ])
        --> javanotes_chapter12(Chapter 12:
                                Threads and Multiprocessing)

        click javanotes "https://math.hws.edu/javanotes/"
        click mit_ocw_6005_s16_readings "https://ocw.mit.edu/ans7870/6/6.005/s16/"

        class mit_ocw_6005_s16_reading19_22 chapter
        class mit_ocw_6005_s16_readings site
        class javanotes site
        class javanotes_chapter11_section4 section
   end

   subgraph syntax [ ]
        direction TB

        basic_syntax@{ shape: text, label: "사용법을 익히는 데 도움이 됩니다" }
        -.- |baeldung| baeldung_concurrency(Java Concurrency Series)
        --> baeldung_concurrency_basics(Java Concurrency Basics)
        --> baeldung_concurrency_advanced(Advanced Concurrency in Java)

        baeldung_concurrency_basics
        --> baeldung_sockets([A Guide to Java Sockets])
        --> baeldung_inputstream_server_socket([
            Read an InputStream
            using the Java Server Socket
            ])

        baeldung_sockets
        --> baeldung_socket_connection_read_timeout([
            Connection Timeout
            vs.
            Read Timeout for Java Sockets
            ])

        baeldung_inputstream_server_socket
        --> baeldung_url([A Guide to the Java URL])

        baeldung_url --> baeldung_url_vs_uri([
            Difference
            Between URL and URI
            ])

        baeldung_inputstream_server_socket
        --> baeldung_udp([A Guide to UDP In Java])

        click baeldung_concurrency "https://www.baeldung.com/java-concurrency"
        click baeldung_url "https://www.baeldung.com/java-url"
        click baeldung_url_vs_uri "https://www.baeldung.com/java-url-vs-uri"
        click baeldung_sockets "https://www.baeldung.com/a-guide-to-java-sockets"
        click baeldung_inputstream_server_socket "https://www.baeldung.com/java-inputstream-server-socket"
        click baeldung_socket_connection_read_timeout "https://www.baeldung.com/java-socket-connection-read-timeout"
        click baeldung_udp "https://www.baeldung.com/udp-in-java"

        class baeldung_concurrency site

        class baeldung_concurrency_basics chapter
        class baeldung_concurrency_advanced chapter
        class baeldung_url section
        class baeldung_url_vs_uri section
        class baeldung_sockets section
        class baeldung_inputstream_server_socket section
        class baeldung_socket_connection_read_timeout section
        class baeldung_udp section
   end

   class programming group
   class syntax group