예제 1)
package chapter01;
public class VariableUseExample {
public static void main(String[] args) {
// 변수 선언과 동시에 초기화
int hour = 3; // hour 변수에 값 3 저장
int minute = 5; // minute 변수에 값 5 저장
System.out.println(hour + "시간 " + minute + "분"); // hour, minute 값 출력
// totalMinute 변수 선언과 동시에 초기화
int totalMinute = (hour * 60) + minute; // totalMinute = (3 * 60) + 5; hour 값 : 3, minute 값 : 5
System.out.println("총 " + totalMinute + "분"); // totalMinute 값 출력
}
}
예제 2)
package chapter01;
public class VariableExchangeExample {
public static void main(String[] args) {
// 변수 선언과 동시에 초기화
int x = 3; // x에 값 3 저장
int y = 5; // y에 값 5 저장
System.out.println("x : " + x + ", y : " + y); // x, y 값 출력
int temp = x; // temp라는 변수에 x 값 3 저장
x = y; // x에 y 값 5 저장
y = temp; // y에 temp값 3 저장
System.out.println("x : " + x + ", y : " + y); // x, y 값 출력
}
}
변수 : 값을 저장하는 메모리 번지에 붙인 이름
변수 선언 : 변수에 어떤 타입의 데이터를 저장할지, 변수 이름이 무엇인지 결정
변수 사용 : 변수의 값을 읽거나 변경
변수 사용 범위 : 변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지 사용 가능
리터럴(Literal) : 소스 코드에서 프로그래머에 의해 직접 입력된 값
2진수 : 0b 또는 0B로 시작, 0과 1로 구성
8진수 : 0으로 시작, 0~7로 구성
10진수 : 소수점이 없는 0 ~ 9 숫자로 구성
16진수 : 0x 또는 0X로 시작, 0 ~ 9 숫자와 A, B, C, D, E, F, 또는 a, b, c, d, e, f로 구성
기본 타입 (Primitive Type)
- 정수 타입(Integer) : 4byte
- byte : 1byte = 8bit
- short : 2byte = 16bit
- int : 4byte = 32bit (기본)
- long : 8byte = 64bit
- char(문자형) : 2byte = 16bit / 작은 따옴표( ' )로 감싼 문자리터럴을 저장
- 실수 타입 : 4byte
- float : 4byte = 32bit / 소수점 7자리까지 가능
- double : 8byte = 64bit / 소수점 15자리까지 가능
- 논리 타입 : 1byte
- boolean : true or false
참조타입(Reference Type) : 객체
- String : 큰따옴표( " )로 감싼 문자열을 저장
ASCII Code = 1byte (128개)
이스케이프 문자 정리
\t : 탭만큼 띄움 \n : 줄 바꿈(라인피드) \r : 캐리지리턴 \" : " 출력 \' : ' 출력 \\ : \ 출력 \u16진수 : 16진수 유니코드에 해당하는 문자 출력
타입 변환 : 데이터 타입을 다른 데이터 타입으로 변환하는 것
byte 타입 → int 타입
int 타입 → byte 타입
double 타입 → int 타입
String 타입 → int 타입
자동 타입 변환(Promotion) : 값의 허용 범위가 작은 타입이 큰 타입으로 저장될 경우
큰 허용 범위 타입 =작은 허용 범위 타입
byte < short < int < long < float < double
float는 4byte, long는 8byte지만 float가 더 크게 출력 가능
package chapter02;
// 자동 타입 변환
public class Promotion자동타입변환 {
public static void main(String[] args) {
// 자동 타입 변환
byte byteValue =10; // byte 타입의 byteValue 변수에 값 10 저장
int intValue = byteValue; // int 타입의 intValue 변수에 byte를 int로 자동 타입 변환된 값 저장
System.out.println("intValue : " + intValue); // int로 자동 타입 변환된 변수 출력
char charValue = '가'; // char 타입의 charValue 변수에 값 '가' 저장
intValue = charValue; // intValue 변수에 char를 int로 자동 타입 변환된 값 저장
System.out.println("가의 유니코드 : " + intValue); // int로 자동 타입 변환된 변수 출력
intValue = 50; // intValue에 값 50 저장
long longValue = intValue; // long 타입의 longValue 변수에 int를 long로 자동 타입 변환된 값 저장
System.out.println("longValue :" + longValue); // long로 자동 타입 변환된 변수 출력
longValue = 100; // longValue 변수에 값 100 저장
float floatValue = longValue; // float 타입의 floatValue 변수에 long을 float로 자동 타입 변환된 값 저장
System.out.println("floatValue : " + floatValue); // float로 자동 타입 변환된 변수 출력
floatValue = 100.5F; // floatValue 변수에 값 100.5F 저장
double doubleValue = floatValue; // double 타입의 doubleValue 변수에 float를 double로 자동 타입 변환된 값 저장
System.out.println("doubleValue : " + doubleValue); // double로 자동 타입 변환된 변수 출력
}
}
강제 타입 변환(Casting) : 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나누어 저장
캐스팅 연산자 괄호 ( ) 사용 : 괄호 안이 나누는 단위
ex ) int intValue = 10;
byte byteValue = (byte) intValue; // int를 byte로 강제변환
package chapter02;
// 강제 타입 변환
public class Casting강제타입변환 {
public static void main(String[] args) {
// 허용 범위 타입
// byte < short < int < long < float < double
// 강제 타입 변환
int intValue = 44032; // int 타입의 intValue 변수에 값 44032 저장
char charValue = (char) intValue; // char 타입의 charValue 변수에 int를 char로 강제 타입 변환된 값 저장
System.out.println(charValue); // 강제 변환된 값 출력
long longValue = 500; // long 타입의 longValue 변수에 값 500 저장
intValue = (int) longValue; // intValue 변수에 long을 int로 강제 타입 변환된 값 저장
System.out.println(intValue); // 강제 변환된 값 출력
double doubleValue = 3.14; // double 타입의 double 변수에 값 3.14 저장
intValue = (int) doubleValue; // intValue 변수에 double를 int로 강제 타입 변환된 값 저장
System.out.println(intValue); // 강제 변환된 값 출력
}
}
- 연산
- 피연산자가 모두 숫자일 경우 덧셈 연산
- 피연산자 중 하나가 문자열일 경우 나머지 피연산자도 문자열로 자동 변환, 문자열 결합 연산
ex )
숫자 + 숫자 → 덧셈 연산 → 숫자
int value = 3 + 7; → int value = 10;
"문자열" + 숫자 → "문자열" + "숫자" → 결합연산 → "문자열숫자"
String str = "3" + 7; → String str = "3" + "7"; → String str = "37";
숫자 + "문자열" → "숫자" + "문자열" → 결합연산 → "숫자문자열"
String str = 3 + "7"; → String str = "3" + "7"; → String str = "37";
Scanner : 키보드에서 입력된 내용을 문자열로 읽음
Scanner scanner = new Scanner(System.in)
// Scanner scanner : Scanner 타입의 변수 scanner 선언
// new Scanner(System.in) : 시스템의 입력 장치로부터 읽는 Scanner를 생성하는 코드
scanner.nextLine(); // Enter키 이전까지 입력된 문자열 읽으며, Enter 키 입력 전까지 대기
예제 ) 키보드에서 입력된 내용을 문자열로 얻기
package chapter02;
import java.util.Scanner;
public class 키보드에서입력된내용을문자열로얻기Scanner {
public static void main(String[] args) {
//Scanner 변수 설정
// new Sc 입력 후 ctrl + space -> 자동으로 import 생성
Scanner scanner = new Scanner(System.in); // 생성된 Scanner를 변수 scanner에 저장
// ㄴ변수 선언 ㄴ시스템의 입력 장치로부터 읽는 Scanner 생성
int inputNum = scanner.nextInt();
System.out.println("입력된 내용은 : " + inputNum);
String inputData;
while(true) { // true 일 때 계속 진행
inputData = scanner.nextLine(); // 읽은 문자열을 String 변수 inputData에 저장
// ㄴenter 이전까지 입력된 문자열을 읽음
System.out.println("입력된 문자열 : \\"" + inputData + "\\"");
if(inputData.equals("q")) { // q 입력시 종료
break;
} // if문
} // while문
System.out.println("종료");
} // main 메소드
}
- 형식화된 문자열 정리
- 정수 %d : 정수 ex) 123 %6d : 6자리 정수, 왼쪽 빈자리 공백 ex) 123 %-6d : 6자리 정수, 오른쪽 빈자리 공백 ex) 123 %06d : 6자리 정수, 왼쪽 빈자리 0채움 ex) 000123
- 실수 %10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 공백 ex) 123.45 %-10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 오른쪽 빈자리 공백 ex) 123.45 %010.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 0채움 ex) 0000123.45
- 문자열 %s : 문자열 ex) abc %6s : 6자리 문자열, 왼쪽 빈자리 공백 ex) abc %-6s : 6자리 문자열, 오른쪽 빈자리 공백 ex) abc
- 특수문자 \t : 탭(tab) \n : 줄 바꿈 %% : %
Integer.paraseInt( ) : 문자열을 정수 int 타입으로 변환
Double.parseDouble( ) : 문자열을 실수 double 타입으로 변환
System.out.println( ) : 괄호 안의 내용을 출력, 행을 바꿈(다음줄로 넘어감)
System.out.print( ) : 괄호 안의 내용을 출력
System.out.printf( ) : 괄호 안의 첫 번째 문자열 형식대로 내용 출력
ex) System.out.printf("이름 : %s, 나이 : %d", "김보리", 1);
printf( ) 메소드 사용방법
package chapter02;
public class Printf메소드사용하기 {
public static void main(String[] args) {
/*
* 형식화된 문자열 정리
정수
%d : 정수 ex) 123
%6d : 6자리 정수, 왼쪽 빈자리 공백 ex) ___123
%-6d : 6자리 정수, 오른쪽 빈자리 공백 ex) 123___
%06d : 6자리 정수, 왼쪽 빈자리 0채움 ex) 000123
실수
%10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 공백 ex) ____123.45
%-10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 오른쪽 빈자리 공백 ex) 123.45____
%010.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 0채움 ex) 0000123.45
문자열
%s : 문자열 ex) abc
%6s : 6자리 문자열, 왼쪽 빈자리 공백 ex) ___abc
%-6s : 6자리 문자열, 오른쪽 빈자리 공백 ex) abc___
특수문자
\\t : 탭(tab)
\\n : 줄 바꿈
%% : %
*/
int value = 123;
System.out.printf("상품의 가격 : %d원 \\n", value); // 정수 출력
System.out.printf("상품의 가격 : %6d원 \\n", value); // 6자리 정수, 왼쪽 빈자리 공백 ex) ___123
System.out.printf("상품의 가격 : %-6d원 \\n", value); // 6자리 정수, 오른쪽 빈자리 공백 ex) 123___
System.out.printf("상품의 가격 : %06d원 \\n", value); // 6자리 정수, 왼쪽 빈자리 0채움 ex) 000123
double area = 3.14159 * 10 * 10;
System.out.printf("반지름이 %d인 원의 넓이 : %10.2f \\n", 10, area); // 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 공백 ex) ____123.45
String name = "홍길동";
String job = "도적";
System.out.printf("%6d | %-10s | %10s\\n", 1, name, job);
// %6d : 6자리 정수, 왼쪽 빈자리 공백 ex) ___123
// %-10s : 10자리 문자열, 오른쪽 빈자리 공백 ex) 홍길동_______
// %10s : 10자리 문자열, 왼쪽 빈자리 공백 ex) ________도적
}
}
키보드에서 입력된 내용을 문자열로 얻기 (Scanner 이용).
package chapter02;
import java.util.Scanner;
public class 키보드에서입력된내용을문자열로얻기Scanner {
public static void main(String[] args) {
//Scanner 변수 설정
// new Sc 입력 후 ctrl + space -> 자동으로 import 생성
Scanner scanner = new Scanner(System.in); // 생성된 Scanner를 변수 scanner에 저장
// ㄴ변수 선언 ㄴ시스템의 입력 장치로부터 읽는 Scanner 생성
int inputNum = scanner.nextInt();
System.out.println("입력된 내용은 : " + inputNum);
String inputData;
while(true) { // true 일 때 계속 진행
inputData = scanner.nextLine(); // 읽은 문자열을 String 변수 inputData에 저장
// ㄴenter 이전까지 입력된 문자열을 읽음
System.out.println("입력된 문자열 : \\"" + inputData + "\\"");
if(inputData.equals("q")) { // equals : String 문자 비교할 때 사용 q 입력시 종료
break;
} // if문
} // while문
System.out.println("종료");
} // main 메소드
}
'IT > 자바' 카테고리의 다른 글
자바 정리 - 연산자, 조건문 (0) | 2021.11.30 |
---|---|
자바 정리 - 연산자 (0) | 2021.11.30 |
자바 정리 - 기초 (0) | 2021.11.30 |
[이클립스] 단축키 정리 (0) | 2021.11.30 |
[이클립스] exerd 설치방법 (0) | 2021.11.25 |
댓글