성장일기

내가 보려고 정리하는 공부기록

언어 7

[JAVA] 자바의 직렬화, 역직렬화 (Serializable 인터페이스)

이번 게시글에서는 자바의 직렬화와 역직렬화에 대해 다루어보려고 한다. 평소에 코딩테스트를 위한 자바의 라이브러리나 문법에 대해서만 야매로 공부했었는데, 부트캠프에서 직렬화라는 개념을 접하게 되어서 이참에 정리할 생각이다. 자바의 직렬화 ? 역직렬화 ?자바 직렬화란 자바 시스템 내부의 객체나 데이터를 외부의 자바시스템에서도 사용할 수 있게 바이트 형태로 변환하는 기술을 의미한다.반대로 자바 역직렬화는 바이트로 변환된 데이터를 다시 객체로 변환하는 기술이다. 참고로 해당 객체는 JVM의 메모리 (힙이나 스택)에 상주되어있다고 한다.  자바 직렬화는 어떻게 쓰는데 ?자바 직렬화를 사용하려면, 직렬화를 원하는 객체가 Serializable 인터페이스를 상속받도록 해주어야 한다. java.io.Serializab..

언어/자바 2024.06.19

[JAVA] 예외처리 (Exception) _ CheckedException, UnCheckedException

코드를 작성하고 실행하다보면 수많은 에러가 발생한다. 나는 여지껏 '에러' 라고 뭉뚱그려 이야기했으나, 이들을 구분한다고 한다. 에러의 종류와 어떻게 처리해야 하는지에 대해 작성하려고 한다.  ✅ 에러의 종류에러에는 다음과 같은 종류가 있다.컴파일 에러소스코드 상의 문법에러로 소스코드를 수정해서 해결한다런타임 에러프로그램 실행중에 발생하는 에러로 사용자로부터 잘못된 값을 입력받거나 계산식의 오류 등으로 발생한다시스템 에러하드웨어의 오작동으로 발생하는 에러라서 코드를 수정해 해결이 불가능하다. 이들 중 컴파일에러와 런타임에러는 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 발생하는 프로그램 오류이므로 이를 예외(Exception)이라고 부른다. 예외에는 일반예외 (Checked Exception) 과..

언어/자바 2024.06.14

[JAVA] 추상 클래스와 추상 메소드, 인터페이스와의 차이까지

자바 공부를 하다보면 한번쯤은 보게 되는 추상클래스와 인터페이스에 대해 정리하려고 한다. 원래는 하지 않을 생각이었는데, 자꾸 추상클래스와 인터페이스의 차이가 헷갈려서 !!!! 화가 나서 정리한다....... 😊  일단 각각의 개념들 먼저 정리해보자. ✅ 추상클래스우리는 실체 클래스를 이용해 객체를 생성한다. 이러한 클래스들의 공통적인 속성을 뽑아내어 선언한 클래스를 추상클래스라고 한다.  상속할 때 extends를 사용하고, 선언 시 abstract class 라고 쓴다. 1. 특징추상클래스는 다음과 같은 특징을 갖는다.객체를 생성할 수 없다실체 클래스에서 추상클래스를 상속받아 객체를 생성한다모든 특성을 물려받게 된다. (필드. 메소드 등)추상 메소드를 단 한개라도 갖게 되면 추상 클래스가 된다상속받..

언어/자바 2024.06.14

[JAVA] 클래스 상속

자바에서 구현되어있는 라이브러리를 보면 extends 라는 글자와 함께 클래스가 마치 기차처럼 줄줄이 연결되어있는 모습을 볼 수 있다. 이것은 상속을 할 때 쓰는 명령어이다! 그렇다면 상속은 뭐고, 왜 상속을 하는걸까 ?  ✅ 상속 ? 왜 하는 건데 ?우선 상속이란, 객체지향 프로그래밍에서 부모 클래스의 멤버 (필드, 메소드) 를 자식 클래스에게 물려주는 것을 의미한다. 여기서 부모클래스를 슈퍼클래스, 자식클래스를 서브클래스라고 부르기도 한다.  상속을 하는 이유는 코드를 재사용 하기 위해서이다. 잘 개발된 클래스를 상속하여, 이미 구현되어있는 기능을 가져와 쓸 수 있어 효율적으로 개발시간을 단축시킬 수도 있다. 상속은 아래 코드처럼 extends 를 사용해주면 된다. // 부모 클래스public cla..

언어/자바 2024.06.13

[JAVA] 접근제한자, static과 final

자바로 클래스나 함수, 변수를 생성할 때 파이썬과 달리 이것저것 붙는 걸 알 수 있다.public class Test { static int A = 100; public static void main(String[] args) { System.out.println(A); }} 이런식으로 public, static 등 알 수 없는 것들이 써있는데, 오늘은 이것들을 정리해보려고 한다.  1. 접근제한자접근제한자는 이름에서도 알 수 있듯이 멤버의 접근을 제한하기 위해 사용한다. 접근제한자는 총 4가지가 있다.public : 외부 클래스에서도 자유롭게 사용할 수 있게 함protected : 같은 패키지 혹은 자식클래스 (상속하고있는 클래스)에서 사용할 수 있음default : 같은 패키지에..

언어/자바 2024.06.12

[JAVA] 객체와 클래스

자바가 객체지향 언어라는건 자바에 관심이 있는 사람이라면 알고 있을 사실이다. 그렇다면 객체는 무엇일까 ? 1. 객체객체는 클래스에서 정의된 것을 기반으로 메모리에 할당된 것을 의미한다. 객체는 속성과 행위를 가지고, 우리는 객체의 속성을 필드, 행위를 메소드라고 부른다. 클래스를 통해 생성된 객체를 클래스의 인스턴스라고 한다. 여기서 인스턴스는 객체와 비슷한 의미를 가지는데, 객체는 모든 인스턴스를 포괄하고 인스턴스는 어떤 객체가 어느 클래스에서 생성된 건지 강조한다. 정리하면, 클래스를 new를 이용해 생성하여 메모리에 할당된 것을 객체라고 한다는 것이다.빵 틀이 클래스라면 그 틀로 구운 빵이 인스턴스인 셈이다.  객체 간의 관계객체는 개별로 사용될 수 있으나, 대부분 다른 객체와 관계를 맺고 있다...

언어/자바 2024.06.11

[JAVA] JAVA에 대하여 (JVM, javac)

자바 수업을 듣는 김에 자바에 관해 정리해두려고 한다. 앞으로 사용할 언어인 만큼 기본적인 것부터 꼼꼼히 기록하고싶다. 자바 (JAVA)자바는 1995년 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 연구원들에 의해 개발한 개발된 객체지향 프로그래밍 언어로 전 세계적으로 다양한 분야에서 사용된다. 특징자바의 큰 특징들은 다음과 같다.1995년 개발된 객체지향 프로그래밍 (Object-Oriented Programming, OOP) 언어운영체제에 독립적소스 수정 안해도 윈도우, 리눅스 등 모든 운영체제에서 실행 가능개발자가 메모리 관리를 직접 하지 않아도 됨 가비지 컬렉터로 알아서 관리됨완전한 기계어가 아니라 바이트코드 파일(.class)로 구성된다.이를 사용하기 위해서는 자바가상기계 (..

언어/자바 2024.06.11
728x90