프로그래밍에서 중요하다고 할 수 있는 반복문과 조건문에 대해 학습할 것이다. 반복문 자바에서 기본 반복문으로 3가지가 존재한다, for, while , do- while 3가지의 공통점은 반복을 시킨다는 것입니다. 그런데 어째서 반복문을 3가지로 구분 지었을까요? 1. for for(int i = 0; i< 10;i++) { } for문은 초기화, 범위, 증감값을 작성할 수 있다. 여기서 한가지 이상을 생략할 수 있는데 생략하는 방법은 작성하지 않는 것이다. 그렇다면 for문은 언제 작성할까? Loops in Java | Java For Loop - Javatpoint Loops in Java | Java for loop with java while loop, java for loop, java do-w..
1.
산술 연산자산술이란것은 뭘까? 이라고 한다. 즉, +,-,*,/,%이 존재한다. 이들의 가장 큰 특징은 두 개의 변수 사이에 존재한다는 것이 특징인데 우리가 아는 사칙연산과 굉장히 유사 아니 똑같다.사용 방법은 간단하다. c = a + b;이런식으로 작성된다. 주의해야 될 점은 선언과 동시에 사칙연산을 하면 안된다. 하지만 계산 된 결과 값을 선언값으로 사용할때는 선언과 동시에 해도 상관없다.c = int a + int b; (X) int c = a + b; (O)예제에서는 +만 사용했지만 다른 연산들도 마찬가지다. 그런데 산술연산자는 변수도 아니고 객체도 아니다. 이것을 사용하러면 변수 2개가 존재해야하는데... 실제로는 어떻게 작성이 되어질까?바이너리 코드로 만들어서 확인해보자. line 4에 2가 ..
프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입은 기본값 타입으로 불립니다. 종류는 크게 정수타입, 실수타입, 불리언타입으로 나눠져있습니다. 정수형에는 byte,short,int,long,char으로 구성되어 있습니다. 어쨰서 정수형에는 종류가 저렿게 많을까요? 그전에 char형에 대해 소개하고 넘어 가겠습니다. char형은 문자코드 값으로 입력되기 때문입니다. 자바에서는 문자코드를 유니코드로 사용한다고 합니다. 메모리에 할당되는 값은 16비트라고 합니다. 유니코드는 0 ~ 65535까지 할당된다고 합니다. 어째서 자바는 유니코드를 사용하는 걸까요? d2.naver.com/helloworld/76650 결국, 다른 언어또한 지원하기 위해 이와 같은 선택을 했다고 할 수 있겠군요. 이제 ..
Java Virtual Machine의 약자로직역하자면 자바 가상 머신이라고 할 수 있다. OS와의 중재자 역할을 한다. 따라서 어떤 OS를 사용하더라도 이식성이 좋다는 장점을 가지고 있다. 따라서,재사용성이 좋다. (최근에 나온 프로그래밍 언어들은 OS 이식성이 좋게 나오는걸로 알고있다.) jvm의 역할은 크게 2가지로 구분이 되어지는데 Garbage collector과 메모리 관리기능이로 구분되어진다. 또 jvm은 스택기반의 가상머신이다. 추가적으로 arm같은 하드웨어는 레지스터기반으로 동작한다. 컴파일하는 방법 컴파일이란 바이트 코드로 만드는 것을 의미합니다. 위에서 JVM은 OS와의 중재자 역할을한다고 하였습니다. 대게 프로그래밍언어는 사람이 읽을 수 있게 설계 되어있습니다.하지만 기계인 컴퓨터는..
더보기 기존 서블릿에서는 자바 코드를 기반으로 [문자열]을 사용해 HTML과 자바스크립트로 화면을 구현했으나, JSP는 이와 반대로 HTML,CSS,자바스크립트를 기반으로 JSP요소들을 사용해 화면을 구현합니다. - 자바 웹을 다루는 기술 中
프로그래밍을 하다보면 이들의 범위에 대해 가끔 헷갈린다. 그래서 그것을 해결하고자 이렇게 작성한다. 흔히들 public과 private는 잘안다. 왜냐하면 당연시하게 명시되었기 때문이다. public은 모두다 허용이고 private는 자기자신만 허용이다. 근데 default랑 protected가 헷갈린다. 분명히 2개다 같은 결과인것 같은데... 두개의 차이점은 패키지의 위치와 상속 관계로 해결할 수 있다. 다만, 같은 패키지에서 상속 관계는 의미가 없다.(그래서 같은걸로 생각하는 것 같다.) 간단하게 코드를 작성해 봤다. public class O { static int i = 1; public static void main(String[] args) { System.out.println(i); } }..
쓰레드는 작업의 한 단위로, 주로 프로세스에서 사용된다. 프로세스는 공장이고, 쓰레드는 일꾼이라고 많은 사람들이 설명한다. 그런데! 이 설명으론느 뭔가가 부족하다. 공장인거 알겠고, 일꾼인거 알겠는데... 멀티 쓰레드는 어떻게 설명하고..., 싱글 프로세스에서 멀티를 쓰는건 어떻게 설명하지... 그래서 곰곰히 생각했다. 어떻게 하면 쓰레드를 더 잘 이해 할 수 있을까? 순간, TV와 리모콘이 떠올랐다. 여기서 TV는 프로세스고 리모콘이 쓰레드라 생각했다. 그랬더니 쓰레드가 조금씩 이해되기 시작했다. 보통은 TV와 리모콘은 한개씩 존재한다. TV가 여러 대일경우에는 프로세스가 여러개라고 생각하면 되고, 리모콘이 여러개라면 쓰레드가 여럿인, 멀티쓰레드라고 생각하면 되었다. 이제 싱글 프로세스 환경에서 쓰레드..
자바를 공부하면서 어렵다고 느끼는게 뭐냐고 물어보면 가장 먼저 제네릭을 떠올릴 것입니다. 물론 람다도 있긴하지만 람다 같은 경우는 몰라도 API를 읽는데는 그리 문제가 되지 않죠. 왜냐하면 람다가 아닌 버전도 알려주기 때문입니다. 람다를 사용하는 이유가 함수형 처럼 사용하기 위해서인데 자바는 함수형 언어가 아니기 때문이죠.. (하지만 람다도 반드시 알아야 하는 것 중 하나죠) 하지만 제네릭 같은 경우는 다릅니다. 이걸 모르면 API를 읽는데 어려움이 있죠. 근데 제네릭이라는게 쉽게 와닿지가 않습니다. 왜냐하면 이걸 굳이 써야 하는지 의문이 들때가 많기 때문이죠. 그래서 곰곰히 생각했습니다. 어떻게 하면 제네릭을 더 잘 이해할 수 있을까? 일단 제네릭에 대한 뜻을 알아 봅시다. 네 일반적이라는 뜻입니다. ..
*주의 : 이 글은 CODE라는 책을 읽고 영감을 받아 작성한 글입니다. 일반적인 프로그래밍 추상화에 대해서는 설명하지는 않습니다. 저는 프로그래밍 추상화와 다른 추상화에 대한 미묘한 차이를 이해하고자 이 글을 작성하였습니다. 이 글을 읽으면 추상화에 대한 대략적인 감을 익힐 수 있을지는 모르겠지만, 프로그래밍 추상화에 대한 이해는 어려울지도 모릅니다. 프로그래밍을 공부하다 보면 추상화라는 단어가 눈에 많이 들어옵니다. 하지만 이 단어가 쉽게 와닿지가 않습니다. 우리가 흔히 알고 있는 추상화는 다음 과 같은 그림들일 것 입니다. 그렇다면 프로그래밍에서는 어떻게 사용될까요? 흔히 우리가 프로그래밍상에서 알고있는 추상화는 구현체가 없는 메소드입니다. 그런데 위 그림과 프로그래밍에서 말하는 추상화는 전혀 다른..
프로그래밍 공부를 하다보면 얕은 복사와 깊은 복사가 나옵니다. 얕은 복사는 값만 복사하고 주소값은 복사하지 않고 값만 복사입니다. 그리고 깊은 복사는 주소값과 값 둘다 복사하는 방법입니다. 그런데 이건 알겠는데 막상 이것을 설명하려고 하면 무엇이 다른지 햇갈릴때가 많았습니다. 얕은 복사, 깊은 복사 이 두개가 있는 건 알겠는데... 뭐가 다른건지... 코드를 봐도 뭐가 다른건지... 제가 자바를 처음 공부했을때 이랬습니다. 사실 지금부터 설명하는 방법이 프로그래밍적으로 봤을때는 맞지 않을 수 있습니다. 하지만 적어도 이해가 될겁니다. 나중에 프로그래밍에는 뭐가 더 추가 되는지도 설명할 예정입니다. 검정 검정 위 두개의 글자를 읽어 보세요. 두개다 검정이라는 글자를 가지고 있습니다. 이제 두개의 단어는 각..