그림으로 배우는 자바 chapter 4까지
자료구조 수업 시간에, 갑자기 시험 비슷한 실습을 봤고. 수도코드를 자바로 프로그래밍을 했다.
2년 전, 자바 프로그래밍을 들은 뒤 자바는 처음이므로 제대로 짤 수가 없었다.
천리길도 한 걸음부터.
2년 전에 공부했던 『그림으로 배우는 자바프로그래밍』을 다시 빌렸다. 그리고 『Do it! 자료구조와 함께 배우는 알고리즘 입문』 을 빌려왔다.
4학년이 되어서야 자료구조를 듣게 되었지만, 시기 상관없이 기회로 삼아 열심히 해보자.
직접 컴파일하기.
- 소스 파일 저장 (ex : 파일 제목 Sample.java)
- 컴파일러를 실행시켜 컴파일하기
javac Sample.java
- 인터프리터 동작시켜 프로그램을 실행
java Sample1
※이클립스 단축키 fn +command + shift + f11을 누르면 실행이된다.
java의 기본
출력 방법 이해하기
System.out.println
이라는 문자열에 주목.
System.out
은 표준 출력(standard output)이라고 불리는 컴퓨터 장치와 연결된 단어이다.
‘표준 출력’ 이란 ‘지금 사용하고 있는 컴퓨터 화면 장치’를 뜻한다.
println
은 그 화면에 문자열을 프린트(표시)하라는 의미이다.
따라서 System.out.println
은 시스템에게 문자열을 ‘화면’에 출력하라고 지시하는 것이다.
※ print는 문자열이 이어져서 출력된다.
클래스에 대한 설명은 -> 8장에서.
짚고 넘어갈 건, Java 코드는 하나 이상의 클래스로 구성된다.
문자와 숫자
**리터럴이란 ? ** `일정한 '값'을 나타내는 데 이용되는 Java의 단어 같은 것들’ ex) 문자 리터럴, 문자열 리터럴, 숫자(정수・부동 소수 리터럴)
**Q) 토큰이란 ? ** ‘단어’, 즉 ‘특정 의미를 가진 문자(또는 조합)’를 Java에서는 토큰(token)이라고 부른다. 토큰은 그 기능에 따라 다음과 같은 종류로 분류할 수 있다.
- 리터럴
- 키워드
- 식별자
- 연산자
- 구분자(쉼표 등)
Q) 문자 리터럴 ? -> (하나의) 문자, 문자열(스트링) . 이 두 종류의 리터럴을 구분하여 다룬다.
Q) 이스케이프시퀀스란? 특수 문자를 표현할 때에는 그 문자 앞에 \를 붙여서 ‘하나의 문자’로 만든다. 이를 이스케이프 시퀀스 라고 한다.
Q) 숫자 리터럴
- 8진수 …… 숫자 앞에 0을 붙인다.
- 16진수 …… 숫자 앞에 0x를 붙인다.
변수
변수의 ‘이름’이 되는 식별자.
변수를 처리하려면
- 변수에 ‘이름(name)’을 붙인다.
- 변수의 ‘형(type)’을 지정한다.
변수의 이름으로 사용할 수 없는 예시
- 12a <——- 숫자로 시작할 수 없다.
- return <——- java에서 예약한 키워드는 사용할 수 없다.
- is-a <—— 특수문자는 사용할 수 없다.
Java의 기본형
- boolean
- char: 2바이트 문자(\u0000~\uffff)
- byte: 1바이트 정수 (-128~127)
- short 2바이트 정수 (-32768~32767)
- int 4바이트 정수
- long 8바이트 정수
- float 4바이트 단정도 부동 소수
- double 9 바이트 단정도 부동 소수
변수 초기화
변수를 선언했을 때, 동시에 변수에 값을 저장하기
가 가능하며. 이러한 처리를
변수를 초기화시킨다
고 한다.
키보드 입력
import java.io. *;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
//문자열을 변환하여 int 형의 변수에 저장
//int num = Interger.parseInt(str);
System.out.println(str + "(이) 입력되었습니다.");
}
}
여기서 등장한 ‘System.in’라는 문장은 표준 입력이라는 장치와 연결되어 있다.
표준 입력이란 일반적으로 컴퓨터의 ‘키보드’를 의미한다.
연산자.
c랑 거의 비슷하다. 문자열 연결 연산자는 ‘+’ 증가, 감소 연산자는 ‘++’,’–’ 후위 증가 연산자, ‘a++’, 대입 후에 증가연산자 사용 전위 증가 연산자, ‘++a’, 대입 전에 증가연산자 사용
복합연산자
ex) a+=b;
a+b의 값을 a에 대입한다.
연산자 우선순위
형 변환
큰 사이즈의 형 변환
작은 데이터 형 변수를 큰 데이터형 변수에 대입가능
작은 사이즈의 형 변환
-> 명시적으로 형을 변화시키기. ex)int inum = (int)dnum;
다른 형끼리 연산하기
두 연산자의 크기를 비교하여 그 중에서 큰 데이터형으로 형 변환시킨 후, 연산을 수행
같은 형끼리 연산하기
ex)
int num1= 5;
int num2 = 4;
double div = num1 / num2;
System.out.println("5/4는" + div + "입니다.";
이걸 실행하면 5/4는 1.0입니다. 1.25라는 값을 얻기 위해서는 double div = (double) num1/(double)num2; 이렇게 해야한다. double 형으로 된 결과값을 얻으려면 두 개의 피연산자 중에서 적어도 1개의 피연산자를 캐스팅 연산자로 형 변환 해야한다.
연습문제 4번 풀이
import java.io. *;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("삼각형의 밑변과 높이를 입력하십시오.");
String bottom = br.readLine();
String height = br.readLine();
int bottom2 = Integer.parseInt(bottom);
int height2 = Integer.parseInt(height);
double area = (bottom2 * height2)/(double)2 ;
System.out.println("삼각형의 넓이는"+ area + "입니다.");
}
}
참고자료
그림으로 배우는 자바, 영진닷컴