• Java Development Environment
    • integrated Development Environment (IDE)
      • 통합 개발 환경
      • Eclipse, Netbeans, InteliJ IDEA

 

예약어와 식별자

  • 식별자
    • 명명 규칙에 따라야함
      1. 문자, $, _로 시작해야함
      2. 숫자로 시작할 수 없음
      3. 대,소문자 구분됨
      4. 예약어는 사용할 수 없음

 

변수와 자료형

  • 변수
    • 데이터를 다루는 상자 (공간)
  • 자료형
    • 기본 자료형
      • 변수를 사용하는 도중 변경할 수 없음
      • 최소 단위의 자료형
      • 메소드 없이 값만 가짐
      • 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 로 선언 ( 선언과 동시에 할당)
        1. final class : 상속 불가
        2. final 메소드 : 오버라이딩 불가 (재사용)
      • 대문자로 표현한다. 
      • ex)
        int SPEED = 110;​
        스피드의 값을 함수안에서 SPEED로만 가지고 사용하면
        1. 코드 가독성이 좋아짐
        2. 유지보수 종속성이 높아짐
        3. 안정성
    • 형 변환
      • 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
          		
          		//주의점 : 형 변환 시 자료 유실이 일어날 수 있으므로 주의
          		
          	}​

연산자와 문자열

  • 연산자
    • 순위
      1. 함수
      2. 산술연산 -> 비교연산-> 논리연산
      3.  .....
      4. 할당연산자
    • 산술 연산자
      //	산술 연산자
      	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

+ Recent posts