전공교재인 '명품 Java 프로그래밍'을 바탕으로 정리한 내용입니다.
<자바 프로그램의 구조>
public class Hello {
public static int sum(int n, int m) {
return n + m;
} // 메소드 1
// main() 메소드에서 실행 시작
public static void main(string[] args) {
int i = 20;
int s;
char a;
s = sum(i, 10); // 메소드 호출
a = '?';
System.out.println(a); // 문자 '?' 출력
System.out.println("Hello"); // "Hello" 문자열 출력
System.out.println(s); // 정수 s 값 30 출력
// 매소드 2
}
} // 클래스
• 클래스
자바 프로그램 작성에서 가장 기본적이면서도 중요한 것이다.
클래스 바깥에 어떤 것도 작성해서는 안된다.
class로 클래스 이름을 선언하고 { } 사이에 필드(변수)와 메소드(함수)를 작성한다.
public은 자바의 접근지정자로서 다른 모든 클래스에서 Hello를 자유롭게 사용할 수 있다는 선언이다.
• 주석문
프로그램 실행에 영향을 미치지 않는다.
프로그램에 대한 설명이나 특이사항을 자유롭게 기록하기 위함이다.
// 한 라인 주석처리
/*
여러 라인 주석처리
*/
• main() 메소드
main()은 반드시 public, static, void 타입으로 선언되어야 한다.
한 클래스에 두 개 이상의 main()을 사용하면 안된다.
public static void main(String[] args {
...
}
• 메소드
클래스의 멤버 함수를 자바에서는 메소드라고 부른다.
메소드의 이름은 사용자가 지정한다.
public static int sum(int n, int m) { // 매개변수 n, m
return n + m // n과 m의 합 리턴
}
메소드 sum()을 호출하는 코드
int i = 20;
s = sum(i, 10);
• 변수 선언
프로그램을 실행하는 동안 데이터를 저장하는 공간이다.
개발자가 이름을 붙이고 선언한다.
int i;
char a;
• 지역변수
메소드 내에 선언되어 사용하는 변수이다.
메소드의 실행이 끝나면 소멸된다.
int i=20; // 변수 i의 선언과 동시에 20으로 초기화
• 문장
자바에서 모든 문장은 ' ; '로 끝나야 한다.
• 화면 출력
프로그램에서 사용하는 데이터를 화면에 출력하기 위해 사용한다.
println()은 출력 후 다음 행으로 이동하지만, print()는 다음 줄로 넘어가지 않는다.
System.out.println("Hello") // "Hello" 문자열 출력
<식별자>
식별자란 클래스, 변수, 상수, 메소드 등에 붙이는 이름을 말한다.
if, while, class 등의 자바 언어 키워드는 식별자로 사용할 수 없다.
<자바의 데이터 타입>
자바 언어는 총 9개의 데이터를 다룰 수 있다.
기본 타입 : 8개
레퍼런스 타입 : 1개
• 문자열
자바에서 문자열은 기본 타입에 속하지 않고 JDK에서 제공하는 String 클래스를 이용한다.
char는 문자이고 String은 문자열이다.
• 변수 선언
데이터 타입과 이름으로 변수를 선언한다.
int(변수) price(변수 이름);
같은 타입의 변수를 여러 개 선언하려면 콤마를 이용한다.
char c1, c2, c3; //3개의 문자 변수 c1, c2, c3 선언
변수 선언과 동시에 초깃값을 지정할 수 있다.
int radius = 10;
변수를 선언한 후에 변수에 값을 저장하고 읽을 수 있다.
radius = 10 * 5; // 변수 radius에 10*5의 결과 50 저장
c1 = 'r'; // 변수 c에 문자 'r' 저장
weight = weight + 5.0; // 변수 weight의 값을 읽고 5.0을 더해 weight에 다시 저장
• 리터럴
프로그램에 직접 표현한 값을 말한다.
• 정수 리터럴
10진수, 8진수, 16진수, 2진수 리터럴
정수 리터럴은 int형으로 컴파일된다.
int n = 15; // 십진수 15
int m = 015; // 015는 8진수로서 십진수 13
int k = 0x15; // 0x15는 16진수로서 십진수 21
int b = 0b0101; // 0b0101은 2진수로서 십진수 5
long 타입 리터럴은 숫자 뒤에 L또는 l를 붙여 표시한다.
long g = 24L; // 24L은 24l과 동일
• 실수 리터럴
소수점 형태나 지수 형태로 표현한 실수이다.
실수 리터럴은 double 타입으로 컴파일된다.
double d = 0.1234;
double e = 1234E-4;
숫자 뒤에 f(float)나 d(double)을 명시적으로 붙이기도 한다.
float f = 0.1234f; // f = 0.1234로 하면 컴파일 오류
double w = .1234D; // .1234D와 .1234는 동일
• 문자 리터럴
단일 인용부호(' ')로 문자를 표현하거나 \u 다음에 문자의 유니코드 값을 사용해 표현한다.
변수와 함께 쓰면 다음과 같다.
char a = 'A';
char b = '글';
char c = \u0041; // 문자 'A'의 유니코드 값(0041) 사용
• 특수 문자 리터럴
• 논리 리터럴과 boolean 타입
논리 리터럴은 true, false 두 개뿐이다.
boolean 타입의 변수에 직접 치환하거나 조건문에 사용한다.
boolean a = true;
boolean b = 10 > 0; // 10>0가 참이므로 b 값은 true
boolean c = 1; // 타입 불일치 오류
while(true) { // 자바에서 무한 루프
}
• 기본 타입 이외의 리터럴
1. null 리터럴
null은 기본 타입에 사용될 수 없고 객체 레퍼런스에 대입된다.
int n = null; // 오류. 기본 타입에 null 값을 지정할 수 없다.
String str = null; // 정상
2. 문자열 리터럴
"Hello"와 같이 이중 인용부호로 표현한다.
문자열 리터럴은 String 객체로 자동 처리된다.
String str = "Good";
• var 키워드를 사용하여 변수 타입 생략
Java 10부터 지역 변수를 선언할 때 변수의 타입 대신 var 키워드를 선언할 수 있다.
(컴파일러가 알아서 판단한다.)
var price = 200; // Price는 int 타입으로 결정
var name = "kitae"; // name은 String 타입으로 결정
var name; // 컴파일 오류. 변수 name의 타입을 추론할 수 없음
• 상수
상수를 만드는 방법은 선언 시 final 키워드를 사용하면 된다.
실행 중 값을 변경하는 것이 불가능하다.
final(상수 선언) double(데이터 타입) PI(상수 이름) = 3.141592;(초기화)
• 타입 변환
타입 변환은 변수나 상수 혹은 리터럴의 타입을 다른 타입으로 바꾸는 것을 말한다.
long m = 25; // 리터럴 25는 int 타입. 25가 long 타입으로 자동 변환된다.
double d = 3.14 * 10; // 실수 연산을 하기 위해 10이 10.0으로 자동 변환된다.
• 강제 타입 변환
큰 타입이 작은 타입으로 변환할 때 자동 타입 변환이 되지 않는다.
이때 개발자가 강제로 타입 변환을 지시해야 한다.
하지만 강제 변환은 값 손실 우려가 있다.
int n = 300; // 변수 n에 300을 저장한다.
byte b = n; // 컴파일 오류. int 타입은 byte 타입으로 자동 변환이 안된다.
byte b = (byte)n; // ()를 이용해 n을 byte 타입으로 강제 변환시킨다. b = 44(데이터 손실)
'CS > 객체지향프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍] #6 모듈과 패키지 (0) | 2024.06.09 |
---|---|
[객체지향프로그래밍] #5 상속 (0) | 2024.04.25 |
[객체지향프로그래밍] #4 클래스와 객체 (0) | 2024.04.21 |
[객체지향프로그래밍] #3 배열 (0) | 2024.04.18 |
[객체지향프로그래밍] #2 자바 기본 프로그래밍(2) (0) | 2024.04.14 |