Java

    [C와 JAVA] JAVA는 포인터가 없다?

    C언어를 공부하다 JAVA로 넘어온 나에게는 포인터가 없는게 어색했다. C언어에서 포인터와 JAVA의 참조형 변수의 다른 점을 살펴보자 C언어 int c; int pointer = &c; *pointer = 3; 포인터를 이용해 직접 메모리 주소에 접근을 할 수 있고, 주소 안의 메모리에 직접 접근을 해서 사용할 수가 있다. 단, 임의의 메모리 값을 사용할 수 있다는 건 임베디드 환경에서는 필요하지만, 윈도우와 같은 OS환경에서 특정 메모리 주소의 어떤 값을 사용한다는 것은 시스템 폭주를 야기할 수 있다고 한다. JAVA int[] Java = new int[3]; Java는 메모리 주소라고 생각을 해야한다. Java라는 참조 변수에는 힙(heap)영역에 할당된 int형 배열을 가르키고만 있다. 여기서 ..

    [JAVA] 자바 - 자바의 특징을 이해하자

    1. 운영체제에 독립적 자바는 자바가상머신(JVM)위에서 해석이 되어 JVM이 대신 운영체제와 통신한다. 그래서 자바는 운영체제와 독립적인 반면에, 자바가상머신은 운영체제와 종속적인 관계다. 즉, 자바로 작성된 프로그램은 자바가상머신만 있다면 어디서든 실행이 된다. 2. 객체지향 언어 3. 자동 메모리 관리 c언어는 malloc으로 메모리를 할당하면 free함수로 항상 할당해제를 해줘야한다. 하지만, 자바로 작성된 프로그램이 실행되면, 가비지 컬렉터란 놈이 대신 메모리를 관리해준다. 그래서, 프로그래머가 오로지 프로그래밍에만 집중할 수 있게 해준다. 4. 멀티쓰레드를 지원 https://beingdesigner.tistory.com/2 자바(java): 멀티쓰레드(Thread)를 지원한다는 의미 먼저 쓰..

    [JAVA] 자바 - 멀티쓰레드(Thread)를 지원한다는 의미

    먼저 쓰레드를 이해하기 위해 응용프로그램>프로그램 vs 프로세스> 쓰레드 순서로 이해해보자. -> 응용프로그램 - 워드, 엑셀 등 우리가 현재 사용하는 프로그램을 의미한다. - 이 응용프로그램도 여러 개의 프로그램으로 구성되어 있다. -> 여기서 프로그램이란 - 아직 실행되지 않은 상태를 의미한다. 즉, 운영체제에 의해 메모리 공간을 할당되지 않았다는 뜻 - 반대로, 할당되어야 프로그램이 실행된다. 이 때, 실행된 상태(메모리 공간을 할당받은 상태)의 프로그램을 -> 프로세스 라고 한다. 실행x - 프로그램 실행o - 프로세스 ->그럼 이제 쓰레드란? -프로세스 내에서 실행되는 여러 흐름의 단위 -응용 프로그램에는 여러 프로세스로 구성되어 있듯이 프로세스에는 여러 쓰레드(최소 1개)로 구성되어 있다. -..