목록Java (71)
사이먼's 코딩노트

[생성자 문제] 다음은 생성자와 관련된 문제를 풀어보고 비교해봅시다. 문제의 목적은 다음과 같습니다. 각각의 사람이 배달음식을 주문할 때, 각자의 상황과 기호에 따라 적절한 음식점과 음식이 배달되도록 코드를 작성하는 것이다. 우리는 해당 문제를 두 가지 버전으로 나눠서 풀어보려 합니다. 첫번째 코드는 main 메서드에서 일일이 속성 값들을 저장하여 원하는 출력문을 출력하는 코드이고, 두번째 코드는 생성자를 통해 값을 최초에 세팅하고 원하는 출력문을 출력하는 코드이다. 두 코드를 잘 비교하면서 더 편리한 방법이 어떤 것인지 느껴봅시다. [첫번째 코드] public class Main { public static void main(String[] args) { 사람 a김철수 = new 사람(); a김철수.이..

[캐스팅] Java에서는 형변환을 캐스팅이라고 한다. 여기서 말하는 형변환이란 말그래도 형태를 변환한다는 뜻이다. 예를 들어 정수형 타입인 int와 실수형 타입인 double이 있다면 서로의 타입으로 형태를 변환하는 것이 캐스팅이라고 한다. int i = 10; double d = i; i = (int)d; System.out.println(i); 위 코드를 보면 변수 i는 정수 타입으로 선언되었고 10이라는 값을 넣었다. 변수 d는 실수 타입으로 선언되었고 i가 가지고 있는 10이라는 값을 넣었다. 여기서 먼저 d를 출력문을 통해 출력해보면 10이 아닌 실수 타입에 맞춰 10.0이 출력될 것이다. 이 때 i가 가지고 있는 정수 10은 자동으로 형변환 즉, 캐스팅이 된 것이다. 이번에는 반대로 정수인 1..

클래스와 메서드 그리고 상속을 통한 문제를 요구사항에 맞춰서 풀어보자. [문제] 문제 : 다음 요구사항에 맞는 클래스와 메서드를 생성해보세요. 요구사항 1 : 오리 생성하고 날아가는 능력을 부여하세요. 요구사항 2 : 청둥오리와 흰오리를 생성하고 날아가는 능력을 부여하세요. 요구사항 3 : 오리 계열(오리, 청둥오리, 흰오리)의 클래스에 '날다' 메서드가 중복되지 않도록 하세요. 요구사항 4 : 고무오리를 생성하고 날아가는 능력을 부여하세요. 요구사항 5 : 고무오리 계열에게 날아가는 능력을 뺏어주세요. 요구사항 6 : 고무2오리를 추가 생성해주세요. 요구사항 7 : 고무오리 계열의 클래스에 '날다' 메서드가 중복되지 않도록 하세요. 요구사항 8 : 로봇오리를 생성하여 오리계열과 고무오리계열의 능력을 반..

[상속] Java는 객체지향 프로그램이다. Java와 같이 객체지향 프로그램은 최대한 중복을 없애는 것을 선호하는 편이다. 서로 다른 클래스가 같은 기능을 하는 메서드를 실행하는 것은 매우 비효율적인 일이라고 판단한다. 같은 계열의 클래스 즉, 비슷한 역할을 하는 설계도가 있다면 해당 설계도는 서로 상속하고 상속받는 역할을 하는 것이 좋다. 아래는 클래스끼리 상속받는 모습을 작성한 코드이다. public class Main { public static void main(String[] args) { 사람 a사람 = new 사람(); a사람.숨쉬다(); } } class 동물 { static void 숨쉬다() { System.out.println("숨쉬다."); } } class 사람 extends 동물..

[클래스와 메서드 2] 아래는 게임 참여자와 무기라는 클래스를 지정하여 속성을 부여하는 코드이다. public class Main { public static void main(String[] args) { Player p1 = new Player(); p1.name = "홍길동"; Weapon sword = new Weapon(); sword.type = "칼"; sword.damage = 1; p1.weapon = sword; Weapon bow = new Weapon(); bow.type = "활"; bow.damage = 2; Player p2 = new Player(); p2.name = "홍길순"; p2.weapon = bow; System.out.println(p2.weapon.type); ..

[클래스와 메서드] 모든 객체는 우리가 흔히 알고 있는 자료형 int, double를 통해서만 생성되지 않는다. 클래스라는 설계도를 만들어 객체 타입을 사용자가 직접 정의하여 생성할 수 있다. public class Main { public static void main(String[] args) { // 객체 생성 Person a = new Person(); a.age = 20; a.isMarried = false; a.name = "철수"; a.introduce(); a.age = 21; a.name = "영수"; a.introduce(); } } class Person { int age; boolean isMarried; String name; void introduce() { System.out...

[객체] [객체가 필요한 이유] 변수에는 오직 값 하나만 넣을 수 있다. 프로그래밍을 하다보면 변수에 값을 여러개 넣을 필요가 있을 때가 있다. 그래서 고안된 것이 객체이다. 객체는 커피 캐리어에 비유할 수 있다. 커피 캐리어에는 커피를 여러잔 담을 수 있고, 용도에 따라 종류가 여러가지 있다. 프로그래밍을 할 때 상황에 따라 서로 다른 종류의 객체 여러개가 필요하다. 객체를 일종의 제품으로 보았을 때 객체를 만들기 위해서는 설계도 즉, 클래스가 필요하다. 객체는 너무 커서 변수에 담을 수 없다. 클래스로는 객체도 만들 수 있고, 그 객체를 조종할 수 있는 리모콘도 만들 수 있으며 객체 리모콘을 담을 변수도 만들 수 있다. [배열 객체] package org.example; //TIP To Run cod..

[반복문] 예를 들어 1부터 1000까지의 숫자를 하나씩 출력해보자고 했을 때, 지금까지 배운 지식으로는 System.out.println문을 통해서 일일이 1000개를 작성해야한다. 하지만 이것은 굉장히 비효율적이고 귀찮은 일이다. 이런 작업을 훨씬 수월하게 동작하게 위해서 우리는 반복문을 활용해야한다. 반복문은 크게 for문과 while문 두 가지로 나뉠 수 있다. 두 가지는 문법이 다를 뿐 의미는 동일하다. [while] 아래는 while문의 예시로서 i라는 변수가 5이하 일때는 해당 숫자를 출력문으로 출력한다. class Main { public static void main(String[] args) { int i = 1; while (i

[조건문] Java에서는 True/False로 참/거짓을 분별한다. 조건문의 기본 구조 및 예시는 아래와 같다. class Main { public static void main(String[] args) { int age = 30; if (age > 19) { System.out.println("성인입니다."); } } } 기본 구조 if()에서 ( ) 괄호 안에 조건을 써놓고 조건이 참일 때 { } 안에 작성한 문법들이 동작한다. 조건에는 사칙연산이 아닌 논리연산을 넣어야 한다. 위 예시에서는 age라는 변수에 30을 넣고 조건문을 통해 성인인지 아닌지를 판별할 수 있다. 만약 age가 19이라는 숫자 초과면 "성인입니다."라는 출력문을 출력하게 된다. class Main { public static..

[변수] 변수는 데이터를 저장할 수 있는 특정 공간이라고 생각하면 좋다. 변수에는 공간이 매우 작기 때문에 값을 하나만 넣을 수 있다. Java에서 정수 타입을 가진 변수를 선언하고 싶다면 int x; 와 같이 작성하면 된다. 여기서 말하는 int는 integer의 줄임말이며 정수를 뜻한다. 변수 2개를 선언하고 각 변수에 숫자를 부여하는 구조는 아래와 같다. class Main { public static void main(String[] args) { int x = 10; // x라는 변수에 10 값 선언 int y = 20; // y라는 변수에 20 값 선언 System.out.println("x : " + x); System.out.println("y : " + y); } } 위 예시에서 // 하..