자바 프로그래밍 기초
이유빈 |
클래스
- 자바와 같은 객체 지향 언어의 기본적인 빌딩 블록
-
클래스들이 모여서 하나의 자바 프로그램이 됨
public class Add { ... ... }
클래스와 소스
- 자바에서 소스 파일 이름은 항상 public이 붙은 클래스의 이름과 동일해야됨
- 위의 소스 파일이름도 반드시 Add.java여야 함
- 참고사항
- 하나의 소스 파일 안에는 하나의 클래스만 있는것이 바람직함
//파일의 이름은 Add.java여야 함 public class Add { ... ... }-
그러나 하나의 소스 파일 안에 여러 개의 클래스가 들어 있을 수 있음.
public class Add { ... ... } class Add2 { ... ... } - 소스 안에 public 클래스가 하나 있다면 반드시 소스 파일의 이름은 public 클래스와 일치해야 하며 다른 클래스는 public 클래스가 아니어야 함
- 하나의 소스 파일 안에 public 클래스가 2개 이상 있으면 컴파일 오류
//Add.java public class Add { ... ... } /* 오류 발생 public class Add2 { ... ... } */ -
하나의 소스 파일 안에 public 클래스가 없을 경우, 소스 파일 안에 포함된 어떤 클래스의 이름으로 해도 상관 없음
//Add1.java 또는 Add2.java 가능 class Add1 { ... ... } class Add2 { ... ... }
메소드
- 특정한 작업을 수행하는 코드의 묶음
-
C언어로 보자면 “클래스 안에 정의된 함수”
public static void main(String[] args) { ... System.Out.println(sum); }
-
-
메소드 호출
public class Add2 { public static void main(String[] args) { ... z = addition(100, 200) //addtion 메소드 호출 } public static int addtion(int x, int y) { //넘겨 받은 값으로 x+y 실행 int sum = x + y; return sum; //z로 sum값 리턴 } }
자바 프로그램의 일반적인 구조
- 하나의 소스 파일에 하나의 클래스
- 하나의 클래스 안에 여러 개의 메소드
- 하나의 메소드 안에 여러 개의 문장
- 클래스 > 메소드 > 문장
문장
- 사용자가 컴퓨터에게 작업을 지시하는 단위
-
프로그램을 이루는 가장 기초적인 단위
sum = x + y;
주석
/* 여러 줄을
주석 처리 할 때 */
//한 줄을 주석 처리 할 때
변수와 자료형
-
변수 - 데이터를 담아두는 상자
int x; -
자료형(data type)
- 변수에 저장되는 데이터의 타입
-
기초형 - 실제값이 저장

- 정수형 - byte, short, int, long
- 실수형 - float, double
- 논리형 - boolean
- 문자형 - char
- 하나의 문자 저장 가능
-
모든 문자를 2바이트의 유니코드로 나타냄
char ch1 = '가'; //2바이트 char ch2 = '\uac00'; //'가' char ch3 = 'a' //2바이트
-
참조형 - 실제 객체를 가리키는 주소 저장
- 클래스, 인터페이스, 배열
-
- 변수에 저장되는 데이터의 타입
식별자 만들기(변수 이름..?)
- 영문자, 숫자, 밑줄문자_로 이루어짐. 한글도 가능
- 첫 번째 문자는 반드시 알파벳 또는 밑줄문자_여야함. 숫자X
- %, &, # 사용불가. 단, $과 _은 사용가능
- 대소문자를 구별함
- index ≠ INDEX ≠ Index
- 자바 언어 키워드(if, while, true, false, null, …)와 똑같은 이름 X
-
식별자의 예
//올바른 예 int sum; long employee_id; //_사용 가능 class Sprite10 { } //숫자 사용 가능 void get_$() { } //문자 사용가능 //틀린 예 int 1stPrizeMoney; //첫 글자가 숫자 double super; //자바 키워드 int #ofComputer; //허용되지 않는 기호 class %_of_Money { } //허용되지 않는 기호 -
식별자의 관례 (필수는 아님)
종류 사용 방법 예 클래스명 각 단어의 첫 글자는 대문자 StaffMember, ItemProducer 변수명, 메소드명 첫 단어의 첫 글자는 소문자 두 번째 단어부터는 단어의 첫 글자는 대문자 width, payRate, acctNumber, getMonthDays(), fillRect() 상수 모든 글자를 대문자로 MAX_NUMBER
자바 키워드

상수와 리터럴
상수(constant) 와 리터럴(literal)이란?
- 상수(constant)
-
프로그램이 실행하는 동안 값이 변하지 않는 수 또는 변경 불가능한 수
final double PI = 3.141592; -
변하지 않는 변수 / 메모리 위치(공간)이며, 메모리 값을 변경할 수 없음.
-
- 리터럴(literal)
- x = 100; 에서 100과 같이 소스 코드에 직접 쓰여 있는 값
- 변수에 넣는 변하지 않는 데이터 / 메모리 위치(공간) 안에 저장되는 값
- 정수형, 부동소수점형, 문자형 등의 여러 가지 타입이 존재
- 10진수: 14, 16, 17
- 8진수: 012, 013, 014
- 16진수: 0xe, 0x10, 0x11
- 2진수: 0b1100 ⇒ JDK 7부터 가능
- 논리형 리터럴
- 논리형(boolean type)은 참과 거짓을 나타내는 데 사용됨
-
true 혹은 false
boolean flag = true; **boolean x = 1 < 2;** //false가 저장됨
변수 타입 추론
- Java 10부터 var 키워드 사용가능
-
지역 변수의 타입을 자동으로 추론 가능

-
- 변수 타입 추론 실패 사례
-
컴파일러가 지역 변수 유형을 추론하기에 충분한 정보가 없으면 컴파일 실패
var id = 0; //충분한 정보가 없어서 정수형으로 가정 var sum; //변수 sum의 타입을 추측할 정보가 부족함. 컴파일 오류
-
문자열(string)
-
문자들의 모임
String s1 = "Hello"; String s2 = "world!"; System.out.println(s1 + s2); //"Hello World!" 출력 int age = 20; System.out.println("내년이면 " + age + "살"); //"내년이면 20살" 출력
형변환
-
컴퓨터에서는 산술적인 연산을 하기 전에 피연산자의 타입을 통일하여야 함

-
강제적인 형변환
int x = 3; double y = (double) x; //x를 double로 형변환하여 y에 저장
콘솔에서 입력받기
- 콘솔에서 읽는 것은 System.in을 사용
-
System.in은 키보드에서 바이트를 읽어서 우리에게 전달
import java.util.Scanner; Scanner sc = new Scanner(System.in);
import 문장
-
자바에서 모든 클래스는 사용하기 전에 import되어야 함

-
이클립스에서의 import
- 이클립스에서는 각종 import를 쉽게 할 수 있는 기능을 제공함
-
오류가 표시된 문장에 커서를 올리고 잠시 있으면, 해결책을 제공하는 Quick Fix 기능을 이용할 수 있다

- 소스 파일 전체에 등장하는 모든 클래스를 import하려면 Shift+Ctrl+O를 누르면 됨
Scanner 클래스
- Scanner 클래스는 키보드로부터 바이트 값을 받아서 분리자를 이용 하여 각 바이트들을 토큰(token)으로 분리한다
- 특별한 지정이 없으면 분리자는 공백문자(‘ ’, ‘\n’, ‘\t’)이다

String name = sc.next(); //한 단어(토큰) "Kim"을 읽는다.
int age = sc.nextInt(); //문자열 "20"을 정수 20으로 변환하여 반환한다.
double weight = sc.nextDouble(); //문자열 "84.0"을 실수 84.0으로 변환하여 반환한다.
String line = sc.nextLine(); //문자열 "Kim 20 84.0"이 반환된다.
//한줄 전체를 String으로 반환함
//사용시 주의 필요
/*
Scanner 클래스의 메서드를 사용할 때, nextLine() 메서드를 주의하자!
nextLine() 앞에 공백문자를 사용할 때, 특히 Enter를 사용할 때
웬만하면 nextLine()을 한번 더 써주어서 공백문자를 없애주자.
*/
수식과 연산자
- 수식 = 피연산자 + 연산자
- 연산자 = 특정한 연산을 나타내는 기호
- 피연산자 = 연산의 대상

-
연산자

-
산술 연산자

-
복합 대입 연산자

-
관계 연산자

-
논리 연산자

-
비트 연산자

-
비트 이동 연산자

-
조건 연산자

absolute_value = (x > 0) ? x: -x; //절대값 계산 max_value = (x > y) ? x: y; //최대값 계산 min_value = (x < y) ? x: y; //최소값 계산
요약
- 클래스는 자바와 같은 객체 지향 언어의 기본적인 빌딩 블록이다. 클래스들이 모여서 하나의 자바 프로그램이 된다.
- 메소드는 특정한 작업을 수행하는 코드의 묶음이다.
- 문장은 사용자가 컴퓨터에게 작업을 지시하는 단위이다.
- 변수는 데이터를 담아두는 상자로 생각할 수 있다.
- 자바에는 크게 나누어서 기초형과 참조형의 자료형이 있다.
- 기초형은 다시 정수형, 실수형, 문자형, 논리형으로 분류할 수 있고, 참조형에는 클래스, 배열, 인터페이스가 있다.
- System.in과 Scanner 객체를 이용하여 콘솔에서 정수나 실수, 문자열을 읽는다.
- import 문장은 다른 클래스를 포함시키는 문장이다.
- 자바는 +, -, *, /, % 등의 산술 연산자를 제공한다.
- 자바는 <, >, <=, >= 등의 관계 연산자를 제공한다.
-
자바는 &&, , !와 같은 논리 연산자를 제공한다.
댓글