정보 단위
1. bit
정보의 최소 단위
0 또는 1
2. byte
영문자
1byte = 8bit
기계어 | 2진수 | 10진수 | ASCii | |
A | > | 0100 0001 | > | 65 |
B | > | 0100 0010 | > | 66 |
a | > | 0110 0001 | > | 97 |
5 | > | 0000 0101 | > | 5 |
'5' | > | 0011 0101 | > | 53 |
0 | > | 0000 0000 | > | 0 |
'0' | > | 0011 0000 | > | 48 |
5 + 3 = 8
'5' + 3 = 56
"5" + 3 = 53
'A' (65) > + 32 > 'a'(97)
'B' (66) > + 32 > 'B'(98)
0 > + 48 > '0'(48)
1 > + 48 > '1'(49)
System.out.println('A' + 32); // 97
System.out.println((char)('A' + 32)); // a // 강제형변환, Cast
System.out.println(2 + 3); // 5
System.out.println('2' + '3'); // 101 // 50 + 51
System.out.println('2' - 48 + '3' - 48); // 숫자와 문자 사이 간격 : 48
System.out.println("2" + "3"); // 23
System.out.println("12.5" + "36.8"); // 12.536.8
System.out.println(Double.parseDouble("12.5") + Double.parseDouble("36.8")); // 49.3
상수(Constant)
변하지 않는 값
1. 숫자 상수
ex) 25, -100
2. 문자 상수
ex) '2' , 'A', '목'
'문자' - 1개 (2byte)> uni code
"문자열" - 1개 이상 - 주소 > ASCII 코드가 없다
변수(Variable)
1. 변수명 규칙
- 영문자, 숫자(0~9), _, $ 를 섞어서 사용 가능
- 첫 글자는 소문자
- 단어가 바뀌면 첫 글자 대문자
# 카멜의 법칙
- 클래스명의 첫 글자는 대문자로 시작
- 나머지 글자는 소문자로 작성, 단어가 바뀌면 다시 첫 글자를 다시 대문자로 시작
- 상수는 전부 대문자로 지정
- Java 파일명 == 클래스명
- JVM(자바 가상 머신)이 제일 먼저 찾는 것 : public static void main(String[] args)
- 단, Servlet이 제일 먼저 찾는 것 : public void init()
- 문장 끝에는 반드시 ; (세미콜론)을 써야 함
2. 형식
- 자료형 변수명;
3. 자료형의 종류
- 기본형
- 논리형
boolean a = 25 > 36;
System.out.println(25 < 36); // true (1)
System.out.println(25 > 36); // false (0)
System.out.println(a); // false (0)
-
- 문자형
char b = 'A';
System.out.println(b); // A
char c = 65;
System.out.println(c); // A
-
- 정수형
byte d = 127;
byte e = 128; // <error> byte : -128 ~ 127
int e = 65;
System.out.println(e); // 65
int f = 'A';
System.out.println(f); // 65
-
- 실수형
float i = 43.8; // error
float i = 43.8f; // float형 상수
float i = (float)43.8; // Casting
System.out.println(i); // 43.8
논리형 | boolean | 1bit | true / false | |
문자형 | char | 2byte | 16bit | 0 ~ 65535 |
정수형 | byte | 1byte | 8bit | -128 ~ +127 |
short | 2byte | 16bit | -32768 ~ +32767 | |
int | 4byte | 32bit | ||
long | 8byte | 64bit | ||
실수형 | float | 4byte | ||
double | 8byte |
int big = Math.max(25, 36);
System.out.println("큰 값 : " + big); // 큰 값 : 36
double small = Math.min(12.7, 78.5);
System.out.println("작은 값 : " + small); //작은 값 : 12.7
double base = 2, exp = 5;
System.out.println("2의 5제곱 : " + Math.pow(base, exp)); // 2의 5제곱 : 32.0
double power = Math.pow(2, 5);
System.out.println("2의 5제곱 : " + power); // 2의 5제곱 : 32.0
- 참조형[객체형]
- 배열
- 열거
- 클래스
- 인터페이스
모든 클래스는 new 생성해서 써야한다
다만 static 일 경우에는 new 하지 않아도 된다
String
Integer
Double
Scanner scan; 객체 (클래스형 변수)
4. 범위
- local variable (지역변수)
{ 구역} 안에 선언된 변수
{구역} 을 벗어나면 소멸된다
- global variable (전역변수)
# 자바 변수 : 변수의 선언된 위치에 따라 나뉜다 - 클래스변수, 인스턴스변수, 지역변수, 매개변수
public class Counter {
private int state = 0; // 인스턴스 변수
public static int gage = 100; // 클래스 변수(static 변수)
public int get() {
reutrn state;
}
}
public class Main {
public static void main(String[] args) { // 매개 변수
int num = 900; // 지역 변수
}
}
변수명 | 선언위치 | 설명 |
클래스 변수 (class variable) [static variable] |
클래스 영역 | 클래스 영역에서 타입 앞에 static 이 붙는 변수 객체를 공유하는 변수로 여러 객체에서 공통으로 사용하고 싶을 때 정의 |
인스턴스 변수 (instance variable) |
클래스 영역 | 클래스 영역에서 static 이 아닌 변수 개별적인 저장 공간으로 객체/인스턴스마다 다른 값 저장 가능 ※ 객체/인스턴스 생성만 하고 참조 변수가 없는 경우 가비지 컬렉터에 의해 자동 제거됨 |
지역 변수 (local variable) |
메서드 영역 | 메서드 내에서 선언되고 메서드 수행이 끝나면 소멸되는 함수 초기값을 지정한 수 사용할 수 있음 |
매개 변수 (parameter) |
메서드 영역 | 메서드 호출 시 '전달하는 값'을 가지고 있는 인수 (지역 변수처럼 선언된 곳부터 수행이 끝날 때까지 유효함) |
- 변수 생성시기
- 클래스 변수 : 클래스가 메모리에 올라갈 때
- 인스턴스 변수 : 인스턴스가 생성되었을 때
- 지역 변수 : 위치하고 있는 메서드가 수행되었을 때
- 매개 변수 : 위치하고 있는 메서드가 수행되었을 때
난수
컴퓨터가 불규칙하게 발생시키는 수
0 <= 난수 < 1
double a = Math.random();
입출력
import java.util.Scanner;
Scanner in = new Scanner(System.in);
int a = in.nextInt();
double b = in.nextDouble();
진수
1. 종류
2진수 | binary | 11111010 |
8진수 | octal | 0372 |
10진수 | Decimal | 250 |
16진수 | hexadecimal | 0xfa |
25 | int 정수 |
25l | long형 상수 |
25L | |
43.8 | double(기본) |
43.8f | float형 상수 |
43.8F |
- int a = 23L;
- float a = 43.8;
- byte a = 300;
- int a = 'B';
- char a = 66;
short a=10;
short b=5;
short sum=a+b;
→ char or byte or short 형으로 계산을 하면 결과는 int형으로 반환한다.
2. 음수
- 부호의 절대치
- 1의 보수
+15 : 0000 1111
-15 : 1111 0001
+16 : 0001 0000
-16 : 1111 0000
package operator;
public class BitOperator {
public static void main(String[] args) {
int a = +16;
System.out.println("+16 = " + a);
System.out.println("+16 = " + Integer.toBinaryString(a));
System.out.println();
System.out.println("~16 = " + ~a); // 1의 보수
System.out.println("~16 = " + Integer.toBinaryString(~a));
System.out.println();
System.out.println("-16 = " + (~a+1)); // 2의 보수
System.out.println("-16 = " + Integer.toBinaryString(~a+1));
System.out.println();
}
}
연산자
1. 최우선 연산자
- ()
- ++
- --
2. 산술 연산자
- +
- -
- *
- /
- % (나머지 - 항이 반드시 정수)
3. 관계 연산자
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
== | 같다 |
!= | 같지 않다 |
4. 논리 연산자
조건이 2개 이상일 때
단락 평가(shor-circut evaluation) 특징을 가짐 ; 연산의 결과가 결정되면 나머지 부분은 평가하지 않음
&& | AND | 모든 조건이 1일 때 1 |
|| | OR | 조건 중에서 1개라도 1이면 1 |
5. 조건 연산자 (삼항 연산자)
- 조건 ? 참 : 거짓;
6. 증감 연산자
- ++
- --
독립적으로 혼자 쓰일 때는 선행, 후행연산을 따지지 않는다.
7. 대입 연산자
- +=
- -=
- *=
- /=
- %=
8. 부정(NOT) 연산자
- !
- !true -> false
- !false -> true
9. 비트 연산자 (0 or 1)
- ~ (bit NOT, 1의 보수)
- 0 → 1
- 1→ 0
- bit 논리 연산자
& | AND | 모두 1 일 때 1 |
| | OR | 1개라도 1이면 1 |
^ | XOR | 다르면 1 |
- bit 이동 연산자 (Shift 연산자)
<< | 왼쪽 Shift | 비트를 왼쪽으로 이동 (*2씩 커진다) 빈공간은 0으로 채운다 |
>> | 오른쪽 Shift | 비트를 오른쪽으로 이동 (/2씩 작아진다) 빈공간은 부호비트으로 채운다 |
>>> | 오른쪽 Shift | 빈공간은 0으로 채운다 - 양수화 |
10. 예제
Operator01.java | [동전 교환] 현금을 입력하여 천, 백, 십, 일의 개수를 구하라 |
Operator02.java | [조건연산자] 점수를 입력하여 합격인지 불합격인지 판별하는 프로그램 합격 점수 : 80 ~ 100 |
Operator03.java | [증감 연산자] |
Operator04.java | [논리 연산자] |
Operator05.java | [부정 연산자] 문자열 주소 비교 & 내용비교 |
Salary.java | 0704 HW3(Salary.java) 수정 // operater 패키지로 복사 [조건] 1. 세율-조건 연산자 사용 합계가 5,000,000원 이상이면 3% (0.03) 3,000,000원 이상이면 2% (0.02) 아니면 1% (0.01) 2. 숫자는 3자리마다 , 표시 - Decimal Format 사용 3. 소수이하는 표시하지 않는다. (정수형) 4, Scanner 클래스 사용 |