class
public class는 java파일 당 하나만 존재해야되고, class명은 파일명과 일치해야 된다.
class == 설계도 == 타입
class는 작은 타입을 모아 놓은 큰 타입.
class 반드시 메모리에 적재 (올려놓고) 사용 : new 연산자를 사용하면 적재된다.
- 설계도 용도 만드는 클래스: kr.or.bit.Emp
- 실행을 위해 만드는 클래스 (실행점: main() 함수): Ex01_variable
- 함수 public static void main(String[] args) {}: 프로그램 시작점, 진입점
TIP) C# > public static void Main()
variable
변수 Scope (유효범위): 선언되는 위치에 따라서
- instance variable: 객체변수(전역변수) class Test { … }
-instance variable: Heap 메모리에 올라가 있는 한 프로그램 종료될 때 까지 사용 가능
-이 변수는 초기화를 하지 않아도 된다 (기본값: default를 가지고 있다.) - local variable : 지역변수 (함수 안에 있는 변수) class Test { void run() { … } }
-함수가 호출되면 그때 메모리에 생성되고 함수가 종료되면 메모리에서 사라진다.
-지역변수는 반드시 [초기화]하고 사용하여야 한다. (처음 값을 입력하는 것을 초기화) - static variable : 공유변수
자료형
자바는 시스템에서 8가지 기본타입 제공
정수 (음의정수, 0, 양의정수)
1.byte(-128~127)
2.char(한 문자를 표현하는 자료형: 한 문자(2Byte), unicode 형식), 내부적으로 저장하고 있는 값은 정수값
3.short
4.int(-21억 ~ 21억): java 정수의 연산 기본 타입 (4Byte)
5.long(8Byte): int 보다 큰 값
실수 (부동소수점)
1.float(4Byte)
2.double(8Byte): java 실수의 연산 기본 타입, 정밀도가 높다(표현 범위가 크다)
논리
1.boolean (true, false): 프로그램의 논리제어
문자
1.char : 정수값을 가지고 있다 (2Byte)
2.string
String 은 클래스 (설계도) > String s = new String(“안녕하세요”);
POINT: String 일반 값타입 써도 문제없다. (int, double 타입 처럼 사용)
연산자
result = 13%2; // %나머지를 구하는 연산자
// 증가감 연산자(++, --) 1씩 증가, 감소
++i; // 전치 증가
i++; // 후치 증가
// 변수 하나는 전치, 후치 동일
// 자바의 연산 규칙
// 정수의 모든 [연산]은 int 변환 후 처리
// byte + byte => 컴파일러 int + int
byte b = 100; // -128 ~ 127
byte c = 1;
byte d = (byte)(b + c);
//1. int d = b + c;
//2. byte d = (byte)(b + c);
// byte + short => 컴파일러 int + int
// char + char => 컴파일러 int + int
// 연산처리시....
// POINT: 연산에서 int 보다 작은 타입은 int 변환 (long 제외)
// 연산시에 (byte, char, short -> int) 바꾸어서 연산 처리
// 피연산자 중 표현범위가 큰 타입으로 형변환
// byte + short -> int + int -> int
// char + int -> int + int -> int
// int + long -> long + long -> long
// (정수와 실수: 실수)
// float + int -> float + float -> float
// long + float -> float + float -> float
// float + dobule -> double + double -> double
float num2 = 10.45f;
int num3 = 20;
// num2 + num3 연산
// int result5 = (int)(num2 + num3); // float + float
// System.out.println("result5: " + result5); // 데이터 손실
float result5 = num2 + num3;
double result5a = num2 + num3;// 결과: 30.450000762939453
char c2 = '!';
char c3 = '!';
// c2 + c3 결과
// char result6 = c2 + c3;
int result6 = c2 + c3; // 아스키 코드표 기준 'A'에 대한 10진수: 65 + 65
// result6이 가지는 정수값의 문자를....
// == 연산자 ([값]을 비교하는 연산자)
// 대입 연산자 (+=, -=, *= ...): 습관적으로 사용
// != 부정연산자
// 삼항 연산자 *잘쓰는 것이 중요*
int p = 10;
int k = -10;
int result8 = (p == k)? p : k;
// 삼항 연산자는 if 제어문 변경 가능