본문 바로가기

Java/기본 이론

(18)
[JAVA] Chapter 18. 변수의 스코프와 라이프 타임 1. 변수의 스코프와 라이프 타임 변수의 스코프(영역)란 변수가 접근할 수 있는 유효 범위를 말한다. 일반적인 규칙은 변수가 선언된 블록내에서만 변수에 접근할 수 있다. 블록은 { }을 말하는데, Java에서 Class와 Method가 블록을 가진다. 쉽게 말해 스코프란 변수를 사용할 수 있는 영역이고, 스코프는 변수가 선언되는 영역에 따라 접근하는 방법이 다르다. 라이프 타임은 이러한 변수가 유효한 시간을 말하는데, 프로그램이 구동되는 동안 변수가 '값을 담고 있을 수 있는 주기'를 말한다. 라이프 타임은 변수의 종류에 따라 상이하기 때문에 각각의 차이를 이해하는 것이 중요하다. 2. 변수의 종류: 선언 위치에 따른 분류 변수는 선언한 위치에 따라 멤버변수와 지역 변수로 나뉜다. 멤버변수는 클래스 영역..
[JAVA] Chapter 17. 함수와 메소드 1. 함수(function)와 메소드(Method)의 정의 함수는 특정 기능을 제공하기 위한 프로그램의 모듈을 말한다. 함수는 전달된 값에 대해 동작을 수행하고 값을 도출한다. 함수는 동적인 행동을 부여하는 것으로 메소드와 기능적인 차이에 구별을 두기는 힘들다. 하지만 메소드는 클래스의 포함 대상이며, 클래스는 필드와 메소드로 나뉜다. 즉, 메소드를 호출하려면 해당 클래스를 먼저 참조하고 정의한 상태여야 한다. 쉽게 말해, 함수는 클래스에 포함되지 않아도 실행이 가능하고 기능을 하는 명령문이고, 메소드는 클래스에 포함된 명령문의 집합을 말한다. 때문에 메소드는 객체를 대상으로 하며, 메소드 자신 또한 객체로 취급되어 객체와 같은 특성을 가진다. 메소드는 만들어져 있는 것을 사용하기도 하고, 직접 만들기도..
[JAVA] Chapter 16. 클래스의 구성과 선언 1. 클래스의 구성 요소 자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가진다. 또한, 경우에 따라 클래스는 생성된 객체의 필드를 초기화해주는 메소드인 생성자(constructor)를 가진다. class Bungerbbag { // 클래스 이름 private String hiddenmenu; // 필드 public String flavor; // 필드 Bungerbbang(int amount, String flavor) { // 생성자 this.amount = 6; this.flavor = 슈크림; } public String buyBungerbbang() { // 메소드 return this.amount + "개, " + this.fl..
[JAVA] Chapter 15. 클래스의 구조 클래스란 java 에서 변수가 선언되고 함수가 작동하는 영역을 말하는데, 객체 자체를 class라고 한다. 자동차를 예로 들어 클래스를 설명하자면 다음과 같다. class Car { String modelName; int modelYear; String modelColor; int maxSpeed; int momentAccel; acceleration(){ System.out.print("가속한다") } brake(){ System.out.print("멈춘다") } turnon(){ System.out.print("시동을 켠다") } turnoff(){ System.out.print("시동을 끈다") } } 위와 같이 class가 지정된 상태라면, 해당 클래스는 pakage 내에서 호출하여 별도의 객체를..
[JAVA] Chapter 14. 클래스 1. 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 자바는 객체 지향 프로그래밍으로 모든 데이터를 객체로 취급한다. 객체는 하나의 사물(Object)을 말하는데, 사물은 다양한 속성을 포함하고 있다. 사물은 모양(상태; State)와 기능(행동; Behavior)을 가지고 있으며, 인간은 사물을 표현할 때 이 두 가지의 정보를 중심으로 설명하고 인식한다. 예를 들어, 비행기라는 사물을 설명할 때 고철로 이루어진 새 모양의 운송수단으로 설명한다면, 고철이 무엇인지와 새 모양은 무엇인지, 운송수단은 무엇인지 설명할 필요가 있다. 여기서 주목할 점은 사물을 설명하는 것은 결국 그 사물이 가지고 있는 속성을 설명하는 것이고, 이 속성 자체도 '객체'라는 것이다. 물론 사람이..
[JAVA] Chapter 13. 배열 변수 1. 배열 변수의 개념 배열은 행과 열로 구성된 일련의 데이터를 말하는데, 기본적으로 1행에 순차적으로 나열된 정보를 배열이라고 한다. 봄, 여름, 가을, 겨울 사계절의 구성 요소를 나열하면 위와 같이 봄, 여름, 가을, 겨울로 나열될 것이다. 다시말해 사계절이라는 상자에 봄, 여름, 가을, 겨울이 담겨있는 것이다. 배열이란 이와 같이 하나의 속성에 다수의 다른 속성이 담겨있는 것을 말한다. 즉, 배열은 객체라는 것이다. 배열 변수는 이러한 배열의 특성에 따라, 하나의 변수에 나열된 다수의 데이터를 담는 것을 말한다. 담겨져있는 데이터가 (11, 7, 8, 22, 0) 처럼 연관이 없어보여도 '배열 변수'로 선언되는 순간 반드시 2가지의 공통점을 가진다. 배열에 포함된 구성요소의 상위 항목 변수는 동일하..
[JAVA] Chapter 12. 제어문- 흐름제어문 1. 흐름제어(분기)문 반복문은 조건이 참이라면 지정한 실행문을 지속적으로 반복한다. 경 우에 따라서 조건의 값이 변화하지 않도록 동작을 구성하기도 한다. 이런 경우, 무한 루프가 생성되어 지속적으로 반복한다. 무한반복은 알고리즘이 끝나지 않음을 이야기하며 메모리 낭비를 비롯하여 보안 자체의 취약점으로 작용하기도 한다. 이러한 문제를 해결하려면 특정 조건에 따라 예외 조건을 주어야한다. 이때 사용하는 것이 바로 흐름제어문이다. 흐름제어문에는 break, continue, return 총 3가지가 있다. 2. break; 레이블이나 루프 밖 등 특정 위치로 분기하는 제어문이다. break는 그 문장이 포함된 루프만 빠져나온다. 2중 for 혹은 while에서 사용한다면 문장이 포함된 블록("{}안에") 항..
[JAVA] Chapter 11. 제어문 - 반복문 while 1. 반복문 while while (조건){실행문;} while은 조건이 ‘참’일 경우 실행문을 반복하는 반복문으로 for과 다르게 조건에 증감 연산과 범위가 정해지지 않는다. 이러한 특성 때문에 일반적으로 사용자가 입력한 데이터에 대한 반복이나 정보 처리에 사용한다. 다만 주의할 것은 증감 연산이 조건에 포함되지 않아 ‘무한 루프’를 생성할 수 있으며, 이를 방지하기 위해 예외 처리(break 등) 혹은 증감연산을 실행문에 포함해 주어야 한다. 2. 반복문 while의 연산 순서 int i = 1; while ( i < 6) ① ④ { System.out.println(i); ② ⑤ i++; ③ ⑥ } System.out.println(“while 항목 밖에서의 i =”+i ); //조건==거짓 whi..