본문 바로가기

Java

[C++ with Java] 형변환에 대해서 알아보자. C++ Prog. with Java C++언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C++ 을 공부하고자 하는 분들에게 도움이 되길 바랍니다. ** 데이터의 손실 ** 우선, 자바에서의 형변환에 대해서 조금 이야기 해봅시다. 자바에서는 형변환은 컴파일러가 해주는 자동 형변환과 개발자가 해주는 명시적 형변환, 이 두가지가 존재합니다. 하지만 자동 형변환의 경우에는 데이터가 손실될 가능성이 있기 때문에, 컴파일러가 오류를 일으킵니다. 데이터 손실을 보여드리기 위해 다음의 예를 보시겠습니다. * float -> int 형으로의 자동형변환 float a = 10.12f; int b = 0; // 1. a를 b.. 더보기
[C언어 with Java] malloc, calloc & free, 힙 메모리 할당과 해제! C Prog. with Java C언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C언어를 공부하고자 하는 분들에게 도움이 되길 바랍니다. 자바에서는 함수나 지역변수, 매개변수의 경우, 스택 메모리 영역에 할당이 되구요. 객체는 생성과 동시에 힙 메모리 영역에 할당이 됩니다. 스택의 경우, 메모리 구조를 보면 호출된 순서대로 쌓이고, 마지막에 쌓이것이 먼저 제거되는 특성을 가지고 있구요. 그래서, 이곳에 존재하는 지역변수나, 매개변수, 그리고 함수의 경우는 제거됨과 동시에 메모리 공간에서 없어집니다. 하지만 힙 메모리의 경우는, 객체가 생성될 때 주로 이용이 되는데, 이곳에 위치하는 경우는 프로그램이 종료가.. 더보기
[C언어 with Java] typedef, 타입에 새로운 이름을 부여하자. C Prog. with Java C언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C언어를 공부하고자 하는 분들에게 도움이 되길 바랍니다. C언어에서는 새로운 타입의 선언이 가능합니다. 이는 완전히 새로운 자료형(Type)의 선언이 아니라 기존에 있는 자료형에 새로운 이름을 부여하는 겁니다. 키워드 typedef을 사용한 새로운 이름의 부여는 다음과 같이 선언합니다. typedef 자료타입 새로운이름; 이때, 자료타입에는 둘 이상의 식별자로 이루어진 타입도 가능한데요, 이를테면, unsigned 키워드나 const 키워드가 붙은 자료 타입이 있겠습니다. 어떤 방식으로 쓸 수 있는지 한번 보도록 할게요. ty.. 더보기
[C언어 with Java] 배열과 포인터 C Prog. with Java C언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C언어를 공부하고자 하는 분들에게 도움이 되길 바랍니다. 포인트라는 것을 알았으니, 포인트를 이용해서 배열을 조작해보록 합시다. 우선 소스를 보고 시작할게요. 위의 소스는 int형과 double 타입의 배열을 선언한뒤, 그 각각의 요소에 포인터를 배정했습니다. 그리고 포인터를 찍어서, 배열 요소 각각의 주소를 찍어 보았더니, 위의 색칠한 부분처럼 int형은 4씩 주소가 늘어난 것이 확인되었고, double형은 8씩 늘어난 것을 확인할 수 있었습니다. 이 부분을 미루어 볼때, 배열의 각 요소의 포인터 값은 선언된 배열의 형의 사.. 더보기
[C언어 with Java] 간단히 포인터에 대해서 알아봅시다. C Prog. with Java C언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C언어를 공부하고자 하는 분들에게 도움이 되길 바랍니다. 자바에서는 포인터라는 개념이 없습니다. 포인터란 메모리에 직접적으로 접근을 해서, 메모리를 조작가능하게 하는 것인데, 포인터를 잘못 만지게 되면, 큰일(?) 납니다. 메모리 공간에는 운영체제가 사용하는 메모리 공간이 있는데, 혹여 사용자가 이 공간을 침범하게 되면, 운영체제에 손상을 일으킬 수도 있게 됩니다. 이를 방지하기 위해서 자바에서는 포인터라는 개념을 개발 당시에 배제한것으로 알고 있습니다. 때문에, 보다 주의깊은 사용법이 필요합니다. ** 물론 최근에 운영체제는.. 더보기
[C언어 with Java] 배열에 대해서 알아보자. C Prog. with Java C언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C언어를 공부하고자 하는 분들에게 도움이 되길 바랍니다. 우선, 자바를 보도록 할게요. 자바에서는 배열 선언을 다음과 같이 두가지 방식으로 나타낼 수 있습니다. 1. 타입 변수명[] 2. 타입[] 변수명 여기서 1번의 경우는 C언어 방식으로, C언어 사용자를 배려하기 위한 방식으로 생각됩니다. 이클립스를 쓰게 되면 다음과 같이 main 메소드를 만드는데요. public class Test{ public static void main(String[] args){ 바디 } } 경우에 따라서는, 레퍼런스나 강의자의 스타일에 따라, .. 더보기
[C언어 with Java] 메소드의 선언 C Prog. with Java C언어를 다루고 있지만, 다른 프로그래밍 언어인 자바와 비교하면서 내용을 구성하고 합니다. 본 글은, 자바를 먼저 어느정도 알고 계시고, 저와 같이 C언어를 공부하고자 하는 분들에게 도움이 되길 바랍니다. 첫번째, 메소드의 선언부 입니다. JAVA는 다음과 같은 형태로 기본 메소드가 정의 됩니다. public void 메소드명(매개변수){ → 변경자 반환타입 메소드명(매개변수) 바디 } C언어에서는 JAVA와는 다르게 다음과 같은 형태를 띕니다. int 메소드명(매개변수){ → 반환타입 메소드명(매개변수) 바디} 명시하지는 않았지만, return 키워드도 동일하게 사용됩니다. 다른점을 꼽는다면 변경자(modifier) 사용여부가 있겠군요. 하지만 중요하게, 알아야 할것이 .. 더보기
[자바] 'File' 클래스, 파일의 다양한 정보를 확인하자! File 클래스 사실, 자바를 하다보면 이상하게 'java.io'패키지에 대한 막연한 두려움(?)이 있었는데요. 왠지 봐도봐도 머리에 안들어갔었다는.. ㅎㅎ 각설하고^^, 이번글에서는 'java.io' 패키지에 속하는 'File' 클래스에 대해서 알아볼까 합니다. 우선, 'File' 클래스는 다음과 같은 역할을 한다고 볼 수 있겠습니다. 파일에 대해서 직접 읽고 쓰는 입·출력 기능이 아닌, 파일과 관련된 기능을 다음과 같이 제공합니다. 1. 빈 파일 및 디렉토리의 생성 2. 파일과 폴더의 삭제 3. 파일 이름의 확인 4. 파일 이름의 변경 5. 파일의 경로 확인 6. 파일의 접근 권한(실행, 쓰기, 읽기) 확인 및 설정 등등 다음에서 생성자와 메소드를 확인하실 수 있습니다. 출저 : http://xrat.. 더보기
[자바] 'assert', 검증을 해보자! assert 이번 글에서 알아볼 것은, assert 문 입니다. assert문은 다음과 같이 사용할 수 있습니다. assert 조건문 ; assert 조건문 : "메시지"; assert 문의 조건문은 'true' 또는 'false' 값으로 대변되는 boolean 타입을 반환할 수 있는 조건문이나 수식이 와야 합니다. 특히, 해당 파일을 컴파일을 할 시에 assert 문의 조건문이 'false'로 반환되면, 다음과 같이 에러 메시지를 확인 할 수 있습니다. 여기서, 알아 두어야 할 것은 assert 문을 활성화하기 위해서는 class 파일을 읽어들일 때, "-ea" 옵션을 써야 합니다. 위의 옵션을 써 주지 않으면, assert 문이 비활성화 되는데요, 콘솔창에 java라고 입력시에 다음과 같은 옵션을 확.. 더보기
[HTML] 버튼(button)을 만들어서 사용해 보자! JSP(Java Server Page) FORM 태그를 이용해서 페이지를 작성하다 보면 'INPUT' 타입이 'SUBMIT'이거나 'RESET' 인 것만 사용해봤을텐데요, 기존의 폼(FROM)태그를 이용한 방법에는 기능이 한정되어 있었기 때문에, 이런 생각을 다들 해보셨을 겁니다. '그냥 버튼에 자유롭게 기능을 넣어서 사용할 수 없을까?' 당연!! 존재합니다. 그것은 'INPUT'타입이 'BUTTON'인 것 인데요. 다음과 같이 작성 가능합니다. 참고로, 버튼을 만드는 방법은 태그를 제외한 몇가지 방법이 존재하는데요. 1. 태그의 의 타입으로 지정합니다. 2. 태그로 만듭니다.(1번과 유사합니다.) - 여기서 다루지 않습니다. 3. 이미지나 플래시 등등을 이용해서 버튼처럼 사용합니다. - 여기서 다루지 .. 더보기