Java 18

[Java] 네트워크 & 스레드

▶ 네트워크 - 네트워크란 여러 대의 컴퓨터들이 서로 데이터를 교환하기 위해 연결되어있는 통신망을 말한다.  ● IP  - 네트워크 상에서 컴퓨터를 식별하는 번호로 주소와 같은 역할을 한다. ● Port  - 같은 IP주소 내에서 프로그램을 구분하는 데 사용하는 번호이다.  ● 서버 & 클라이언트  ○ 서버(Server) : 클라이언트에게 서비스를 제공해주는 프로그램 또는 컴퓨터로 들어온 요청에 대해 응답을 해준다.  ○ 클라이언트(Client) : 서버에게 서비스를 제공받기 위해 요청을 하는 컴퓨터이다. ※ 클라이언트가 서버에 요청을 하기 위해서는 해당 서버의 'IP주소( 또는 도메인 )', 'Port 번호'를 알아야 한다.※ 서버와 클라이언트는 역할 같은 것으로 클라이언트도 요청을 받으면 서버가 된다..

Java 2024.08.05

[Java] 컬렉션(Collection)

▶ 컬렉션 - '컬렉션'이란 여러 객체를 그룹으로 관리하고 데이터(자료)를 구조적으로 처리하는 개념인 자료구조를 제공해주는 클래스를 담당하는 "프레임워크"이다. - 자료구조 : 방대한 데이터를 보다 효율적으로 관리(추가, 삭제, 조회, 정렬, 수정)할 수 있도록 도와주는 개념. - 프레임워크 : 소프트웨어를 개발하는데 필요한 작업을 처리하기 위해 이미 만들어져 제공되는 틀. - 컬렉션 프레임워크의 인터페이스에는 'List', 'Set', 'Map' 등이 있다.  ▶ 배열과 컬렉션 ● 배열의 단점  - 컬렉션을 배우기 전에는 자료구조로 배열을 사용하여 데이터를 저장하였다. 하지만 배열을 사용하다보면 불편한 점이 많다.1. 배열의 크기를 지정해야 한다. 한 번 지정해서 사용하면 이 후에 크기의 변경이 불가하..

Java 2024.08.04

[Java] API

자바를 이용하여 프로그램을 만드는 개발자들은 자바에서 기본적으로 제공해주는 클래스들을 이용하여 기능을 구현한다. 이런 기능을 통해 자바 개발자가 효율적이고 안정적인 코드를 작성할 수 있도록 해준다. ▶ 자바 API ( Application Programming Interface)  - 위에서 설명했듯 자바에서 기본적으로 제공해주는 라이브러리의 집합이다. 이를 통해 개발자에게 기능의 구현을 용이하게 해준다.  ● java.lang 패키지  - java.lang 패키지는 프로그래밍할 때 자동으로 import되는 패키지로 import없이 사용가능하다.  - Object클래스가 해당 패키지에 정의 되어있다.  - Object, String, Integer, System 등의 클래스가 있다.  ▶ Object 클..

Java 2024.08.01

[Java] 입출력(IO) 스트림

자바를 활용하면서 사용자에게 직접 입력받고 콘솔창에 출력하는 행위를 할 때, 우리는 지금까지 '입출력 스트림'이라는 것을 활용하여 처리했다. 그렇다면 '입출력 스트림'이 무엇일까?  ▶ 입출력(IO) 스트림 - 프로그램상의 데이터를 외부매체로 출력하거나 외부매체로부터 입력을 받을 때, 반드시 외부매체와 연결되는 통로를 만들어 주어야하는데, 이것을 '스트림'이라고 한다. - 우리가 입력을 위해 사용하는 키보드와 프로그램 사이의 흐름을 '입력스트림'이라고 하고, 프로그램과 모니터콘솔창 사이의 흐름을 '출력스트림'이라고 한다.  ● 스트림의 특징  - 단방향 : 스트림 하나는 하나의 역할만 할 수 있다.(Queue 구조)    즉, 입력스트림이라면 입력만 출력스트림이라면 출력만 가능하다.      → 동시에 ..

Java 2024.07.28

[Java] 예외처리

프로그램을 실행시키다가 오류가 발생하였을 경우 프로그램이 비정상적으로 종료될 수 있다. 그 중 소스코드의 수정으로 해결이 가능한 에러를 '예외'라고 하는데, 해당 예외가 발생하는 지점에서 예외를 잘 처리해 주어야 프로그램이 정상적으로 실행될 수 있다. ▶ 오류의 종류 - 시스템오류 : 컴퓨터의 오작동으로 발생하는 심각한 오류로, 소스코드로 해결이 불가능한 오류를 말한다. ex) 하드디스크의 고장, 본체 내부 화재 등등 - 컴파일오류 : 소스코드 문법상의 오류로, 해당 에러는 소스코드로 해결이 가능한 오류이다. 컴파일에러는 코드 작성 시 빨간줄로 알려주기 때문에 오류의 발견이 쉽고 해결이 간단하다. - 런타임오류 : 코드 상으로 문제가 없지만 프로그램 실행 도중에 발생하는 오류로, 사용자의 실수 또는 개발..

