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

[형변환 (캐스팅)]이번에는 형변환 또는 캐스팅에 대해서 알아봅시다.Java에는 정수 타입, 실수 타입, 문자 타입, 논리 타입, 객체 등 여러가지 기본 타입이 있다.바이트가 작은 순서로 정수 타입은 byte 여기선 char 타입은 준정수 형태로써 문자이자 정수 타입의 성격도 가지고 있다.형변환이란 코드를 작성할 때 같은 타입뿐만 아니라 서로 다른 타입간의 연산을 수행해야 하는 경우도 있는데, 이 때 연산을 수행하기 전에 타입을 일치시켜야 한다.이처럼 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 형변환이라고 한다. 아래의 예시 코드를 통해 형변환의 역할을 자세히 살펴봅시다.public class Main { public static void main(String[] args) { ..

[String 클래스 메서드]이번에는 Java에서 문자열을 다루는 String 클래스의 메서드 종류에 대해 몇 가지 알아봅시다.String 클래스는 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메서드를 가지고있다.그 중에서도 사용 빈도수가 높은 메서드를 소개하려 한다. [charAt()]charAt() 메서드는 문자열에서 매개변수로 받은 index 번호에 위치한 문자를 리턴한다.여기서 말하는 index 번호는 0부터 시작한다.예를 들어 str = "abcde" 에서 str.charAt(2)를 호출하면 2번째 위치한 문자 'c'를 의미한다. [equals()]우리가 보통 알고있는 기본 타입(int, char, long, double 등)은 연산자 '==' 을 통해 변수의 값을 비교할 수 있..

[static]이번에는 static에 대해서 같이 알아봅시다.static은 정적이라는 고정된 의미를 가지고 있고 static 이라는 키워드를 사용하여 static 변수와 static 메서드를 만들 수 있다.static으로 정의된 변수나 메서드는 객체에서 해당 변수와 메서드를 관리하는 것이 아니라 클래스 자체에서 관리를 한다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용이 가능하다.여기서 말하는 클래스의 로딩은 객체를 생성하지 않고 바로 클래스를 통한 변수 또는 메서드 호출을 의미한다.static으로 정의된 정적 멤버들은 힙 영역이 아닌 static 영역에 메모리가 할당된다.간단하게 말해서 모두가 공유할 수 있는 범주(공공재)의 변수나 메서드라면 static을 붙히는 것이 좋다.종합적으로 static으로..

[super]이번에는 super() 메서드에 대해서 같이 알아봅시다.먼저 아래의 예시 코드를 통해 super() 메서드의 역할과 의미를 파악해봅시다.public class Main { public static void main(String[] args) { System.out.println("== 청둥오리객체 생성시작 =="); new 청둥오리(); System.out.println("== 청둥오리객체 생성끝 =="); /* 출력 == 청둥오리객체 생성시작 == 생물이 생성되었습니다. 동물이 생성되었습니다. 오리가 생성되었습니다. 청둥오리가 생성되었습니다. == 청둥오리객체 ..

Java 생성자와 관련된 문제를 풀어봅시다.Main 메서드에 작성된 코드를 보고 나머지 클래스와 메서드를 작성해봅시다. [문제 1]아래 코드를 보고 계산기 객체가 더하는 기능의 옵션을 3가지 이상 가지도록 코드를 완성해봅시다.public class Main { public static void main(String[] args) { 계산기 a계산기 = new 계산기(); System.out.println(a계산기.더하기(10, 20)); // 출력 : 30 System.out.println(a계산기.더하기(10, 20, 30)); // 출력 : 60 System.out.println(a계산기.더하기(10.5, 20, 30))..

심화된 Java 문제를 풀어봅시다.Main 메서드에 작성된 코드를 보고 나머지 클래스와 메서드를 작성해봅시다. [문제 1]주어진 코드에서 병사가 진급하는 기능과 진급 시 공격력이 증가하게 되도록 코드를 완성해봅시다.public class Main { public static void main(String[] args) { 병사 a병사 = new 병사(); a병사.이름 = "홍길동"; a병사.자기소개(); // 안녕하세요. 저는 홍길동 이병 입니다. a병사.공격(); // 홍길동 이병이 공격합니다.(공격력 : 7) a병사.진급(); a병사.자기소개(); // 안녕하세요. 저는 홍길동 일병 ..

심화된 Java 문제를 풀어봅시다.Main 메서드에 작성된 코드를 보고 나머지 클래스와 메서드를 작성해봅시다. [문제 1]주어진 코드에서 전사가 무기를 여러개 다룰 수 있도록 코드를 완성해봅시다.public class Main { public static void main(String[] args) { 전사 a전사1 = new 전사(); a전사1.a왼손무기 = new 칼(); a전사1.공격(); // 출력 => 전사가 왼손으로 칼(을)를 사용합니다. 전사 a전사2 = new 전사(); a전사2.a왼손무기 = new 창(); a전사2.a오른손무기 = new 도끼(); a전사2.공격(); /..

[ArrayList] 배열 객체를 생성할 때 예를 들어 사람 a사람 = new 사람[3]; 과 같이 생성한다면, 3개의 배열 공간을 가진다는 것을 코드를 통해 알 수 있다. 이는 특정 개수를 알고 있을 때 배열 공간의 크기를 정해주지만, 상황에 따라서 배열 공간을 정하지 않고 원하는 대로 넣고 싶을 때가 있다. 아래는 배열 공간을 최대한 유연하고 융통성있게 지정하는 코드로 총 4단계로 나눠서 작성해보았다. 1 ~ 4단계 코드는 모두 배열 타입의 객체가 생성될 때 마다 고유 번호를 1씩 증가시켜 출력하는 코드이다. [1단계] public class Main { public static void main(String[] args) { exam01(); } static void exam01() { Articl..

이번에는 여지껏 배운 Java 문법을 이용하여 인력관리소를 운영하는 문제를 풀어봅시다. [문제] 다음 Main 메서드를 보고 주석에 작성된 대로 출력되게 클래스와 메서드를 추가해보세요. public class Main { public static void main(String[] args) { 사람인력관리소 a사람인력관리소 = new 사람인력관리소(); a사람인력관리소.add사람("홍길순", 33); // 나이가 33살인 1번째 사람(홍길순)이 추가되었습니다. a사람인력관리소.add사람("홍길동", 20); // 나이가 20살인 2번째 사람(홍길동)이 추가되었습니다. a사람인력관리소.add사람("임꺽정", 30); // 나이가 30살인 3번째 사람(임꺽정)이 추가되었습니다. 사람 a사람1 = a사람인력관..

[추상 클래스] 아래 코드를 해석하면서 추상 클래스라는 새로운 개념에 대해 소개하겠다. public class Main { public static void main(String[] args) { 칼 a무기1 = new 칼(); 활 a무기2 = new 활(); 총 a무기3 = new 총(); // 모든 무기 작동(); a무기1.작동(); a무기2.작동(); a무기3.작동(); } } abstract class 무기 { abstract void 작동(); } class 칼 extends 무기 { void 작동() { System.out.println("칼 작동"); } } class 활 extends 무기 { void 작동() { System.out.println("활 작동"); } } class 총 ex..