변수란? 프로그래밍에서 처음에 사용한 값과 다르게 변하는 값을 변수라 한다.
자료형 + 변수명
변수명 _ 제약사항
변수 이름은 영문자(대문자,소문자)나 숫자를 사용할 수 있고 구분하며, 특수 문자 중에는 $,_ 만 사용할 수 있다.
변수 이름은 숫자로 시작할 수 없다. ex) 27day,10eight
자바에서 이미 사용 중인 예약어는 사용할 수 없다. ex) while,for,int,if 와 같은....
두 단어 이상의 변수명을 표현할 때 두 번째 단어부터 철 글자를 대문자로 표기하는 방법
고안자인 찰스 시모니가 헝가리인이여서 헝가리안 표기법이라 불림
변수를 표기할 때 앞에 접두어로 자료형을 알아볼 수 있도록 표기
ex) int nNum , float fNum, argument of String -> args
| Data Type | prefix | Example |
|---|---|---|
| boolean | b | bContinue |
| int | n | nIndex |
| short | n | nNum |
| char | c | cFirstInitial |
| String | s(str) | sCustomerName(strCustomerName) |
자료형 + 변수명
선언과 초기화
int level;
level = 10;
int level = 10;
| 자료형 | 키워드 | 크기 | 기본값 | 표현 범위 |
|---|---|---|---|---|
| 논리형 | boolean | 1bit | false | |
| 문자형 | char | 2byte | \u000 | |
| 정수형 | byte | 1byte | 0 | |
| 정수형 | short | 2bye | 0 | |
| 정수형 | int | 4byte | 0 | |
| 정수형 | long | 8byte | 0 | |
| 실수형 | float | 4byte | 0.0 | |
| 실수형 | double | 8byte | 0.0 |
정수형 int의 선언 & 초기화
int num = 10; // 선언과 동시에 초기화
int num2; // 4byte의 메모리 공간을 할당할 것이고 그 공간의 이름을 num2으로 선언
num2 = 10; // num2 변수명을 가진 메모리 공간의 데이터를 비우고 10의 값을 대입 (초기화)
System.out.println(num);
final int NOW_AGE = 20; // 상수 자료형 앞에 final이 붙는다.
// 상수는 상수명을 무조건 대문자로 사용을 한다
NOW_AGE = 30; // 한 번 설정된 값은 변하지 않는다 (Error)
System.out.println(NOW_AGE); //20
정수 = int, 실수 = double
long과 float
정수 자료형
long
long num = 12345678900L;
실수 자료형
Float
float fnum = 3.14F;
상수 : 항상 변하지 않는 값 final 예약어로 선언
final double PI = 3.14;
final int MAX_NUM = 100;
형 변환이란? 각 변수의 자료형이 다를때 자료형을 같게 바꾸는 것을 의미
업캐스팅, 다운캐스팅
값이 작은 범위에서 큰범위로의 형 변환
묵시적 형 변환(형 변환 타입 생략 가능)
명시적 형변환과 묵시적 형변환의 예
char char_a = 'a';
int num = (int)char_a; //UpCasting - 묵시적 형변
System.out.println(num);
char char_b = (char)(num+1); //DownCasting - 명시 꼭해야함
System.out.println(char_b);
``
>답 97
>답 b
문제 1)
```java
double kor = 87.5;
double eng = 95.7;
double math = 80.5;
int total = 0; //정수
double avg = 0; // 실수
total = (int)kor +(int)eng+(int)math;// 실수 > 정수 = DownCasting, 강제 형변 필요
avg = (double)total/3.0;
System.out.println("합계: "+total);
System.out.println("평균: "+ avg);
답 : 합계: 262
평균: 87.333333333333
why? (왜 그런지 이유를 늘 생각하기)
kor, eng, math 각변수를 강제 형변환 시킨뒤 (소수점 날리기)
total / 3
(double)total/3 =>3이 묵시적 형변환으로 3.0 또는
total / 3.0 =>total이 묵시적 형변환
변수에 값을 대입하는 연산자
int age = 24;
+,-
+,-,*,/,%
++,--
++ : 항의 값에 1을 더한다
-- : 항의 값에 1을 뺀다
(증감연산자) 변수 : 전위 연산자 -> 선증감 후처리
변수 (증감연산자) : 후위 연산자 -> 선처리 후증감
// > , < , >= , <= , ==, !=
AND (곱) &&
OR (합) ||
NOT (부정) !=
조건식 ? 결과1 : 결과2
조건식이 참이면 결과1을 반환, 거짓이면 결과2를 반환
int num1 = 10;
int num2 = 5;
int result = num1 > num2 ? num1*-1:num2*-1;
System.out.println(result);
결과 : -10
int num = 89;
int result2 = num / 90 == 1 ? 90
: num / 80 == 1 ? 80
: num / 70 == 1 ? 70
: 0;
System.out.println(result2);
결과 : 80
문제1)
/*
* 시험 성적을 학점으로 계산하는 프로그램을 작성하시오.
* 정수 자료형 score변수 선언
* 88점으로 초기화
* 조건
* score가 0점보다 작거나 100점보다 크면 X를 출력
* score가 90~100점이면 A학점
* score가 80~89점이면 B학점
* score가 70~79점이면 C학점
* score가 60~69점이면 D학점
* score가 0 ~ 59점이면 F학점
*/
1안
int score = 59;
if(score < 0 || score > 100) {
System.out.println("X");
}
else if(score > 89 && score < 101) {
System.out.println("점수(" + score + "): A학점" );
}
else if(score > 79 && score < 90) {
System.out.println("점수(" + score + "): B학점" );
}
else if(score > 69 && score < 80) {
System.out.println("점수(" + score + "): C학점" );
}
else if(score > 59 && score < 70) {
System.out.println("점수(" + score + "): D학점" );
}
else if(score > 0 && score < 60) {
System.out.println("점수(" + score + "): F학점" );
}
2안
int score = 60;
char grade =
score < 0 || score > 100 ? 'X'
: score > 89 && score < 101 ? 'A'
: score > 79 && score < 90 ? 'B'
: score > 69 && score < 80 ? 'C'
: score > 59 && score < 70 ? 'D'
: 'F';
System.out.println("점수(" + score + "): " + grade+"학점");
3안
int score = 101;
char grade =
score < 0 || score > 100 ? 'X'
: score > 89 ? 'A'
: score > 79 ? 'B'
: score > 69 ? 'C'
: score > 59 ? 'D'
: 'F';
System.out.println("점수(" + score + "): " + grade +"학점");
심화버전) A+, B+ ~ 만들기
int score = 90;
char grade =
score < 0 || score > 100 ? 'X'
: score > 89 ? 'A'
: score > 79 ? 'B'
: score > 69 ? 'C'
: score > 59 ? 'D'
: 'F';
char plus = score > 100 || score <60 ? '\0' : score % 10 > 4 || score == 100 ? '+': '\0';
System.out.println("점수(" + score + "): " + grade + plus +"학점");
문자열 합치기
문자와 문자열은 + 연산자로 합칠 수 있다
표준입력
Scanner Class
String class
콘솔에서 키보드 입력을 받는 클래스
API에서 제공하는 java.util.Scanner class를 이용
각 자료형에 맞는 문법이 따로 존재
import java.util.Scanner;
Scanner scanner = new Scanner(System.in); //Cntl + shift + O ( 객체 생성까지 했을 때 자동완성 )
int a = scanner.nextInt();
기본적인 문법 형태