// 2021-05-18
/* 능력단위명 : 응용 SW 기초 기술 활용
* 능력단위요소 : 데이터베이스 기초 기술 활용
*/
Variable 변수
변수를 사용하는 주 목적은 같은 타입(type)의 값이
프로그램 실행시에 자주 변경되어야 할 때 변수에 담아서 활용하기 위함
1. 변수의 선언(초기화) 규칙 (★★★★★)
- 변수는 특정 블럭{} 내부 어디에서나 선언 가능
- 메소드 바디 내부에서 처음 선언되면 = 지역(local)변수
- 클래스 바디 내에서 선언되면 = 인스턴스(객체) 변수
2. 변수가 처음 선언되어지면 그 변수를 포함하고 있는 블럭내에선 절대로 재선언이 불가능(중요)
동일 변수명(이름)으로 선언 불가
3. 변수가 처음 선언될때는 반드시 변수 좌측에
변수의 타입(type) 데이터 타입이 선언되어야 한다.
4. 같은 타입의 변수는 한 라인에 ; 없이 계속 선언되어질 수 있고
,로 구분하여 마지막 변수 끝에;를 붙여준다.
5. 지역 변수는 반드시 사용전에 값이 초기화 되어야 한다.
※※※중요※※※
public class Variable {
//int number2;//인스턴스 변수
public static void main(String[] args) {
//데이터 타입 변수명 = 값;
int number , num1, num2; // 변수 선언
int num4 = 100; //변수 선언 + 초기화
number = 1000; // 변수 호출 + 값대입(초기화)
number = 1; // 값 변경
System.out.println(number);
// 동일 변수명 모두 변경 Alt + Shift + R
// 변수가 선언된 위치로 이동 Ctrl + 변수 클릭
//상수
final int PAGE_NUMBER = 10;//변수선언 + 초기화 final 수정 불가\
//리터럴
//PAGE_NUMBER = 100;
System.out.println(PAGE_NUMBER);
}
}
String
public class Variable2 {
public static void main(String[] args) {
//String 문자열, 기타줄, 바이올린 줄 현
//데이터타입 변수명 = 값;
String name = "홍길동";
// 문자열 + 문자열 ====== 연결
System.out.println("제 이름은 " + name + " 입니다.");
//계산
System.out.println(10+10);
System.out.println("제 이름은 홍길동 입니다.");
int age = 34;
//문자열 + 숫자 ====== 연결
System.out.println("제 나이는 " + age + "입니다.");
//숫자 + 문자열 ====== 연결
System.out.println(20 + "입니다.");
//숫자 + 숫자 + 문자열 === 계산 + 연결
System.out.println(20 + 10 + "입니다.");
// 문자열 + 숫자 + 숫자 + 문자열
System.out.println("문자열" + age + 10 + "입니다.");
// 문자열3410입니다.
System.out.println("문자열" + (age + 10) + "입니다.");
// 문자열44입니다.
System.out.println(3.14 + 10 + "입니다.");
}
}
데이터타입
자바에서는 변수, 상수건 그 값을 담기 위해서는
반드시 그 값의 타입에 맞는 변수를 사용해야 한다.
이를 데이터 타입이라고 한다.
데이터 타입은 (P타입, R타입으로 구분)
- Reference 참조 타입
- Primitive 기본 타입
P타입(수치형, 문자형, 논리형)
각각의 타입들은 메모리 크기가 엄격히 제한된다.
수치형
정수형 byte, short, int(기본), long
실수형 float, double(기본)
문자형 = 한글자 = A, 가, 羅, $ ...
char
논리형 = 참/거짓 = true, false = 데이터 사이즈 X
boolean
데이터 타입(수치형)
public class DataType1 {
public static void main(String[] args) {
// 메소드 바디 속에서 선언된 변수 = 지역변수
// 데이터타입 변수명 = 값;
byte byteNumber = 127;
// -128~0~127
short shortNumber = byteNumber;
// -32,768 ~ 32767
shortNumber = 32767;
int intNumber = 1000000; // 리터럴
// -2,147,483,648 ~ 2,147,483,647
intNumber = Integer.MAX_VALUE;
intNumber = Integer.MIN_VALUE;
long longNum = intNumber;
// -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
long longMin = intNumber;
longNum = Long.MIN_VALUE;
longNum = 9223372036854775807L;//롱타입 데이터 저장시 L추가
System.out.println(byteNumber);
System.out.println(shortNumber);
System.out.println(intNumber);
System.out.println(longNum);
// = 대입, == 같다
intNumber = (int) longNum;
// cast, casting, 캐스팅, 캐스트
short shortNum = (short) intNumber;
byte byteNum = (byte) shortNum;
byteNum =(byte) -13000; // 캐스팅시 값의 절삭이 발생(무한 루프)
System.out.println(byteNum); // -128
shortNum = byteNum;
//프로모션
shortNum = (short) byteNum; //기존 방식
byteNum = (byte) 100; //기존 방식
//intNumber = longNum; //캐스팅 필요
intNumber = (int) longNum; // 데이터 타입 일치화
intNumber = byteNum; //자동대입 = 프로모션
byteNum = (byte)((short)((int)(longNum)));//가능 하나 비추천
byteNum = (byte) longNum;
}
}
casting(캐스팅) / cast(캐스트)
큰 타입을 작은 타입에 대입할때 반드시 해야 하는 연산
(type)을 명기해서 값을 대입
이때 주의할 점은 상위 비트를 대입할때 작은 타입에 맞게 잘라내기 때문에
값의 변화가 올 수 있다.(무한루프 돌며 값 절삭)
프로모션
큰 타입에 작은 타입이 대입되는 것
작은 타입이 큰 타입에 자동으로 들어가는 것
값 변화 없음
실수
- float
- double(기본형)
package may18;
//실수
//float
//double(기본형)
public class DataType2 {
public static void main(String[] args) {
//데이터타입 변수명 = 값;
//3.14
double pi = 3.14;
System.out.println(pi);
int intNum = (int)pi;
System.out.println(intNum); // 3
long longNum =(long) pi;
System.out.println(longNum); // 3
pi = longNum;
System.out.println(pi); // 3.0
pi = (int) longNum;
System.out.println(pi); // 3.0
pi = Long.MAX_VALUE;
System.out.println(pi);
//float
float fNum = (float) 3.14;
float fNum2 = 3.14F;
System.out.println(fNum); // 3.14
System.out.println(fNum2); // 3.14
fNum2 = intNum;
intNum = (int)fNum;
//float long
longNum = (long)fNum;
System.out.println(Double.MAX_VALUE);
//1.7976931348623157E308
System.out.println(Long.MAX_VALUE);
//9223372036854775807
pi = Double.MAX_VALUE;
longNum = (long)pi;
System.out.println(longNum);
//9223372036854775807
/* 동일 코드
longNum = (long)Double.MAX_VALUE;
System.out.println(longNum);
*/
fNum = 3.14F + 3.14F;
fNum2 = fNum + 3.14F; //
intNum = 3 + (int)longNum;
//byte short
byte bNum = 3;
short sNum = 5;
sNum = 3 + 100;
bNum = 126 + 1;
// 작은 타입과 큰 타입 계산시엔 기본 타입 이하이면
// 기본타입으로 변환, 계산된다.
// 기본타입 이상일 경우에는 무조건 큰 타입으로 변환 후 계산됨
//진법
//8진수는 숫자0값, 16진수 숫자0x값
System.out.println(10);
System.out.println(010);
System.out.println(0x10);
}
}
실수형(float, double)
double (기본타입)
float에 값을 실수로 초기화 할때는
표식자(f,F)를 넣어 주어야 한다.(안 넣으면 컴파일 에러)
실수 값 자체가 double메모리로 만들어지기 떄문에 float 대입 불가능
같은 값이라도 실수는 정수보다 무조건 큰 타입으로 인지
또한 float은 4byte여도 long보다 큰 타입으로 인지
캐스팅 하여 대입하여야 한다.
연산시 정수는 int, 실수는 double로 변환되어 계산된다.
문자형(char)
문자 하나를 저장
반드시 값으로는 문자 하나가 와야 한다. a, A, 가, 羅, ^, $ ...
하나 이상일 경우에는 String에 저장한다.
정수형 타입 0~65,535 = 2byte
문자형을 저장할 때는?
반드시 홀따옴표로 ' '
정수형이기 때문에 int에 프로모션 가능
대로 int 값 또한 문자로 바뀔 수 있다.(cast)
public class DataType3 {
public static void main(String[] args) {
//문자형 초기화 하기
char char1 = 'A';
char char2 = '가';
char char3 = '羅';
char1 = 100;
char2 = '\ub789'; // 유니코드?
//아스키코드, 유니코드 -----utf-8 euc-kr, ms949
System.out.println(char1); // d
System.out.println(char2); // 랉
System.out.println(char3); // 羅
/*
for(int i=1; i<128; i++) {
System.out.print(i + " : " + (char)i+"\n");
}
*/
String str = "가나다"; // 문자열 = 스트링
str = ""+ char1 + char2 + char3;
System.out.println(str);// d랉羅
int iNum = char1;
System.out.println(iNum); // 100
iNum = char2;
System.out.println(iNum); // 46985
iNum = char3;
System.out.println(iNum); // 63759
int iNum2 = 0xb127;
System.out.println(iNum2); // 45351
System.out.println((char) iNum2); // 넧
/////////////////////논리형
//boolean 참, 거짓
boolean check = false;
System.out.println(check); // false
System.out.println(1==1); // true
System.out.println(1==2); // false
System.out.println('A'=='a'); // false
iNum = 10;
iNum2 = 10;
System.out.println(iNum == iNum2); // true
check = iNum == iNum2 + 1;
System.out.println("결과는 : " + check); // false
check = iNum != iNum2 +1; // != not
System.out.println("결과는 : " + check); // true
// 참, 거짓 저장하는 타입
//off on
int code = 1;
int result = code % 2; // 모듈러 = 나머지 값
check = result == 0;
if(check) { // 만약 check가 참이라면
System.out.println("당신은 여자");
}
else{
System.out.println("당신은 남자");
}
}
}
P타입(Primitive) 8개
- 수치형
정수 byte, short, int, long
실수 float, double - 문자형 char
- 논리형 boolean
//수치형 연습해보기
/* 여러분은 과수원을 하고 있습니다.
* 키우는 과일은 사과, 배, 오렌지 입니다.
* 각각 하루의 생산량은 5, 7, 5 입니다.
* 위 값을 기준으로 하루에 총 생산되는 과일의 수를
* 출력하시고 하루 기준으로 시간당 몇 개의 과일이
* 생산 되는지를 출력하시오.
* 예) 총 생산 수 : 17
* 시간당 생산 갯수 : 0.0001
*
* 최대한 많은 변수를 사용하고
* 반드시 한번의 리터럴 데이터와 캐스팅을 사용해보시오
* △요건 검색
* 평균 변수는 float 타입으로 선언하여 값을 담으시오
*
*
*/
public class DataType5 {
public static void main(String[] args) {
short apple, pear, orange;
int total;
float avg;
apple = 5;
pear = 7;
orange = 5;
total = apple+pear+orange;
avg = total/24F;
System.out.println("총 생산 수 : "+ total);
System.out.println("시간당 생산 갯수 : "+avg);
}
}
public class DataType5 {
public static void main(String[] args) {
int app, pear, orange;
app = 5;
pear = 7;
orange = 5;
int total = app + pear + orange;
float avg = (float) (total / 24.0); // 0.7083333
System.out.println("총 생산 수 : "+total);
System.out.println("시간당 생산 갯수 : "+avg);
}
}
'프로그래밍 > Java 공부' 카테고리의 다른 글
조건문(if), 반복문(for) (0) | 2021.05.21 |
---|---|
연산자, 조건문(if, else if) (0) | 2021.05.20 |
입출력 스트림과 파일 입출력 (0) | 2020.12.29 |
제네릭과 컬렉션 (0) | 2020.12.22 |
모듈과 패키지 개념, 자바 기본 패키지 (0) | 2020.12.13 |