본문 바로가기

전체 글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.
반복문(for, while, do-while) 1.1 for문 for문은 반복 횟수를 알고 있을 때 적합하다. 또한 구조가 직관적이라 이해하기가 쉬운 특징을 가지고 있다. 1) 구조 for(초기화; 조건식; 증감식){ //③ 조건식이 참일 때 수행될 문장들을 적는다. } 2) for문의 수행 순서 ① 조건문의 '초기화' -반복문에 사용될 변수를 초기화 하는 부분이며 처음 한번만 수행된다. ② 조건문의 '조건식' -이때 조건식의 값이 참이면 반복을 계속 진행 → 조건문의 조건식이 참인 동안에는 반복을 계속한다 -조건식의 값이 거짓이면 for문을 빠져 나간다. ③ 수행될 문장 ④ 조건문의 '증감식' -반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식으로 매 반복마다 변수의 값이 증감식에 의해 변하고 결국 조건식이 거짓이 되어 for문을 벗어나게 된.. 2021. 2. 20.
조건문(if, switch) 1.1 if문 if문은 가장 기본적인 조건문이며, 다음과 같이 조건식과 괄호로 이루어져 있다. if의 뜻이 '만약 ~라면'이란 뜻으로 '조건식이 참(true)이면 괄호{}안의 문장들을 수행하라'는 의미로 이해하면 된다. 1) 형태 //if문 기본 형태 if(조건식){ //조건식이 참일 때 수행될 문장 입력 } if문의 예제) //1. 기본적인 if문 사용 예제 int score = 80; int score2 = 50; if(score > 60){ System.out.println("참, Score가 60보다 큽니다."); //조건식이 참일 때 수행되는 문장 } else { System.out.println("거짓, Score가 60보다 작습니다."); //조건식이 참이 아닐 경우 수행되는 문자 } //2.. 2021. 2. 19.
연산자 1. 연산자 연산자는 연산을 수행하는 기호를 의미한다. 흔히 사칙연산(+, - *, /)을 비롯해 다양한 연산자들이 있다. 1.1 연산자의 종류 종류 연산자 설명 산술 연산자 +, -, *, /, %, 사칙연산과 나머지 연산(%) 비교 연산자 >, =, 비교 > 논리 > 대입 연산자 순으로 대입은 제일 마지막에 수행된다. 2) 단항(1) > 이항(2), 삼항(3) 연산자 순으로 단항 연산자의 우선순위가 이항 연산자보다 높다. 3) 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다. 종류 결합규칙(진행방향) 연산자 우선순위 단항 연산자 ← ++, --, +, -, ~, !, (type) 높음 낮음 산술 연산자 → *, /, % → +, - → 비교 연산자 → , =, insta.. 2021. 2. 18.