- Java Development Environment
- integrated Development Environment (IDE)
- 통합 개발 환경
- Eclipse, Netbeans, InteliJ IDEA
- integrated Development Environment (IDE)
예약어와 식별자
- 식별자
- 명명 규칙에 따라야함
- 문자, $, _로 시작해야함
- 숫자로 시작할 수 없음
- 대,소문자 구분됨
- 예약어는 사용할 수 없음
- 명명 규칙에 따라야함
변수와 자료형
- 변수
- 데이터를 다루는 상자 (공간)
- 자료형
- 기본 자료형
- 변수를 사용하는 도중 변경할 수 없음
- 최소 단위의 자료형
- 메소드 없이 값만 가짐
- ex)
int score = 50;
- 참조형
- 여러 자료형들의 집합
- 클래스의 객체를 참조
- 데이터 있을 수도 있고 없을 수도 있음
- 데이터와 메소드를 가짐
- 상자보다는 짝대기라고 생각.
- ex)
String mStr = new mStr();
- 기본 자료형
이렇게 보면
H1과 H3가 같고
H2는 다르게 가르키는 것을 알 수 있다.
- 기본 자료형
- 정수형
- 가장 왼쪽 비트 : 부호
- long > int > short
public static void intLongEx() { //byte(1) < short(2) < int(4:default) < long(8) int intVar1; //변수 선언 int intVar2; //선언 intVar1 = 2021; //변수 초기화 //intVar2 = 1234567891234; //표현할 수 있는 범위 초과 System.out.println(intVar1); //변수 값 조회 long longVar1 = 2021; // 선언 + 초기화 // long longVar2 = 1234567891234; //오류 long longVar2 = 1234567891234L; // L (or l)추가 // 2진수, 8진수, 16진수 int bin, oct, hex; bin = 0b1101; // 2진수 0b oct = 0721; // 8진수 0 hex = 0xFF; // 16진수 0x // 결과 -> bin : 13, oct : 465, hex : 255 System.out.println("bin : " + bin + ", oct : " + oct + ", hex : "+ hex); }
- 문자형
// 문자형 타입 : 부호 없는 정수 private static void charEx() { char ch1 = 'A'; char ch2 = '한'; System.out.println(ch1); System.out.println(ch2); // 결과 -> ch1 4글자 뒤인 69가 나온다. System.out.println(ch1+4); // 결과 -> ch1 4글자 뒤인 E가 나온다. System.out.println((char)(ch1+4)); }
- 실수형 논리형
- 실수형
- double : 정밀도 포기, 표현 범위만 넓어짐, 형 변환시 유실 일어남
- 지수 표기법 (e) : 3E - 6F = 3 * 10^-6
// 실수형 타입 private static void floatDoubleEx() { // float(4) < double(8) // 정밀도 포기, 표현 범위 넓힌 것 -> 금융권 안 씀 // float floatVar = 3.14159; //오류 float floatVar = 3.14159F; // float사용 시 뒤에 F or f 추가 double doubleVar = 3.14159; floatVar = 0.123456890123456789F; doubleVar = 0.123456890123456789; // 결과 -> float : 0.12345689, Double : 0.12345689012345679 // 둘 다 오차가 있음, double은 수용범위 안에서 반올림 한다. System.out.println("float : "+ floatVar + ", Double : " + doubleVar); // 결과 -> 0.30000000000000004 System.out.println(0.1*3); //지수 표기법(e) floatVar = 3E-6F; // 3 * 10 ^ -6 System.out.println(floatVar); }
- 논리형
- C처럼 boolean 값을 값으로 하지 않는다.
- true/false 그 자체로 저장이 가능하다.
// 논리형 : 참 or 거짓 private static void booleanEx() { boolean b1 = true; boolean b2 = false; System.out.println(b1); System.out.println(b2); boolean result; int var1 = 3; int var2 = 5; result = var1 < var2; //비교 결과 넣기 // 결과 -> 3 < 5 = true System.out.println(var1 + " < " + var2 + " = " + result); }
- 실수형
- 정수형
- 상수와 형변환
- 상수
- 변경할 수 없는 고정된 데이터
- 코드의 이해와 변경이 쉬움
- final 로 선언 ( 선언과 동시에 할당)
- final class : 상속 불가
- final 메소드 : 오버라이딩 불가 (재사용)
- 대문자로 표현한다.
- ex)
스피드의 값을 함수안에서 SPEED로만 가지고 사용하면int SPEED = 110;
- 코드 가독성이 좋아짐
- 유지보수 종속성이 높아짐
- 안정성
- 형 변환
- byte(1) < short, char (2) < long (8) < float (4) < double (8)
- 암묵적 형변환
// 형 변환(Promotion) private static void promotionEx() { // 1. 암묵적 형 변환 // 표현 범위 좁은 자료 -> 표현 범위가 넓은 자료 // 자동으로 변환 promation byte b = 25; //1바이트 정수 System.out.println(b); short s = b; // 2바이트 정수 int i = s; // 4바이트 정수 System.out.println(i); float f = i; // 4바이트 실수 System.out.println(f); }
- 표현범위가 작은 곳에서 큰 곳으로 할당
- 강제 형 변환
- 큰 자료형에서 작은 자료형
// 2. 강제 형 변환 (Casting) private static void castingEx() { // 표현 범위가 넓은 자료 -> 표현 범위 좁은 자료 // 명시적으로 변환 해줘야 함 float f = 123.456f; System.out.println(f); //int i = f; //오류 int i = (int)f; System.out.println(i); //123 int i2 = 1234567890; System.out.println(Integer.toBinaryString(i2)); //1001001100101100000001011010010 short s = (short)i2; System.out.println(Integer.toBinaryString(s)); //1011010010 //주의점 : 형 변환 시 자료 유실이 일어날 수 있으므로 주의 }
- 큰 자료형에서 작은 자료형
- 상수
연산자와 문자열
- 연산자
- 순위
- 함수
- 산술연산 -> 비교연산-> 논리연산
- .....
- 할당연산자
- 산술 연산자
// 산술 연산자 private static void arithOperEx() { int a = 7; int b = 3; //부호 연산자 (+,-) System.out.println(-a); // -1 * a // 산술 연산자 (+, -, *, /, %) System.out.println(a / b); // int / int = int(몫) System.out.println(a % b); // 정수 나눗셈의 나머지 // System.out.println(a / 0); // 에러 발생 (정수 나누기 0은 무한대라서) System.out.println(7.0 / 0); // Infinity(무한대) System.out.println(7.0 / 0 + 100); // Infinity가 포함된 산술식 : 무한대 // 어떤 값이 Infinity인지 체크 System.out.println(Double.isInfinite(7.0 / 0)); // true // 연산 결과값이 수치가 아닌 경우 (Not a Number) 체크 System.out.println(0.0 / 0.0); // NaN System.out.println(Double.isNaN(7.0 / 0)); // false -> 무한대라서 NaN아님 }
- 전위 증감 연산
//전위 증감 private static void prefixIncrEx() { int a = 7; int b = 0; b = ++a; System.out.println("b : " + b); // 8 System.out.println("a : " + a); // 8 }
- 후위 증감 연산
// 후위 증감 연산 private static void suffixIncrEx() { int a = 7; int b = 0; b = a++; System.out.println("b : " + b); // 7 System.out.println("a : " + a); // 8 }
- 비교, 논리 연산
// 비교, 논리 연산 private static void logicalOperEx() { // 비교 연산자 : >, >=, <=, ==(equal), !=(not equal) // 논리 연산자 : 논리곱 (AND, &&), 논리합(OR, ||), 논리 부정 (NOT, !) int a = 5; // a가 0초과, 10미만의 값? // 조건 1 : a > 0 // 조건 2 : a < 10 // 결과 : 조건1 AND 조건2 boolean b1 = a > 0; boolean b2 = a < 10; boolean r = b1 && b2; System.out.println("b1 && b2 = " + r); // true // 10이상, 0이하 // 조건 1 : a <= 0 // 조건 2 : a >= 10 b1 = a <= 0; b2 = a > 10; r = b1 || b2; System.out.println("b1 || b2 = " + r); //false // 논리 부정 (NOT !) System.out.println("!r == " + !r); //true }
- 비트 연산자
//비트 연산자 private static void bitOperEx() { // int에서만 // 비트 단위의 미세한 제어에 이용 int b1 = 0b11011101; int mask = 0b10101010; System.out.println(Integer.toBinaryString(b1)); System.out.println(Integer.toBinaryString(mask)); System.out.println(Integer.toBinaryString(b1 & mask)); //비트 논리 곱 System.out.println(Integer.toBinaryString(b1 | mask)); //비트 논리 합 System.out.println(Integer.toBinaryString(~b1)); //비트 논리부정 }
- 비트 시프트
//비트 시프트 private static void bitshiftOperEx() { int val = 1; System.out.println(Integer.toBinaryString(val)); //왼쪽으로 3비트 시프트 System.out.println(Integer.toBinaryString(val<<3)); int val1 = 0b1000; System.out.println(Integer.toBinaryString(val1)); System.out.println(Integer.toBinaryString(val1>>2)); }
- 삼항 연산자
//3항 연산자 private static void conditionalOperEx() { int a = 10; // a가 짝수면 짝수, 홀수면 홀수 출력 System.out.println(a + "는 " + (a % 2 == 0? "짝수":"홀수")); int score = 49; String message; // 점수가 90점 이상이면 Good, 50점 미만이면 Fails, 아니면 Pass System.out.println(score + "는 " + (score > 90? "Good":score < 50? "Fails":"Pass")); }
- 순위
- 콘솔 입출력
- 콘솔 출력
private static void consoleOutputEx() { // System.out.print : 개행 안 함 // System.out.println : 개행함 // System.out.printf : 형식 지정 문자열 출력 -> String.format System.out.print("print : 개행 안 함"); System.out.println(" println : 개행함"); // 이스케이프 문자 // \n(개행), \t(탭문자), \"(따옴표), \\(역슬래시) System.out.println("Hello\n Java"); // 개행 System.out.println("Hello\t Java"); // 탭 문자 System.out.println("Hello \"Java\""); // 따옴표 String dir = "C:\\User\\Bit\\Desktop"; System.out.println(dir); }
- 콘솔 입력
// 콘솔 입력 private static void consoleInputEx() { Scanner scanner = new Scanner(System.in); System.out.print("이름 : "); String name = scanner.next(); System.out.print("나이 : "); int age = scanner.nextInt(); System.out.println("당신의 이름은 "+ name+ ", 나이는 "+ age + "입니다."); scanner.close(); }
- 콘솔 출력
'study > JAVA 전문가' 카테고리의 다른 글
인터페이스 (0) | 2021.12.07 |
---|---|
예외 (0) | 2021.12.07 |
추상 클래스 (0) | 2021.12.07 |
[모의 필기테스트] 오답노트 & 정리 (0) | 2021.12.07 |
java Class (0) | 2021.12.06 |