본문 바로가기

분류 전체보기32

기본형 매개변수, 참조형 매개변수 자바에서는 메소드를 호출할 때 매개변수로 지정한 값을 메소드의 매개변수에 복사해 넘겨준다. 매개변수의 타입이 기본형일 땐 값이 복사되지만, 참조형을 땐 인스턴스의 주소가 복사된다. 기본형 매개변수: 변수의 값을 읽기만 가능 참조형 매개변수: 변수의 값을 읽고 변경 가능 기본형 매개변수 예제) class Data { int x; } class PrimitiveParamEx { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println("main() : x = " + d.x); change(d.x); System.out.println("After change(d.x)"); System.out.println.. 2021. 3. 19.
JVM의 메모리 구조 응용프로그램이 실행되면 JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리하게 된다. 특히 3가지 주요 영역이 있다. 1. 메소드 영역(method area) :: 프로그램 실행중 어떠한 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(.class)을 읽어서 분석하고 클래스에 대한 정보를 이곳에 저장한다. 이때, 해당 클래스의 클래스 변수도 이 영역에 함께 생성된다. 2. 힙(heap) :: 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 즉, 인스턴스 변수(iv)들이 생성되는 공간. 3. 호출스택(call stack 또는 execution stack) :: 호출스택은 메소드의 작.. 2021. 3. 19.
객체지향 1. 객체지향언어 1.1 객체지향언어의 특성 ① 코드의 재사용성이 높다. -새로운 코드를 작성할 때 기존 코드를 이용해 쉽게 작성할 수 있다. ② 코드의 관리가 용이하다. -코드간의 관계를 이용해서 작은 노력으로 쉽게 코드를 변경할 수 있다. ③ 신뢰성이 높은 프로그래밍을 가능하게 한다. -제어자와 메소드를 이용하여 데이터를 보호하고 올바른 값을 유지할 수 있도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 2. 클래스와 객체 2.1 클래스와 객체의 정의와 용도 클래스의 정의: 객체를 정의해 놓은 것 클래스의 용도: 객체를 생성하는 것 객체의 정의: 실제로 존재하는 것으로 사물 또는 개념 객체의 용도: 객체의 속성과 기능에 따른 용도 2.2 객체와 인스턴스 클래스가 설계.. 2021. 3. 3.
2차원 배열, Arrays클래스 3.1 2차원 배열의 선언과 인덱스(index), 초기화 2차원 배열의 선언은 1차원 배열과 같다. 다만 괄호[]가 하나 더 늘었다는 것. ① 선언, 생성, 초기화를 동시에 int[][] score = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, }; ② 선언과 생성 int[][] score = new int[4][3]; //4행 3열짜리 2차원 배열을 생성한다. 단 생성은 했으나 초기화는 하지 않은 상태. 2차원 배열은 잘 살펴보면 행(row)과 열(column)로 구성되어 있다. 그림을 살펴보면 다음과 같다 new int[4][3]의 2차원 배열의 객체를 생성하여 초기화 시키면 위 그림과 같다. 그리고 만약 이러한 2차원 배열의 형태를 for문을 이용하여 초.. 2021. 2. 25.
String 배열 2.1 String배열의 선언과 생성 배열 타입이 String일 경우에도 선언은 int배열의 선언과 동일하다. String[] name = new String[3]; String배열은 수정할 수 없다. 값을 넣어주지 않으면 String의 기본값은 null이므로 각 배열의 요소에는 null로 초기화 된다(앞의 int형은 기본값 0으로 초기화 됐다) **null은 어떤 객체도 가리키고 있지 않다는 의미다. 2.2 String 배열의 초기화 ① String[] name = new String[]{"Min", "Lee", "Choi"}; ② String[] name = {"Min", "Lee", "Choi"}; //new String[]를 생략할 수 있다. String[] name = new String[3];.. 2021. 2. 23.
배열(Array) 배열이란? 같은 타입의 변수를 하나의 묶음으로 다루는 것. 많은 양의 데이터를 저장하기 위해서, 그 데이터의 숫자만큼 변수를 선언해야 한다면 혼란스러울 수 있는데 이때 배열을 이용하면 많은 양의 데이터를 손쉽게 다룰 수 있다. 또한 배열은 연속적인 공간 확보가 필요하기 때문에 인덱스가 길어지면 메모리에서 해당 인덱스의 길이를 선언하여 생성할 수 있을 만큼의 공간을 확보하여 생성한다. 그렇기 때문에 메모리의 낭비가 발생할 수 있다는 단점과 속도가 빠르다는 장점이 있다. 1.1 배열의 선언과 생성 변수타입 [] 변수명 = new 타입[길이]; :: int[] score = new int[5] //→ 배열을 선언(배열을 다루기 위한 참조변수 선언) = new 배열을 생성(실제 저장공간을 생성) 배열을 선언하고.. 2021. 2. 21.