본문 바로가기

Java

(41)
나동빈 자바(Java) 상속 #10 사람이라는 Class가 있다고 치자. 사람은 [이름, 나이, 키, 몸무게]라는 특징이 있다. 그러면 학생, 강사라는 Class가 있다고 치자. 학생과 강사는 각각 다른 특징을 가지지만 동시에 사람이기도 하다. 결국, 학생 [[이름, 나이, 키, 몸무게], 학번, 학점, 학년] 강사 [[이름, 나이, 키, 몸무게], 교수번호, 월급] 으로 나타낼 수 있다. 이 때, 학생 Class와 강사 Class는 사람 Class의 상속을 받았다고 한다. 마우스 우클릭 -> Source -> Generate Getters and Setters 클릭 -> Select All public String getName() { return name; } public void setName(String name) { this.na..
나동빈 자바(Java) 클래스 #09 객체 : 실세계의 사물 하나의 객체를 만든다. 그 객체의 성질들을 묶어서 저장해두는 것을 클래스이다. 예를 들어 게임을 만들 때, 자동차의 특성, 사람의 특성, 나무의 특성 등등을 클래스를 저장한다. 그리고 프로그래밍을 할 때, 그 클래스를 사용해서 성질에 맞는 방법을 구현한다. 가령 car라는 클래스의 특징이 속력, 색상, 이름 등등이 있을 때 new car(); 의 함수를 사용하면 car라는 객체가 불러와진다. 이 특성을 프로그램 안에서 개별적으로 설정하거나 사용할 수 있다. 실제로 이러한 데이터를 변수로 활용하는 것을 인스턴스화라고 한다. 어떠한 클래스 안에서 만들어진 실제로 사용하는 단위이다. 자동차 -> car (클래스, 객체화) -> new car; (인스턴스, 객체의 활용) => 객체 지향 ..
나동빈 자바(Java) 다자원 배열 #08 각각의 행과 열의 조합으로 사용하는 배열이 2차원 배열이다. 쉽게 엑셀, 지도 등을 생각하면다. 3차원, 4차원 배열도 이론상 가능하지만 쓰이는 경우는 거의 없다. 다차원 배열 package 응용예제2; public class Main16 { public static void main(String[] args) { int N = 50; int[][] array = new int[N][N]; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { array[i][j] = (int)(Math.random() * 10); // 0부터 9사이의 정수 } } for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { Sy..
나동빈 자바(Java) 배열 #07 배열은 어떠한 것이 나열되어 있거나 규칙적으로 정렬이 되어있을 때. 여러가지 원소가 연속적으로 차례대로 나열되어있고, 그를 저장할 수 있는 방법이다. 배열은 단순하게 생각하면 데이터가 많을 때 사용한다. 배열 int[] array = new int [100]; index 0부터 99까지 있는 배열이 생성된다. 자바가 메소드를 모두 갖고 있으면 프로그램이 무거워진다. 그래서 주요 메소드, 클래스들은 따로 라이브러리로 외부에 존재한다. 이런 클래스를 사용하려면 import를 해서 불러오면 된다. Scanner(system.in) 원하는 개수만큼 배열 생성, 최댓값 출력 package 응용예제2; import java.util.Scanner; public class Main14 { public static i..
나동빈 자바(Java) 반복함수와 재귀함수 #06 팩토리얼 함수(반복함수) public static int factorial(int number) { int sum = 1; // 초기화 for(int i = 2; i
나동빈 자바(Java) 사용자 정의 함수 #05 자바는 객체지향의 꽃이다. 자바라는 프로그래밍 언어 자체가 구현 단계에 있어서 거의 객체지향으로 설계하도록 반강제적으로 지시하고 있기 때문이다. 실제로 객체 지향에 있어서 많은 장점을 누릴 수 있게 되어 있다. 어떠한 사물이 있으면 사물을 특징으로 모델링을 한 것이고 객체 지향을 하면 현실세계의 무언가를 다루는 개념이다. 함수의 경우 먼저 함수의 반환형을 써줘야 한다. // 반환형(datatype), 함수명(method), 매개변수 public static int function(int a, int b, int c) { return 0; } 이것이 사용자 정의 함수다. 참고로 자바에선 함수랑 메소드는 같은 의미로 쓰여진다. 매개변수는 일반적으로 함수가 어떠한 값을 처리할 때, 사전적으로 주어지는 값을 의..
자바(Java) 개념 정리 - 예외처리 #19 숙명 vs 운명 ERROR vs EXCEPTION ERROR : 우리가 만든 프로그램의 문제가 아닌, 프로그램이 동작하는 환경의 문제. EXCEPTION : 내가 짠 코드가 예상했던 상황과 다른 상황에 직면했을 때. public class ExceptionApp { public static void main(String[] args) { System.out.println(1); System.out.println(2/0); System.out.println(3); } } 이 코드를 입력했을 때, 다음과 같은 에러가 발생한다. 1 Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionApp.main(ExceptionAp..
나동빈 자바(Java) 기본 입출력 #04 Scanner 클래스를 가져오기 위해서는 Scanner가 있는 java.util.Scanner를 import 해준다. 클래스는 내부적으로 어떤 함수를 가지고 있다. System은 어떤 콘솔창 안에 이미지를 이야기 한다. package 응용예제2; import java.util.Scanner; public class Main6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("정수를 입력하세요 : "); int i = sc.nextInt(); System.out.println("입력된 정수는 " + i + "입니다."); sc.close(); } } System.in 은 해당 시스템..
나동빈 자바(Java) 개념 정리 - 조건문 & 반복문 #03 String이라는 것은 하나의 문자열을 의미하는 자료형이다. 다만, 자바에서는 String이라는 게 비원시자료형으로서 클래스 기반으로 만들어진다. a라는 변수 뒤에 string이라는 자료형에서 제공하는 다양한 함수를 사용할 수 있다. package 응용예제2; public class Main4 { public static void main(String[] args) { String a = "I Love you. "; if(a.contains("Love")) { } } 주석 처리를 통해서 명확하게 자리를 만들어줘라. package 응용예제2; public class Main4 { public static void main(String[] args) { String a = "I Love you. "; if(..
나동빈 자바(Java) 개념 정리 - 연산자 #02 연산자 함수 이름은 [반환형, 함수 이름, 매개 변수]로 구성된다. 3항 연산자 조건 ? 참 : 거짓 static int max(int a, int b) { int result = (a > b) ? a : b; return result; } -i++와 ++i는 단순히 값을 증가시키려는 목적이라면 그 기능이 동일하다. 하지만 출력 순서에 따라서 결과가 달라진다. -100< x