프로그래밍 언어/Java

    Java 자바의 메모리 구조 (stack , heap , static)

    Java 자바의 메모리 구조 (stack , heap , static)

    자바를 사용함에 있어서 기본적인 메모리 구조 및 특징을 알아야한다. 처음 프로그램을 실행시키면 운영체제가 프로그램을 구동하기 위해서 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당하여 준다. 이러한 메모리는 사용할 수 있는 공간이 한정되어 있다. 이러한 것을 어떻게 관리하느냐에 따라서 프로그램의 성능(속도)가 정해진다. 따라서 성능이 좋은 프로그램이란 메모리 관리가 수월한 프로그램을 말한다. 그렇기 때문에 우리는 메모리를 효율적으로 사용하기 위해서 메모리의 구성과 특징에 대해서 정확하게 이해해야한다. 메모리는 크게 stack(스택) , heap(힙) , static(스태틱) 영역 3가지 영역으로 구분된다. static 영역은 method영역이라고도 한다. ---------추가 작성예정

    Java 자바의 Static

    Java 자바의 Static

    Static 1. Static 정리 Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 이를 정확하게 이해하기 위해서는 메모리 영역에 대한 이해가 필요하다. 일반적으로 우리가 만든 Class는 Static 영역에 생성이 된다. 그리고 new 연산자를 통해 생성한 객체는 Heap 영역에 생성이 된다. 객체의 생성시에 할당이된 Heap 영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받는다. 하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점이 있지만, Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메..

    Java 자바의 배열 정렬(Sorting)

    Java 자바의 배열 정렬(Sorting)

    배열 정렬 int 배열 정렬 - 오름차순 , 내림차순 Array.sort()에 인자로 배열을 전달하여 주면 인자로 전달된 배열이 오름차순으로 정렬해준다. sort() 함수 내부에서 변수 arr의 순서를 변경해주기 때문에 따로 arr을 할당해 줄 필요도 없다 import java.util.Arrays; class Main { public static void main(String[] args) { int array[] = {88, 50, 38, 100, 90, 100, 99, 65}; System.out.println("정렬전 "+Arrays.toString(array)); Arrays.sort(array); System.out.print("정렬후 "+Arrays.toString(array)); } } 여..

    Java 자바의 getter, setter

    Java 자바의 getter, setter

    getter , setter 정의 부모 클래스의 멤버 변수는 private로 선언하는 것이 좋다. 왜그럴까? 캡슐화와 자료보호에 대한 목적으로 해당 클래스의 내부에서만 사용할 수 있도록 하기 위함이다. 하나의 프로젝트를 진행할 때 많은 사람들과 협업을 통해 프로젝트를 수행하므로 해당 자료를 보호 할 수 있도록 private 멤버 변수를 사용하는 것이 좋다. 이러한 부모클래스의 private 멤버 변수에 값을 접근 할때 getter와 setter가 사용된다. 한가지 예시를 들면 이해하기가 쉽다. 코로나로 인해 A군이 병원에 격리 되었다고 할때 A군의 어머니가 A군에게 물건을 전달해주고 싶다고 한다면, A군 어머니는 A군이 입원해있는 병원에 직접 물건을 전달해줄수 없다. 그래서 그 사이에 간호사를 통해 A군..

    Java 자바의 Class

    Java 자바의 Class

    Class Class 란? 클래스는 객체(또는 인스턴스)를 생성하는 하나의 공장(틀, 프레임, 판형)이라고 할 수 있다. 하나의 공장을 class라고 생각한다면 그 공장을 통해 생성하는 것들을 객체(또는 인스턴스)라고 생각할 수 있다. 내가 만들고자 하는 어떠한 것을 클래스로 만들 수 있다. 만들고자하는 객체애 대한 특성과 동작에 대해서 고민하여 클래스를 만들 면 된다. 그래서 우리는 이렇게 정의한다. 객체의 특징 -> 속성(attribute) 객체의 동작 -> 메서드(method) Class가 나온이유는? 클래스 없이도 객체의 특징(속성)들은 변수로 정의할 수 있을 것이고, 동작은 함수로 정의할 수 있다. 하지만 프로그램의 규모가 커지고 여러 사람이 협업을 하는 과정에서 좀 더 쳬계적이고 분업화된 시스..

    Java 자바의 String, StringBuffer, StringBuilder

    Java 자바의 String, StringBuffer, StringBuilder

    String, StringBuffer, StringBuilder 자바는 문자열을 다루는 클래스로써 String, StringBuffer, StringBuilder 이렇게 3가지 클래스가 있습니다. 이 3가지 클래스들의 각각의 차이점과 사용이유에 대해서 알아보겠습니다. 1. String, StringBuffer, StringBuilder의 차이점 가장 큰 이유에는 String 은 불변(immutable) 하고 StringBuffer와 StringBuilder는 기변(mutable)하다는 점입니다. 즉 String은 객체가 한번 할당되면 할당된 공간이 변하지 않지만 StringBuffer와 StringBuilder의 경우에는 객체의 공간이 부족해지는 경우 버퍼의 크기를 늘릴수 있습니다. 그렇다면 String..