본문 바로가기

전체 글

(107)
클래스 객체 인스턴스 1. 클래스 1-1. 클래스란? 객체를 만드든 데에 사용되는 것으로, 생성될 객체의 속성과 기능을 포함하고 있다. 또한 여러 타입의 서로 관련된 변수를 묶어 하나의 타입으로 정의하는 것을 '사용자 정의 타입'이라고 하는데 자바에서는 클래스가 바로 사용자 정의 타입이라고 볼 수 있다. 1-2. 속성 '멤버 변수' 즉 변수로 표현되는 구성 요소로 객체가 저장해야 할 데이터의 저장 공간을 확보한다. ex ) Tv 라는 클래스에는 크기, 길이, 높이 등이 멤버 변수로 작성될 수 있다. 1-3. 기능 '메서드'라고 하며, 객체가 어떠한 기능을 수행하는지에 대한 내용이 작성된다. ex ) Tv 클래스에는 전원을 켜고 끄는 기능이 작성될 수 있다. class Tv{ // 멤버변수 String color; boolea..
깊은 복사와 얕은 복사 Call By Value(값에 의한 호출) 기본형 타입의 변수를 복사하게 되면 대상이 된 변수와 복사본인 변수는 서로 영향을 받지 않는다. int a = 10; int b = a; // a의 값(value)을 복사 System.out.println(a); // 10 System.out.println(b); // 10 b = 20; // 새로운 값 대입 System.out.println(a); // 10 System.out.ptintln(b); // 20 기본형 타입의 변수는 스택 영역에 자리를 잡을 때 변수별로 각자의 데이터 영역을 갖게 된다. 이 영역에 자신의 값을 저장하고 있기 때문에 변수 b는 생성될 때는 변수 a의 값을 복사 받아 10 이라는 데이터 값이 있었으나, 새롭게 20 이라는 값을 할당 ..
객체 지향 4대 특성 : 다형성, 캡슐화 3. 다형성 : 사용 편의성 3-1. 오버라이딩(Overriding)와 오버로딩(Overloading) 🔹오버라이딩 : 상위 클래스의 메서드를 재정의 하는 것으로 같은 메서드 이름, 같은 인자를 받는다. 🔹오버로딩 : 같은 기능을 수행하는 메서드를 확장 사용하기 위한 기능으로 같은 메서드 이름, 다른 인자로 다수의 메서드를 중복해서 정의한다. 상위 클래스의 메서드를 하위 클래스 내부에 오버라이딩 하게 되면, 재정의 된 메서드가 실행된다. 이는 상위 클래스 타입의 참조 변수를 사용하더라도 하위 클래스에 재정의 된 메서드가 있다면 해당 메서드가 우선적으로 호출된다. 이러한 특성으로 형변환이나 instanceof 연산자를 사용하여 굳이 하위 클래스가 누구인지 찾아볼 필요가 없어진다. 예를 들어, 정수 타입 두..
객체 지향 4대 특성 : 추상화, 상속 1. 추상화(Abstraction) : 모델링(Modeling) 1-1. 추상화란? 클래스를 설계할 때, 이 클래스로부터 실체화 될 객체의 공통된 특성을 먼저 찾게 된다. 사람을 예로 들면 이름, 나이, 직업, 키, 혈액형 등의 속성 값을 공통적으로 가질 수 있을 것이고, 먹다, 자다, 일하다, 공부하다, 웃다 등 기능 및 행위를 나타내는 메서드를 공통으로 가질 수 있을 것이다. 사람이라는 객체를 나타내는 특성은 상기된 내용보다도 훨씬 많기 때문에 우리는 강제적으로 어느 정도까지 만들겠다는 일종의 경계(Context)가 필요하다. 그렇다면 그 경계는 어떻게 만들어 질 수 있을까. 경계는 개발하고자 하는 어플리케이션의 사용 목적에 따라 경계가 구분될 수 있다. 개발의 목적에 따라 우리는 같은 객체를 두고도..
클래스(Class) 와 객체(Object) 1. 클래스(Class)와 객체(Object) 1-1. 객체(Object) Java의 클래스를 이해하기 위해서는 객체를 먼저 이해할 필요가 있다. 객체는 실제 세계에서 유형 또는 무형으로 존재하는 식별 가능한 모든 것을 의미한다. 예를 들어 유형으로는 사람, 컴퓨터, 고양이 등이 존재할 수 있고, 무형으로는 생산, 운동, 운전 등이 존재할 수 있다. 1-2. 클래스(Class) 클래스는 실제 세계에 존재하는 객체를 Java 프로그램에서 구현하고자 만든 일종의 설계도이다. 클래스는 필드(Field), 생성자(Constructor), 메서드(Method)로 구성되어 있으며, 이는 생략될 수 있다. 👉 필드(Field) : 객체를 구성하는 속성이며, 데이터가 저장되는 공간이다. 멤버 변수라고도 부른다. 👉 생..
조건문과 반복문 1. 조건문 1-1. if / else 문 if 문은 ()에 들어가는 조건식이 참인 경우 {} 블록의 코드를 실행하는 조건문이다. int num = 7; if(num > 1) { // 조건식 참 System.out.println("num이 1보다 큰 경우 실행되는 코드"); } 만약 if 문의 조건식이 참이 아닌 경우가 발생한다면? if 문 블록의 코드는 실행되지 않고 끝나버린다. 이런 경우에는 다른 조건을 추가해서 데이터를 걸러야 하는데, 이를 다중 조건 else if 문을 통해 구현할 수 있다. int num = 7; if(num < 5) { // 조건식 거짓 System.out.println("num이 5보다 작은 경우 실행되는 코드"); // {} 블록은 실행되지 않는다. } else if (nu..
연산자 1. 산술 연산자 연산자 설명 + 단항 부호 연산자 int a = +10 양수를 표현하며 부호를 유지할 때 사용한다. 변수에 적용하기 위해서는 대입 연산자(=)와 함께 쓰여야 한다. 이항 더하기 연산자 10 + 20 두 개의 피연산자(숫자)의 값을 합한다. 문자열 연결 "ab" + "cd" 두 개의 피연산자(문자열)을 연결하여 새로운 문자열을 만든다. - 단항 부호 연산자 int b = -10 음수를 표현하며 부호를 바꿀 때 사용할 수 있다. + 연산자와 마찬가지로 대입 연산자와 함께 쓰여야 한다. 이항 빼기 연산자 10 - 20 두 개의 피연산자(숫자)의 값을 뺀다. * 이항 곱하기 연산자 10 * 20 두 개의 피연산자(숫자)의 값을 곱한다. / 이항 나누기 연산자 10 / 20 두 개의 피연산자(숫..
변수(Variable) 1. 변수 1-1. 변수의 정의 메모리 공간(RAM)의 각 공간은 고유한 주소를 부여받아 공간에 있는 값을 사용할 수 있게 한다. 주소는 숫자로 나열되어 있어 사용자에게 있어 기억하기 힘들다는 단점이 있다. 이를 위해 기억하기 쉽도록 의미 있는 이름(변수)을 붙여 사용하기 편하게 한다. 1-2. 리터럴(Literal) 변수에 저장하는 변하지 않는 데이터(숫자, 문자, 논리값 등) 그 자체를 의미한다. 리터럴은 상수풀(constant pool)이라는 곳에 저장되며, 변수에 값을 부여할 때 같은 값을 가진 메모리가 있는지 1차적으로 확인하는 작업을 거친다. 이미 상수풀에 존재하는 값이면 해당 메모리의 주소를 넘겨주어 같은 값에 대한 메모리 영역을 활용할 수 있도록 한다. ✍️ String 메모리 할당 Str..