전체 글
-
객체, 클래스, 인스턴스의 개념과 분류Java 2023. 12. 29. 20:44
객체, 클래스, 인스턴스 이 세가지는 자바를 이해하며 가장 큰 부분을 차지하는 것들이고, 또한 가장 혼동되기 쉬운 개념들이라 생각한다. 이번 복습의 기회를 살려, 이 세가지의 개념을 구체적으로 정리해 보려고 한다. 먼저 이 셋의 사전적 의미를 알아보자. 객체 : 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미한다. 클래스 : 프로그래밍 언어에서 사용되는 부류(class) 인스턴스 : 일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 역시 내 머리로는 이해가 조금도 안간다. 고민을 시작하며 개인적으로 조사해본 내용을 토대로 하나씩 정의를 내려보자. 객체 : 물체 혹은 행위를 논할 때 '떠올리는' 추상적인 개념. 개발자라면 익히 들었을 자동차로 비유를 시작해보자. 우리가 방 안에서 친구와 자..
-
기본형 변수와 참조형 변수Java/Java 문법 종합반 강의 정리 2023. 12. 29. 12:19
기본형 변수 : char, byte, short, int, long, float, double 참조형 변수 : string, ArrayList 등... 그 외 클래스 변수 참조형 변수 = 주소형 변수 - 다른 기본형 변수가 실제 값을 저장하는 저장공간 이라면, 참조형 변수는 실제 값이 아닌 원본값의 주소값을 저장합니다. - 다시말해 참조형 변수는 주소값을 저장하는 주소형 변수라고 불러도 됩니다. 저장 관점에서 차이점 - 기본형 변수 : 원본값이 Stack 영역에 있습니다. - 참조형 변수 : 원본값이 Heap 영역에 있습니다. - Stack 영역에는 따로 저장 해둔 원본값의 Heap 영역주소를 저장합니다. Stack 영역 vs Heap 영역 - Stack 의 경우에는 정적으로 할당된 메모리 영역입니다. ..
-
JVMJava/Java 문법 종합반 강의 정리 2023. 12. 29. 10:55
JVM - Java Virtual Machine 의 약자로, "자바 가상 머신" 이라는 뜻을 가지고 있다 - 다시 말해서, 여러가지의 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어 주는 것을 의미한다 컴파일러 : 운영체제가 읽을 수 있게 Java.java 파일을 Java.class(바이트 코드)로 변환하는 번역기 (Java.java -> Java.class(바이트 코드) 로 변환) 인터프리터 : Java.class 코드 해석기 - 운영체제가 읽은 바이트 코드를 기기가 실행하 수 있는 기계어로 번역 JIT 컴파일러 : 빠른 Java.class 코드 해석기 - 인터프리터의 효율을 높여주는 서포터 해석기 메모리 영역 : Java 데이터를 저장하는 영역 - 운영체제로 부터 JVM이 할당받..
-
자바의 역사와 특징Java/Java 문법 종합반 강의 정리 2023. 12. 29. 10:54
프로그래밍 언어란 컴퓨터와 사람이 소통하기 위한 언어이다 첫 등장은 1960년 대에 등장한 A 언어 라는 것이다 A 언어 - 첫 개발언어라는 의미에서 A Programming Language 의 약자 - 발표년대 : 1960 - 핵심기능 : 입/출력, 문맥 - 프로그램을 만들기 위해 기본적으로 필요한 입/출력, 문맥 기능만 구현 B 언어 - Bell 사에서 개발하여 B 언어 - 발표년대 : 1960 - 핵심기능 : A언어 기능 + 기계식 데이터 타입, 연산기능, 메서드 C 언어 - B 언어를 업그레이드 시켰다는 의미로 C 언어라는 이름을 가졌다 - 발표년대 : 1970 - 핵심기능 : B언어 기능 + 자료형 데이터 타입, 자료구조 Java - 어디서나 마시는 커피처럼 어디서나 동작 가능한, 자바 커피에서..
-
[백준] 1715 카드 정렬하기 (Java)알고리즘/백준 2023. 12. 28. 12:58
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net n개의 숫자가 있을 때, 두 수의 합을 반복하여 최종적으로 만들어지는 숫자가 최소인 경우를 만드는 문제이다. 그 조건을 만족하려면 항상 최솟값끼리 더해야 한다. 수가 합쳐질 때 마다 남아있는 다른 숫자들과 다시 정렬이 되어야 하는데, 반복적으로 sort를 사용하는 것은 시간복잡도 상으로 낭비가 심하다. 그러니 들어오는 값을 자동으로 정렬하는 PriorityQueue 를 사용하자. i..
-
[팀 프로젝트] 팀 소개 사이트 회고개발 일지 2023. 12. 26. 19:25
https://tangpoo.tistory.com/113 [팀 프로젝트] 동물 소개 사이트 회고 현재 참여 중인 내일배움캠프의 사전 캠프에서 처음으로 팀 프로젝트를 경험하게 됐다. 주제 무언가를 소개하는 사이트를 만드는 과제였는데, 우리팀은 고민 끝에 각자가 좋아하는 동물을 소개 tangpoo.tistory.com - 이전 프로젝트 주제 이전에 진행한 프로젝트와 거의 동일하게, 이번엔 자유 주제가 아닌 팀을 소개하는 페이지를 만드는 과제이다. 첫 회의 + 아이스브레이킹 운 좋게도 나를 제외한 총 4명 중에 2명이 이전 프로젝트에서 함께한 조원이었다. 덕분에 아이스브레이킹이 좀 더 수월할 거라 생각했는데... 인터넷 연결 문제, 체력적인 문제 등으로 인해 이번에도 첫 회의가 수월하지 않았다. (이전 프로젝..
-
코딩 컨벤션 (Coding Conventions)개발 지식 2023. 12. 26. 10:48
개발자들 사이에서 정하는 규약중에 하나이다. 코드를 통일 된 방식으로 작성하여 시각적으로 이해하기 쉽도록 만든다. 아래는 대표적인 코딩 컨벤션의 5가지 예시이다. PascalCase (파스칼 케이스) : 첫글자와 이어지는 단어의 첫글자를 대문자로 표기하는 방법 camelCase (카멜 케이스) : 첫글자는 소문자, 이어지는 단어의 첫글자는 대문자로 표기하는 방법 snake_case (스네이크 케이스) : 모든 단어를 소문자, 이어지는 단어는 _(언더바) 으로 구분하는 방법 kebab-case (케밥 케이스) : 모든 단어를 소문자, 이어지는단어는 -(대시) 으로 구분하는 방법 UPPER_CASE (어퍼 케이스) : 모든 단어를 대문자, 이어지는 단어는 _(언더바) 으로 구분하는 방법 보통 프로젝트 시작시..