Java 2024.07.27

[Java] 다형성(2) - 인터페이스와 추상클래스

▶ 인터페이스 - 인터페이스는 어떠한 기능을 제공할지 정의만하고 기능의 구현은 상속받는 곳에 넘기는 시스템이다. 이러한 구조는 해당 인터페이스를 상속받는 클래스에서 자신의 목적에 맞춰 인터페이스 메소드의 구현을 할 수 있다는 것이다. ● 사용법 interface + 인터페이스명 {     [ public abstract ] void 메소드명();     // public abstract 생략 가능     ... }  ● 인터페이스 특징  - 메소드의 구현이 안되어 있기 때문에 객체의 생성이 불가능하다.  - 인터페이스의 모든 메소드는 접근제한자가 public이고, 추상메소드 abstract 이다.  - 객체를 생성할 수 없기에 필드에 변수를 선언하기 위해서는 public static final로 선언하여..

Java 2024.07.25

[JAVA] 다형성(1)

▶ 다형성 - '다형성'이란 하나의 객체가 여러 가지 타입을 가질 수 있어 객체의 참조변수간에 형변환이 가능하게 해주는 것이다.다형성으로 인해 상속을 이용하여 자식 객체를 부모 클래스의 타입 하나로 다룰 수 있게 해준다.  ▶ 참조 범위 - Parent 클래스를 Child 클래스가 상속받았을 때public class Child extends Parent { ...}Child man = new Child();Parent man = new Child();→ Child 객체의 참조변수로 자신의 객체를 참조가 가능하고,→ Parent 객체의 참조변수로 Child 객체(자식 객체)의 참조도 가능하다. 왜냐하면 자식 메모리 안에 부모 메모리가 존재하기 때문이다. ( →  '업캐스팅') Child man = n..

Java 2024.07.22

[Java] 오버로딩 vs 오버라이딩

자바를 공부하다보면 '오버로딩'과 '오버라이딩'을 배우게 되는데, 오버로딩과 오버라이딩은 서로 다른 개념이지만 비슷한 이름으로 인해 헷갈리는 경우가 많다. 그래서, 해당 개념들을 정리해보고자 한다.  ▶ 오버로딩(Overloading) - 오버로딩은 메소드의 매개변수 또는 생성자를 배울 때, 공부하는 개념이다.  ● 메소드 오버로딩  - 자바 컴파일러는 메소드를 호출하면 '메소드의 이름'과 '메소드의 매개변수 정보' 두 가지로 구별하여 메소드를 호출해준다.  - 메소드의 이름은 똑같은 이름으로 중복하여 작성할 수 있다. 만약 같은 이름을 갖고 매개변수의 형태까지 똑같이 가지고 있다면 자바 컴파일러는 해당 메소드의 매개변수에 대한 정보를 확인하여 같은 이름의 메소드를 구별한다. 만약, 이름과 매개변수의 정..

Java 2024.07.18

[Java] 상속

▶ 상속 - 상속이란 기존 클래스(부모 클래스)의 재사용으로 새로운 클래스(자식클래스)에서 중복된 코드를 작성할 필요없이 재사용된 클래스에서 해당 코드를 가져와 자신의 멤버처럼 사용하는 기능이다. - 상속을 쓰는 이유는 위에서 말했듯이 클래스의 재사용을 통한 중복을 피할 수 있기 때문에 효율적이고, 공통된 기능을 사용해야 된다면 부모 클래스에서 공통된 기능을 정의하면 자식 클래스에서도 사용이 가능하기에 확장성 측면에서도 좋다. 그리고 공통된 기능에 문제가 생기을 때, 부모 클래스에서 해당 코드를 수정하면 되므로 유지보수면에서도 유리하다.  ● 상속하는 방법  - 클래스명 옆에 ['extends' + 상속받고싶은 클래스명] 을 쓴다.ex)public class Son extends Parent{}  → S..

Java 2024.07.18

[Java] 메소드(Method)

자바를 사용하면 'public static void main(String[ ] args)' 를 계속 보게 될 것이다. 일단 이것을 해석해보면▶ (public) - 어디에서나 접근 가능한     (static) - static영역에 선언된     (void) - 반환형 없는     (main) - 'main'이라는 이름의 메소드(함수)     (String[ ] args) - args라는 이름의  String배열 타입의 매개변수를 가진  즉, 어디에서나 접근 가능한 static영역에 선언된 반환형이 없고 args라는 이름의  String배열 타입의 매개변수를 가진 main이라는 이름의 메소드(함수) 라는 뜻이다.  이번에 알아볼 것은 'main'과 같은 '메소드'에 대한 것이다. 일단, main메소드는 자..

Java 2024.07.14