ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day13 - JAVA (자바 개요, 환경 설정, 식별자, 자료형, 연산자)
    KIC/JAVA 2021. 7. 14. 01:53
    반응형

    [자바의 처리 구조]

    -> 자바 프로그램은 컴퓨터 내에서 자바 가상 머신(Virtual Machine: JVM) 으로 불리는 표준화 가상의 컴퓨터에서 실행

     

     

     

    [자바의 특징]

    -> 배우기 쉽다.

    -> 객체 지향 프로그래밍

    -> 가비지 컬렉션

    -> 플랫폼 독립성

    -> 멀티 스레드

     

     

    [식별자]

    -> 보고 느낄 수 있는 모든 사물(객체)들을 각각 구별할 수 있는 것을 의미

     

     

     

     

     

     

    [자바의 자료형]

     

     

     

     

    [변수]

    -> 변수 선언 관련 코드 예시

    package javaPro.java_var;
    
    public class VarEx1 {
    	public static void main(String[] args) { //프로그램의 시작점 
    		//변수의 선언 및 초기화
    		byte b1 = -22;
    		byte b2; //변수의 선언. b2 저장공간 메모리 1바이트 할당.
    		//바이트로 저장할 수 있는 값의 범위. -128 ~ 127 저장가능
    		b2= -128; //변수의 초기화
    		b1=127;
    		short s1 = -220;
    		int i1 = 100;
    		long l1 = 1000l;
    		//변수값 내용을 화면에 출력하기
    		//System.out.println : 화면에 값을 출력.
    		System.out.println("b1=" + b1); //b1=-22
    		System.out.println("s1="+s1);
    		System.out.println("i1="+i1);
    		System.out.println("l1="+l1);
    		
    		float f1 = 1.0f;
    		
    		double d1 = 1.0;
    		double d12 = 1d;
    		
    		
    		System.out.println("f1=" + f1);
    		System.out.println("d1=" + d1);
    		/*
    		 * 실수형 리터널의 기본자료형은 double 임
    		 * float 리터널로 표시하기 위해서는 접미사를 붙여야 한다.
    		 *  F,f : float 리터널
    		 *  D,d : double 리터널
    		 *  L,l : long 리터널
    		 */
    	}
    }
    /*
     * 자료형 
     *     기본형 - 논리형 : boolean(1)
     *            문자형 : char(2)
     *            정수형 : byte(1), short(2), int(4), long(8)
     *            실수형 : float(4), double(8)
     *     참조형 - 배열, 클래스, 인터페이스
     *     
     
     */

     

     

     

     

     

    -> 형변환 예시

    package javaPro.java_var;
    
    public class VarEx2 {
        public static void main(String[] args){
            byte b1 = 10;
            short s1 = 20;
            int i1 = 100;
            long l1 = 1000;
            i1 = b1;
            s1 = (short) l1;
            float f = l1;
            l1 = (long) f;
        }
    }

     

     

    [형변환 원리]

    큰자료형 <= 작은 자료형 : 자동형변환

     

    작은자료형 <=  큰자료형 : 명시적 형변환

         -> 문제가 생길 경우에는 ide가 워닝을 띄워준다.

     

     

     

    [자료형 크기 순서]

    byte < short < int < long < float < double

              char

     

     

     

    A=B : 같다 의 의미가 아니고, 대입의 의미임. B의 값을 A에 입력함.

     

    lvalue : 대입연산자의 왼쪽의 값. 반드시 변수여야함.

     

    rvalue : 대입연산자의 오른쪽의 값, 변수, 리터널, 수식 가능

     

     

     

     

    [연산자]

     

     

     

     

     

     

     

     

     

    [산술 연산자 주의점 예시]

    package javaPro.java_op;
    /*
     * 산술 연산
     *  / : 나누기 연산자
     *      정수 = 정수/정수(int 이하)
     *  % : 나머지 연산자
     *      나머지연산의 결과값의 부호 피젯수(나누어 지는수) 의 부호와 같다.
     */
    
    public class OpEx6 {
        public static void main(String[] args){
    
            System.out.println(10/8); // 1
            System.out.println(10/-8); // -1
            System.out.println(-10/8); // -1
            System.out.println(-10/-8); // -1
    
            System.out.println(10%8); // 2
            System.out.println(10%-8); // 2
            System.out.println(-10%8); // -2
            System.out.println(-10%-8); // -2
        }
    }

     

     

     

     

     

     

    [비트 연산자 예시]

    package javaPro.java_op;
    /*
    비트연산자 : &(and),|(or),^(XOR),~(not) : 정수값,
    */
    public class OpEx7 {
        public static void main(String[] args) {
    
            System.out.println("6 & 3 = "+ (6 & 3));
            /* and 연산
            *  6 : 0110
            *  3 : 0011
            *  --------
            *  &   0010  : 2
            */
    
    
            System.out.println("6 | 3 = "+ (6 | 3));
            /* or 연산
            *  6 : 0110
            *  3 : 0011
            *  --------
            *  | : 0111  : 7  
            */
    
    
            System.out.println("6 ^ 3 = "+ (6 ^ 3));
            /*  같으면 0, 다르면 1
            *  6 : 0110
            *  3 : 0011
            *  --------
            *  ^ : 0101  : 5  
            */
    
    
            System.out.println("~10"+ ~10); // -11
            /* 
             * 10 : 00001010
            * ---------------
            * ~  : 11110101   : ?
            */
    
        }
    }

     

     

     

     

     

     

     

    [shift 연산자 예시]

    package javaPro.java_op;
    /*
     * shift 연산자 : 비트이동 연산자
     *   << n : 왼쪽으로 n비트만큼 이동. 오른쪽의 n비트 0으로 채움
     *   >> n : 오른쪽으로 n비트만큼 이동. 왼쪽의 n비트 부호비트 채움.
     *   >>>n : 오른쪽으로 n비트만큼 이동. 왼쪽의 n비트 0으로 채움.
     */
    
    public class OpEx8 {
        public static void main(String[] args) {
            System.out.println("8<<2 : " + (8<<2)); //32
            /* 실제로는 32자리이지만 8자리로 간략하게 표현함
             * 8    : 00001000
    		 * <<2  : 00100000  : 32
    		*/
    
            System.out.println("8>>2 : " + (8>>2));//2
            /* 8     : 00001000
    		 * >>>2  : 00000010  : 2
    		*/
    
            System.out.println("8>>>2 : " + (8>>>2));//2
            /* 8     : 00001000
    		 * >>>2  : 00000010  : 2
    		*/
    
            System.out.println("-8<<2 : " + (-8<<2));//-32
            /* -8    : 11111000
    		 * << 2  : 11100000  : -32
    		*/
    
            System.out.println("-8>>2 : " + (-8>>2));//-2
            /* -8    : 11111000
    		 * >> 2  : 11111110  : -2
    		*/
    
            System.out.println("-8>>>2 : " + (-8>>>2));//1073741822
            /* -8    : 11111000
    		 * >>>2  : 00111110 (실제로는 32자리이기 때문에 1073741822 나옴)
    		*/
        }
        
    }

     

     

     

     

     

     

    [대입 연산자 예시]

    package javaPro.java_op;
    
    public class OpEx9 {
    // 대입 연산자
        public static void main(String[] args){
            int num = 100;
            System.out.println(num);
    
            num+=10; // num = num + 10;
            System.out.println(num);
    
            num/=10; // num = num / 10;
            System.out.println(num);
    
            num*=2+3; // num = num * (2+3);
            System.out.println(num);
    
            byte b = 1;
            b *=2; //b = b*2
            b = (byte) (b*2); // 형변환 해줘야 함
            System.out.println(b); //4
            b *=2;
    
            System.out.println(b); //8
            b *=2;
    
            System.out.println(b); //16
            b *=2;
            
    
        }
    
    
    }

     

     

     

     

     

     

     

     

     

    300x250

    댓글

Designed by Tistory.