2.2 식별자
클래스 이름 : 대문자로 시작
변수, 메소드 이름 : 소문자로 시작
상수 : 이름 전체 대문자 표기
2.3 자바의 데이터 타입
- 자바 기본타입
논리타입 | boolean | 1bit, True of False |
문자타입 | char | 2byte |
정수타입 | byte | 1byte |
short | 2byte | |
int | 4byte | |
long | 8byte | |
실수타입 | float | 4byte |
double | 8byte |
8bit = 1byte
- 문자열
문자열은 기본 타입에 속하지 않음
JDK에서 제공하는 String 클래스 이용
문자열과 기본 타입은 + 연산 실행 가능
→ 기본 타입의 값이 문자열로 바뀌고 두 문자열이 연결된 새로운 문자열 생성
(+ 연산자를 재정의해서 사용)
- 변수 선언
변수 : 데이터를 저장하는 공간
변수 선언시 타입 크기의 메모리 할당되며, 프로그램은 실행 중에 값을 쓰고 읽는 공간으로 사용
(int형 변수 선언시 4byte 공간 할당)
- 리터럴
리터럴(literal) : 프로그램에 직접 표현한 값
* 강제 형변환
long : 숫자 뒤 'L' 또는 'ㅣ'
float : 'f' 또는 'F'
double : 'd' 또는 'D'
특수문자 리터럴
\b : 백스페이스(backspace)
\t : 탭(tab)
\n : 라인피드(line feed)
\f : 폼피드(form feed)
\r : carriage return
\" : 이중 인용부호(double quote)
\' : 단일 인용부호(single quote)
\\ : back slash
자바는 숫자로 참, 거짓 사용 불가
public class ex {
public static void main(String[] args) {
boolean a = true;
boolean b = 10>0;
// boolean c = 1;
while(true){
System.out.println("출력 가능");
}
/*
while(1){
System.out.println("출력 불가");
}
*/
}
}
|
null 리터럴 : 값을 아직 할당하지 않음 표시
기본타입에는 사용 불가하고 객체 레퍼런스에 대입 (String str = null; -- 문자열 초기화 가능)
문자열은 string 클래스의 객체
var 키워드 : 미리 어떤 타입의 변수인지 선언x, 대입 되는 값에 따라 변수 타입이 달라짐
- 상수
상수 변수 선언시 final 키워드 사용
final double PI = 3.141592;
- 상수는 한 번 초기화 하면 변경 불가
- 타입 변환
변수나 상수 혹은 리터럴 타입을 다른 타입으로 변경
1) 작은 타입 변환
public class ex {
public static void main(String[] args) {
long m = 25; // 리터럴 25는 int 타입. 25가 long 타입으로 자동 변환
double d = 3.14*10; // 실수 연산을 하기 위해 10 → 10.0으로 자동 변환
}
}
|
2) 강제 타입 변환 : 캐스팅(casting)
public class ex {
public static void main(String[] args) {
int n = 300;
// byte b = n; 컴파일 오류. int 타입은 byte 타입으로 자동 형변환x
byte b = (byte)n; // n을 byte 타입으로 강제 변환. b = 44
}
}
|
(byte) : casting으로 타입을 명시적으로 형변환
그러나 강제 변환을 하면 컴파일 오류가 발생하지 않을 뿐 300에서 256을 초과한 만큼, 즉 44(300%256=44)가 변수 b에 저장되어 데이터 손실 발생
실수를 정수로 강제 형변환 하면 소수점 이하의 손실 발생
public class ex {
public static void main(String[] args) {
double d = 1.9;
int n = (int)d; // d=1
}
}
|
2.4 자바에서 키 입력
System.in : 표준 입력 스트림
* 클래스를 사용하려면 객체를 생성해야 함
- 조건 연산
3개의 피연산자로 구성 : 삼항(ternary) 연산자라고도 함
condition ? opr2 : opr3
조건문 condition이 true이면 opr2, false이면 opr3
opr_ : 식 / 값 가능
조건연산을 이용한 두 숫자의 차의 절댓값 구하기
public class ex {
public static void main(String[] args) {
int a = 13;
int b = 29;
System.out.println("두 수의 차 : "+((a>b)?(a-b):b-a));
}
}
|
2.6 조건문
조건식의 결과는 boolean
예제 2-13
점수와 학년을 입력받아 60점 이상이면 합격, 미만이면 불합격을 출력. 4학년의 경우 70점 이상이여야 합격
import java.util.*;
public class ex {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("점수를 입력하세요(1~100) : ");
int score = scan.nextInt();
System.out.print("학년을 입력하세요(1~4) : ");
int grade = scan.nextInt();
if(score>=60){
if(grade != 4)
System.out.print("합격");
else if(score>=70)
System.out.print("합격");
else
System.out.print("불합격");
}
else
System.out.print("불합격");
scan.close();
}
}
|
- switch 문
값에 따라 여러 방향으로 분기하는 경우
switch(식) {
case 값1 :
실행문장 1;
break;
case 값2 :
실행문장 2;
break;
...
default :
실행문장 n;
}
|
1) '식' 계산
2 ) 식의 결과 값과 일치하는 case문으로 분기
3) case문의 '실행문장' 실행
4) break를 만나면 switch문을 벗어남 (break가 없으면 그냥 밑으로 내려감)
* default문은 생략 가능
실행문장은 { } 로 둘러싸지 않음
예제 2-14
입력 성적에 대한 학점 부여
import java.util.*;
public class ex {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("점수를 입력하세요(1~100) : ");
char grade;
int score = scan.nextInt();
switch (score/10){
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
default:
grade = 'D';
}
System.out.println("당신의 학점은 "+grade+" 입니다.");
scan.close();
}
}
|
break 문 : switch문을 벗어나도록 해줌
case문의 값 : 정수 리터럴, 문자 리터럴, 문자열 리터럴만 허용 (변수나 식은 사용 불가)
'Language > JAVA' 카테고리의 다른 글
[명품 JAVA programming] CHAPTER 4 클래스와 객체 (0) | 2023.03.19 |
---|---|
[명품 JAVA programming] CHAPTER 3 반복문과 배열 그리고 예외 처리(실습문제) (0) | 2023.02.24 |
[명품 JAVA programming] CHAPTER 3 반복문과 배열 그리고 예외 처리 (0) | 2023.02.19 |
[명품 JAVA programming] CHAPTER 2 자바 기본 프로그래밍(실습문제) (0) | 2023.02.10 |
[명품 JAVA programming] CHAPTER 1 자바 시작(실습문제) (0) | 2023.02.10 |