티스토리 뷰
※ 참고 ※
-하나의 소스 파일에 여러 개의 클래스가 들어갈 수 있으나 public class는 하나만 있어야 함.
-파일명 == public class 이름. 아닐 경우 에러 뜸.
-컴파일될 때, 소스파일이 아니라 클래스별로 만들어짐.
1. 데이터 표현
2진수 | 8진수 | 16진수 | |
10진수를 | 2로 나누어 표현 | 8로 나누어 표현 | 16으로 나누어 표현 |
맨 앞 | 0b | 0 | 0x |
└맨 앞에 붙인 것으로 2진수, 8진수, 16진수 구분 가능.
package ch02;
public class BinaryTest { //진수 표현
public static void main(String[] args) {
int num = 64;
int bNum = 0b1010;
int oNum = 012;
int xNum = 0XA;
System.out.println(num); // 64
System.out.println(bNum); // 10
System.out.println(oNum); // 10
System.out.println(xNum); // 10
System.out.printf("10진수 출력 %d\n", num); // 64
System.out.printf("8진수 출력 %o\n", oNum); // 12
System.out.printf("16진수 출력 %x\n", xNum); //a
}
}
-println(); 괄호 안의 내용을 출력하고 줄바꿈
-printf(); 줄바꿈 x. 서식 있는 출력.
(2) 2진수 음수 표현
2진수의 0과 1을 반전 → 맨 오른쪽에 +1
ex) 0011 -(0, 1 반전)→ 1100 -(맨 오른쪽 +1)→1101
2. 변수
변하는 값을 저장하는 공간, 그 공간의 이름. 할당받은 메모리 주소 대신 부르는 이름.
변수는 사용하기 전에 선언해야 하는데 변수 안에 넣을 자료형에 맞는 걸 써야 함. ex) 정수형 → int, 문자 → char
(1) 변수 선언
데이터형 변수명;
데이터형 변수명 = 초기값;
-데이터형 : 메모리에 저장될 데이터의 형식과 크기
└기본형 : 변수에 데이터 저장 ex) int, float, char ...
└참조형 : 변수가 저장된 위치(주소) 저장
_ex)
package ch02
public class DataType {
public static void main(String[] args){
int level; // 정수형 변수 선언
level = 10; // 값 대입
int level2 = 20; // 변수 선언과 동시에 초기화
}
}
-변수 선언 시 유의점
변수 이름은 알파벳, 숫자, 언더바(_), $로 구성. 대소문자 구분 가능.
숫자 시작 불가, 키워드(public, class 등) 사용 불가. 공백 불가
3. 자료형
기본형
1 Byte(= 8 Bit) | 정수형 | 문자형 | 실수형 | 논리형 |
1 Byte | byte | boolean | ||
2 Byte | short | char | ||
4 Byte | int | float | ||
8 Byte | long | double |
-String은 기본형이 아님. 비교 연산자 불가. .equals()사용
(1) 정수 자료형
양수, 음수, 0을 나타내는데 사용하는 자료형
-정수 자료형에 따른 수의 유효범위(표현할 수 있는 범위)
-2ⁿ ~ 2ⁿ -1 |
int : 4byte 메모리 공간을 차지하는 정수 자료형. 유효범위는 -2³¹ ~ 2³¹ -1 |
└ n : 정수 자료형의 byte 크기를 bit 단위로 바꿈. 4byte일 경우 32bit니까 n은 32인데 맨 앞의 부호칸이 있어서 -1해줌.
└ -1 해주는 이유 : 0은 양의 0, 음의 0이 없으니까. 하나 빼줌.
byte | short | int | long | |
유효범위 | -128 ~ 127 | -32,768 ~ 32,767 | -2³¹ ~ 2³¹-1 | |
바이트 단위 정보 저장 동영상, 음악 파일 전송 등 |
└정수 자료형의 유효범위를 벗어나는 수는 담을 수 없음.
byte num = 365; //byte 자료형의 유효범위 벗어남. 오류
int num2 = 10000000000; //int 자료형의 유효범위 벗어남. 오류
long num3 = 10000000000; // 자바는 기본적으로 정수를 int형 처리하기 때문에 오류.
long num3 = 10000000000L; // 숫자 맨 끝에 L(또는 소문자 l)을 붙여 long형임을 알려준다.
(2) 문자형
package ch02;
public class Variable {
public static void main(String[] args) {
char a = 'A';
System.out.println("char a는 " + a); // A
System.out.println("A에 해당하는 정수값 " + (int)a); // 65
char a2 = 67;
System.out.println("정수 67에 해당하는 문자는 " + a2); // C
int a3 = 80;
System.out.println("정수 80에 해당하는 문자는 " + (char)a3); //P
}
}
_덧붙여
char a = 'A';
System.out.println("A에 해당하는 정수값 " + (int)a);
//정수형 변환
(3) 실수 자료형
소수점 자리 표현. 부동 소수점 방식.
float(4byte)형에 비해 double(8byte)형이 더 정밀하게 실수 표현. double형이 기본형.
float임을 숫자옆에 F를 붙여 표시함. (정수 자료형 long쓸 때, 숫자 옆에 L붙이던 것과 동일)
package ch02;
public class DataTypeTest {
public static void main(String[] args) {
double dnum1 = 3.14;
float fnum = 3.14F; //F안 붙이면 오류
System.out.println(dnum1); // 3.14
System.out.println(fnum); // 3.14
}
}
package ch02;
public class DataTypeTest {
public static void main(String[] args) {
double dNum = 1;
for(int i=0; i<100; i++) {
dNum += 0.1;
}
System.out.println(dNum); // 10.999999999999979
}
}
└예상 값은 9이나 실제 출력되는 값은 10.999999999999979로 약간의 오차 존재
(4) 논리 자료형 : boolean
true나 false만 대입할 수 있고 결과값도 true나 false로 출력
package ch02;
public class DataTypeTest {
public static void main(String[] args) {
boolean winter = true;
System.out.println(winter); // true;
}
}
(5) 자료형 없이 변수 선언(Java 10이후 생긴 문법)
-한번 선언한 자료형 변수를 다른 자료형으로 사용 불가
-지역 변수만 가능
package ch02;
public class TypeInference{
public static void main(String[] args) {
let i = 10;
let j = 10.0;
let str = "hello";
System.out.println(i);
System.out.println(j);
System.out.println(str);
str = "test"; // 문자열 대입 가능
str = 3; //string형으로 사용되었기에 정수형으로 사용 불가.
}
}
4. 상수와 리터럴
(1) 상수
변하지 않는 수
final doulbe PI = 3.14;
final int MAX_NUM = 100;
MAX_NUM = 150; //상수는 값을 변경할 수 없음.
└상수 이름은 대문자, 언더바(_)연결. 상수는 값을 변경할 수 없음.
-상수 이용
프로그램 내에서 반복적으로 사용하면서 변하지 않아야 하는 값을 상수로 선언.
if(count == 30) { ... }
while(i < 30) { ... }
//상수 사용
final int MAX_STUDENT_NUM = 30; //최대 학생 수를 바꿔야 할 때, 이것만 바꾸면 됨.
if(count == MAX_STUDENT_NUM) { ... }
while(i < MAX_STUDENT_NUM) { ... }
(2) 리터럴(리터럴 상수)
프로그램에서 사용하는 숫자, 문자, 논리값
숫자나 문자 등이 변수에 대입되는 과정은
숫자값이 어딘가의 메모리(상수풀)에 쓰여 있고 그것이 다시 변수 메모리에 복사되는 것.
5. 형 변환
자료형이 다르면 연산 불가. 자료형을 통일한 후 연산 가능
(1) 묵시적 형 변환_자동적
-바이트 크기가 작은 자료형 → 큰 자료형
byte bnum = 10;
int inum = bnum; // 묵시적 형 변환
└byte형 변수 bnum이 int형 변수 inum에 대입될 때 묵시적 형 변환 발생
-덜 정밀한 자료형 → 정밀한 자료형
int inum2 = 20;
float fnum = iNum2; // int형 → float형
double = dnum;
dnum = fnum + inum; // float형 → double형
(2) 명시적 형 변환_수동
잘릴 때 왼쪽부터 잘리기 때문에 주의. 양수·음수 변환이나 제일 높은 자릿수가 짤릴 수도 있음.
-바이트 크기가 큰 자료형 → 작은 자료형
int iNum = 1000;
byte bNum = (byte)iNum; //큰 자료형 → 작은 자료형. 자료 손실.
// byte형 유효범위 초과. 결과값 -24
-더 정밀한 자료형 → 덜 정밀한 자료형
duble dNum = 3.14;
int iNum2 = (int)dNum; //실수형 → 정수형. 소수점 이하 생략. 자료 손실.
// 결과값 3
-형 변환 순서
괄호에 따라 순서 달라짐
double dNum1 = 1.2;
float fNum1 = 0.9F;
int iNum3 = (int)dNum1 + (int)fNum1; // 형 변환 후 연산
int iNum4 = (int)(dNum1 + fNum1); // 연산 후 형 변환
System.out.println(iNum3); // 결과값 1
System.out.println(iNum4); // 결과값 2
'수업 > └Java' 카테고리의 다른 글
[CH03]연산자 (0) | 2022.01.30 |
---|---|
[CH00]Scanner (0) | 2022.01.30 |
[CH00]Java 기초 (0) | 2022.01.29 |
[실습문제4]클래스 (0) | 2022.01.28 |
[Java]상속 (0) | 2022.01.28 |
- Total
- Today
- Yesterday
- A%B
- html
- html base tag
- BAEKJOON
- 외부구성요소
- scanner
- improt
- empty-cell
- input type 종류
- selcetor
- typeof
- text formatting
- initialized
- 변수
- ScriptTag
- caption-side
- Java
- 입력양식
- CascadingStyleSheet
- html input type
- html layout
- 스크립태그
- border-spacing
- html atrribute
- 미디어 태그
- JavaScript
- html pre
- html a tag
- css
- 기본선택자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |