KIC/JAVA

day13 - 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