변수
•
변수의 선언과 저장
public class Variable1 {
public static void main(String[] args) {
int x = 10;
int y = 5;
System.out.println(x + y);
System.out.println(x - y);
System.out.println(x / y);
System.out.println(x * y);
}
}
Java
복사
•
변수의 타입
◦
숫자
▪
int, long : 정수를 저장하기 위한 타입(20억이 넘을 땐 long)
▪
float, double : 실수를 저장하기 위한 타입
◦
문자
▪
char : 문자(character)를 저장하기 위한 타입
▪
String : 여러 문자(문자열, string) 를 저장하기 위한 타입
◦
예제
public class Variable2 {
public static void main(String[] args) {
int x = 100;
double pi = 3.14;
char ch = 'a';
String str = "abc";
System.out.println(x);
System.out.println(pi);
System.out.println(ch);
System.out.println(str);
}
}
Java
복사
•
상수와 리터럴
◦
상수 : 한번 값을 저장하면 다른 값으로 변경 안 됨
◦
리터럴 : ‘상수’의 다른 이름 (그 자체로 값을 의미)
final int MAX_VALUE; // 정수형 상수 MAX_VALUE 선언
MAX_VALUE = 100; // 상수에 처음으로 값 저장
MAX_VALUE = 200; // 상수에 저장된 값 변경 x
Java
복사
•
문자열 결합
public class String1 {
public static void main(String[] args) {
String name = "Ja" + "va";
String str = name + 8.0;
System.out.println(name); // Java
System.out.println(str); // Java8.0
System.out.println(7 + " "); // 7
System.out.println(" " + 7); // 7
System.out.println(7 + ""); // 7
System.out.println("" + 7); // 7
System.out.println("" + "");
System.out.println(7 + 7 + ""); // 14
System.out.println("" + 7 + 7); // 77
}
}
Java
복사
•
두 변수 값 바꾸기
public class Variable3 {
public static void main(String[] args) {
int x = 10, y = 5;
System.out.println("x = " + x);
System.out.println("y = " + y);
int tmp = x;
x = y;
y = tmp;
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
Java
복사
•
화면으로부터 입력받기
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("두자리 정수를 하나 입력해주세요."); // 10
String input = scanner.nextLine();
int num = Integer.parseInt(input);
System.out.println("입력내용 : " + input); // 입력내용 : 10
System.out.printf("num=%d%n", num); // num=10
}
}
Java
복사
연산자
•
증감 연산자
public class Exercise1 {
public static void main(String[] args) {
int i = 5, j = 5;
System.out.println(i++); // 후위 증가
System.out.println(++j); // 전위 증가
System.out.println("i = " + i + ", j = " + j);
}
}
Java
복사
•
형변환 연산자 - 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
public class Exercise2 {
public static void main(String[] args) {
double d = 85.4;
int score = (int) d;
System.out.println("score=" + score);
System.out.println("d=" + d);
}
}
Java
복사
•
Math.round() - 소수점 첫째 자리에서 반올림한 결과를 정수로 반환 (만약에 다른 자리에서 반올림을 하려면 10의 n제곱으로 적절히 곱하고 나누어야 함)
public class Exercise3 {
public static void main(String[] args) {
double pi = 3.141592;
double shortPi = Math.round(pi * 1000) / 1000.0;
System.out.println(shortPi);
}
}
Java
복사
•
문자열 비교
String str = new String("abc");
// equals()는 두 문자열의 내용이 같으면 true, 다르면 false를 결과로 반환
boolean result = str.equals("abc");
Java
복사
배열
•
배열의 출력
import java.util.Arrays;
public class Exercise1 {
public static void main(String[] args) {
int[] iArr1 = new int[10];
for (int i = 0; i < iArr1.length; i++) {
iArr1[i] += i + 1;
}
for (int i = 0; i < iArr1.length; i++) {
System.out.print(iArr1[i] + ",");
}
System.out.println();
System.out.println(Arrays.toString(iArr1));
}
}
결과:
1,2,3,4,5,6,7,8,9,10,
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Java
복사
•
String 배열의 초기화
public class StringArray {
public static void main(String[] args) {
String[] names = {"Kim", "Park", "Yi"};
for (int i = 0; i < names.length; i++) {
System.out.println("names["+i+"]:"+names[i]);
}
String tmp = names[2];
System.out.println("tmp:"+tmp);
names[0] = "Yu";
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
== 결과 ==
names[0]:Kim
names[1]:Park
names[2]:Yi
tmp:Yi
Yu
Park
Yi
Java
복사
•
String 클래스
◦
자바에서는 char 배열이 아닌 String 클래스를 이용하여 처리한다. String 클래스가 char 배열에 여러 가지 기능을 추가하여 확장한 것이기 때문이다.
그래서 char 배열을 사용하는 것보다 String 클래스를 사용하는 것이 문자열을 다루기 더 편하다.
◦
String 클래스는 char 배열에 기능(메서드)을 추가한 것이다.
•
String 클래스의 주요 매서드
◦
char charAt(int index)
▪
문자열에서 해당 위치(index)에 있는 문자를 반환한다.
◦
int length()
▪
문자열의 길이를 반환한다.
◦
String substring(int from, int to)
▪
문자열에서 해당 범위(from~to)의 문자열을 반환한다.
(to는 포함 안 됨)
◦
boolean equals(Object obj)
▪
문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false
◦
char[] toCharArray()
▪
문자열을 문자배열(char[])로 변환해서 반환한다.
객체지향 언어
•
객체지향 언어의 정의
◦
객체지향 언어는 기존의 프로그래밍 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태의 것
◦
코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해짐
•
객체지향 언어의 특징
◦
코드의 재사용성이 높다.
▪
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
◦
코드의 관리가 용이하다.
▪
코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
◦
신뢰성이 높은 프로그래밍을 가능하게 한다.
▪
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며 코드의 중복을 제거하여
코드의 불일치로 인한 오동작을 방지할 수 있다.
•
클래스와 객체
◦
클래스
▪
정의: 클래스란 객체를 정의해 놓은 것
▪
용도: 클래스는 객체를 생성하는데 사용
◦
객체:
객체의 사전적인 정의는 ‘실제로 존재하는 것’이다. 우리가 주변에서 볼 수 있는 책상, 의자, 자동차와 같은 사물들이 곧 객체이다. 객체지향 이론에서는
사물과 같은 유형적인 것뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다.
▪
정의: 실제로 존재하는 것. 사물 또는 개념
▪
용도: 객체가 가지고 있는 기능과 속성에 따라 다름
▪
유형의 객체: 책상, 의자, 자동차, TV와 같은 사물
▪
무형의 객체: 수학공식, 프로그램 에러와 같은 논리나 개념
▪
예시 - 클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다!
클래스 | 객체 |
제품 설계도 | 제품 |
TV 설계도 | TV |
붕어빵 기계 | 붕어빵 |
•
객체의 구성요소 - 속성과 기능
◦
객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 즉, 객체는 속성과 기능의 집합이라고 할 수 있다.
그리고 객체가 가지고 있는 속성과 기능을 그 객체의 멤버(구성원, member)라 한다. 클래스란 객체를 정의한 것이므로 클래스에는 객체의 모든 속성과 기능이
정의되어 있다. 클래스로부터 객체를 생성하면, 클래스에 정의된 속성과 기능을 가진 객체가 만들어지는 것이다.
◦
속성 - 크기, 길이, 높이, 색상, 볼륨, 채널 등
◦
기능 - 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등
객체지향 프로그래밍에서는 속성과 기능을 각각 변수와 메서드로 표현한다.
속성(property) -> 멤버변수(variable)
기능(function) -> 메서드
채널 -> int channel
채널 높이기 -> channelUp() {...}
class Tv {
String color; // 색깔
boolean power; // 전원상태
int channel; // 채널
void power() { power != power; }
void channelUp() { channel++; }
void channelDown(). { channel--; }
Java
복사
•
객체와 인스턴스
◦
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate) 라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance) 라고한다.
◦
예시
▪
TV 클래스로부터 만들어진 객체를 TV 클래스의 인스턴스라고 한다. 인스턴스는 객체와 같은 의미이지만, 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며,
인스턴스는 어떤 클래스로부터 만들어진 것인지를 보다 강조하는 의미를 가지고 있다.
▪
예를 들면 ‘책상은 인스턴스다.’ 라고 하기 보다는 ‘책상은 객체다.’ 라는 쪽이, ‘책상은 책상 클래스의 객체이다.’ 라고 하기 보다는 ‘책상은 책상 클래스의 인스턴스다.’ 라고 하는 것이
더 자연스럽다.
◦
인스턴스와 객체는 같은 의미이므로 두 용어 사용을 엄격히 구분할 필요는 없지만, 위의 예에서 본 것과 같이 문맥에 따라 구별하여 사용하는 것이 좋다.
인스턴스화
클래스 ------------> 인스턴스(객체)
Java
복사