Memo 49

객체지향 프로그래밍(OOP)

객체지향 프로그래밍(OOP)이란? 객체들로 이루어진 프로그램을 만드는 것입니다. 여기서 객체란 '실제로 존재한다'라는 사전적 의미를 가진 단어이며, 눈에보이는 사물따위의 유형적인 것 뿐만 아니라 논리나 개념과 같은 무형적인 것도 포함합니다. 이러한 객체를 각각의 클래스라는 코드로 구현하고, 이를 부품삼아 하나로 완성된 기계, 즉 프로그램을 만드는 것이 자바에서의 객체지향 프로그래밍을 의미합니다. //클래스와 객체에 대한 설명 위의 설명처럼 객체지향 프로그래밍은 객체라는 유형, 무형을 포함하는 개념을 컴퓨터에 반영할 수 있습니다. 예를 들어, 케이크를 만드는 상황을 가정하고 컴퓨터에 반영해보겠습니다. 우선 케이크를 만드는 것에 필요한 재료들을 변수로 지정합니다. 그리고 '무엇을 만든다'라는 행위를 클래스로..

Memo/확장 메모 2022.10.05

자바의 데이터 타입 : 기본형과 참조형

자바의 기본형과 참조형의 차이 기본형(Primitive Type)은 리터럴을 할당할 수 있는 형을 의미합니다. 참조형(Reference Type)은 기본형을 제외한 모든 형을 의미하며, 실제 저장된 값이 아닌 값이 저장된 메모리 공간의 주소값을 할당하는 형입니다. 자료형(Data Type) : 변수를 담을 공간을 의미합니다. 기본형(Primitive Type) : 리터럴을 할당할 수 있는 형을 의미합니다. /* 리터럴 : 문자 그대로의 의미를 지닌 값으로, 예를 들면, 1, 2, 3은 정수이기에 정수를 의미합니다. 그리고 0.1, 0.2, 0.3은 소수, 'a', 'b', 'c'는 문자, "hello"는 문자열이기에 문자열을 의미합니다. 이러한 값을 리터럴이라고 합니다. */ >기본형 종류 : 각각의 T..

Memo/확장 메모 2022.10.04

MSB, Most Significant Bit

MSB, Most Significant Bit 데이터의 가장 왼쪽에 위치한 비트를 뜻하며, 부호를 결정짓는 역할을 한다. MSB=0 이면 양수의 데이터를 의미하고, MSB=1 이면 음수를 의미한다. 하지만 음수의 데이터는 해석 방법이 다르므로 주의하자. 음의 정수 표현 방식 음의 정수는 양의 정수에서 MSB만 1로 바꾼 것이 아니다. 만약 MSB만 1로 바꾼 것이 음수이면, 연산 시 문제가 생긴다. 때문에 음의 정수는 양의 정수와 더했을 때 0이 되는 수라고 생각하는게 좋다. 결과적으로 음의 정수 표현은 양의 정수의 이진수 표현에 2의 보수를 취한 결과로 한다. 보수 변환 방법 1. 각 자리의 보수 변환을 한다. 2. 마지막 자리에 1을 더한다.

Memo/짧은 메모 2022.10.04

정규표현식

정규표현식 >의미 : 문자열에서 특정한 규칙에 따른 문자열 집합을 표현하기 위해 사용되는 형식 언어 : 문자열 관리를 간편하게 하는 방법 중 하나 >사용 1. 문자열을 할당받을 변수 선언(String str) 2. 정규표현식을 할당받을 변수 선언(String regExp) 3. 문자열을 확인할 특정 조건을 정규 표현식으로 표현한 데이터를 변수에 할당. 4. Pattern.matches(regExp, str) 메서드를 통해 boolean 값으로 조건에 부합하는지 확인할 수 있음. //아래 예시에서 확인할 수 있지만, 코드의 길이가 확연히 줄고 간단하게 표현할 수 있기 때문에 잘 알아두면 알고리즘 문제 해결에도 도움이 될 수 있다. 예시 상황 : 문자열 str 이 주어질 때, str의 길이가 5 또는 7이면..

Memo/짧은 메모 2022.10.03

String 배열의 초기값과 가변 배열(NullPointerException)

>초기값 : String 배열 생성 시, 값을 지정해주지 않으면 모든 값은 null을 할당한다. String[][] output1 = new String[3][]; System.out.printf("output1 : %s%n", Arrays.toString(output1)); //Array.toString(arr)은 참조변수인 배열을 주소값이 아닌 진짜값을 나타내기 위함. String[][] output2 = new String[3][2]; System.out.printf("output2 : %s%n", Arrays.deepToString(output2)); //Arrays.deepToString(arr)은 이중 배열을 주소값이 아닌 진짜값을 나타내기 위함. /* output1 : [null, null,..

Memo/짧은 메모 2022.09.27

재귀 함수

재귀 함수 >의미 : 자기 자신을 호출하는 함수 >사용 : 문제를 쪼개면, 같은 문제지만 작은 크기의 문제로 될 때 주로 사용 >장점 : 가독성이 좋아짐(단순한 코드로 보이게 할 수 있음) : 변수의 갯수를 줄일 수 있음 >단점 : 코드는 짧지만 표현이 직관적이지 못해 오히려 보기 힘들 가능성이 높음. : 메모리 사용량이 굉장히 높음(Stack Overflow) >특징 : 함수의 입력값(매개변수), 리턴값, 리턴 후 돌아갈 위치 등이 Stack 메모리에 저장됨. : 단점 가득한, 굳이 안써도 되는 함수 : 문제 풀이에 사용되는 경우가 제일 일반적임. 꼬리 재귀 >의미 : 재귀를 그나마 안전하게 사용할 수 있는 방법 중 하나 : 재귀 호출이 끝나면 다른 작업 없이 결과만 반환하도록 하는 방법 >특징 : 함..

Memo/짧은 메모 2022.09.24