본문 바로가기

JAVA

(5)
알고리즘에 사용되는 Scanner, InputStream, BufferedReader? 코틀린으로 백준 문제를 풀이하는 과정에서 Scanner와 InputStream 그리고 BufferReader에 대한 궁금증이 생겼다. 어떤 원리로 사용되어지는 것일까? (참고자료는 하단에 링크를 남겨두었습니다.) 본 글을 위해 사전에 학습한 내용입니다. 컴퓨터는 문자열을 어떻게 이해하지? Encoding, Decoding, Character Set! Java에서는 String을 처리할 때 메모리에서 UTF-16 인코딩으로 문자열을 저장한다. 송수신에서 직렬화가 필요할 경우 변형된 UTF-8(modified UTF-8)을 사용하여 문자열을 입/출력할 때 사용자가 지정한 인코딩 값 또는 운영체제의 기본 인코딩 값으로 문자열을 인코딩한다고 한다. 여기서 잠깐, 송수신에서 직렬화란 무엇일까? 객체 직렬화라고도 ..
컴퓨터는 문자열을 어떻게 이해하지? Encoding, Decoding, Character Set! Java와 Kotlin에서 문자열을 입력받는 원리를 알아보기 전, 먼저 Encoding, Decoding, Character Set에 대해 알아보았습니다. 인코딩(encoding)은 부호화로, 어떤 정보를 정해진 규칙에 따라 변환하는 것을 의미한다. 컴퓨터에서는 문자들이 입력될 경우 컴퓨터가 이해할 수 있는 번호(0, 1)로 변환되어지며 이러한 부호 체계 즉, 사람이 사용하는 문자를 숫자로 매칭 시킨 것을 문자 집합(Character Set)이라 한다. 이러한 문자 집합에는 ASCII, 유니코드(Unicode) 등이 있다. 디코딩(decoding)은 인코딩을 통해 부호화된 것을 다시 문자로 변환하는 것을 의미한다. ASCII 코드는 American Standard Code for Information I..
자바 프로젝트를 생성하면 구성되는 폴더와 파일🙋‍♂️ 자바 통합 개발 환경인 Intelli J를 통해 자바의 프로젝트를 생성하면 구성되는 폴더와 파일이 있다. 근데 이게 뭐지? 2편, 자바가 작동하는 과정 그리고 JVM? 자바를 배우겠다고 신나게 Intelli J도 설치하고 프로젝트도 생성해봤다. 그런데 VS Code에서 파이썬 코드를 구현할 때와는 차원이 달랐다. .idea 폴더에서부터 out, src 폴더 등등 궁금한 것은 못참는 성격이라 바로 알아보았다. .idea 폴더 Intelli J를 사용하면 프로젝트 생성과 동시에 IDE의 옵션이 저장되는데, 이를 저장한 곳이 바로 .idea 폴더이다. eclipce의 경우 .workspace 폴더와 같은 기능을 한다고 한다. 폴더 내부에 있는 파일들은 IDE의 설정에 따라 설정 값이 달라 git hub 등 코..
자바가 작동하는 과정 그리고 JVM? 자바가 컴파일 언어(+인터프리터) 라는 것을 알았으니, 어떻게 작동 하는지 알아보자😎 1편, 자바가 컴파일 언어? 아니면 인터프리터?🤦‍♂️ 파이썬을 할 땐 VS Code로 .py 파일만 작성하면 됐는데 자바는 프로젝트 생성하는 것부터 뭔가 이것저것 많았다. 알아보는 것을 미루고 미루다 더 이상 미루면 모래 위에 쌓은 성처럼 깊이 없이 개발하게 될 것 같아 이번 기회에 알아보았다. 자바의 실행 과정은 다음과 같다. 1. 프로젝트를 생성한 뒤, 자바 소스 코드 파일(.java)을 작성한다. 2. 소스 파일을 자바 컴파일러(javac)를 통해 바이트 코드 파일(.class)로 컴파일한다. 3. 컴파일된 목적 파일(바이트 코드)을 JVM의 클래스 로더를 통해 JVM에 올린다. 4. JVM에 있는 목적 파일들을..
자바가 컴파일 언어? 아니면 인터프리터?🤦‍♂️ 파이썬을 공부하다가 백엔드 개발자가 되어야겠다고 결심하고 자바를 공부하기 시작했다. 앞으로 시리즈물로 작성하면서, 자바를 공부하면서 생겼던 의문을 풀어갈 예정이다✍✍ 자바는 컴파일 언어라는데, 컴파일 언어가 뭐야? 컴파일 언어는 컴파일러에 의해서 구현되는 언어를 의미한다. 컴파일러(compiler)란 컴파일러를 수행하는 프로그램인데, C 언어에서처럼 프로그램 소스 코드를 기계어로 번역하는 것처럼 하나의 언어를 다른 언어 또는 형태로 변환하고 대개의 경우에는 고수준 언어를 기계어로 번역하는 기능을 한다. 그렇다면 컴파일러가 왜 필요한거지? 초기에는 프로그램을 만들기 위해 컴퓨터에서 바로 돌아가는 기계어를 통해 프로그래밍을 했다고 한다. 하지만 이런 과정은 개발자에게 엄청난 시련을 주었을 것이다. 생산성을 ..