ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 005. 비트 연산자, 변수와 자료형 / 키워드 및 식별자 / 연산자 실습, final(상수화)
    SsY/Class 2023. 2. 15. 00:49
    728x90

    2023.01.31(화)

    비트 연산자 or 비트 단위 연산자 // 비트 쉬프트 (shift) 연산자
     - 비트와 관련있는 연산자
    • 비트 연산자
    비트 and 연산자 1 또는 0을 활용해서 연산 ex) 1 &  1 → 1
    | 비트 or 연산자 1 또는 0을 활용해서 연산 ex) 1  |  0 → 1
    ^ exclusive or 피연산자가 동일하면 0, 다르면 1
    비트 not 연산자 1 또는 0을 활용해서 연산 ex) ~11001100 → 00110011
    • 비트 연산자의 특징

    - 다른 연산에 비해 연산 처리 속도가 빠르다
    - 숙련 될 수록 활용도가 점점 높아짐 

    • 비트 연산 하는 법

    1) 숫자를 비트로 변환한다
    2) 비트 단위를 참(1) 또는 거짓(0) 으로 계산하여 비트 단위로 나온 답을 정수 값으로 변환한다


    • 비트 쉬프트(shift) 연산자
    << 비트 열을 왼편으로 이동 대상 << 얼마나 이동 후
    빈자리가 0으로 채워짐
    >>> 비트 열을 오른편으로 이동 대상 >>> 얼마나
    >> 대상이 양수 또는 음수에 따라 채워지는 값이 달라진다. 대상 >> 얼마나 양수의 경우 0
    음수의 경우 1
    • 비트 쉬프트 연산자의 특징

    - 비트 연산자 중에서도 가장 빠른 연산자
    - 비트열을 이동하는데 사용

    더보기

    ex)

    00001100    // 1. 이동하려면 → 2. 어느방향으로? 얼마나?
    //  ↓       //		왼쪽          1칸      대상<<1
    00011000

    * >> 나 >>> 사용법은 동일하지만
       >> 의 경우에는 대상이 양수인지 음수인지에 따라 채워넣는 값이 달라지니 주의할것

     

     

    변수와 자료형 / 키워드 및 식별자 / 연산자 실습
    - Test003~009
    - Test010 : 퀴즈 // ※ final 변수의 상수화
    • Test003
      - 변수와 자료형

    - 변수 선언과 초기화
    - 컴파일 에러와 런타임 에러
    - 덧셈 연산자(+) :  산술 결합 연산자 기능 그리고  문자열 결합 연산자 기능

    더보기
    /*=============================================
      ■■■   자바 기본 프로그래밍    ■■■
      - 변수와 자료형
      ============================================*/
    
    public class Test003
    {
    	public static void main(String[] args)
    	{
    		// 당분간 우리가 코딩하게 될 영역
    
    		// 변수 선언
    		int a;
    		// 변수 a 에 10 대입(변수 초기화)
    		a = 10;
    		// 변수 선언 및 초기화(선언과 대입을 한 번에 처리)
    		int b = 20;
            
    		// int a = 30;
    		//--==>> 에러 발생 (컴파일 에러) (^실행 후 발생하는 에러는'런타임 에러')
    
    		// 변수 선언
    		int c;
    
    		// 테스트
    		//System.out.println(c);
    		//--==>> 에러 발생 (컴파일 에러)
    
    		//테스트
    		System.out.println(a);
    		//--==>> 10
    
    		//테스트
    		System.out.println(b);
    		//--==>> 20
    
    		// 연산 및 처리
    		c = a + b; 
    		//c = 10 + 20; 
    		//c = 30; 
    		//-- 변수 c에 30을 대입해라.
    
    
    		//테스트
    		System.out.println(c);
    		//--==>> 30
    
    
    		// 결과 출력
    		//System.out.println(a b c); // (기대 출력 값) 10 20 30
    		// --==>> 에러 발생 (컴파일 에러)
    
    
    		// ※ 덧셈 연산자(+)
    		//		피 연산자 중 어느 하나라도 문자열 형태의 데이터가 존재한다면
    		//		산술 연산자로써의 기능을 수행하는 것이 아니라
    		//		문자열 결합 연산자로써의 기능을 수행하게 된다.
    
    		//테스트
    		System.out.println("변수 a에 들어있는 값은 ");
    		//--==>> 변수 a에 들어있는 값은
    		System.out.println("변수 a에 들어있는 값은 " + 10);
    		//                   --------------------      --
    		//                       문자열                정수
    		//--==>> 변수 a에 들어있는 값은 10
    		
    		System.out.println(500 + 10);
    		//--==>> 510
    
    		System.out.println("500" + 10);
    		//--==>> 50010
    
    		System.out.println(5.0 + 10);
    		//--==>> 15.0
    
    		System.out.println("변수 a에 들어있는 값은" + "10");
    		//--==>> 변수 a에 들어있는 값은10
    
    		System.out.println(               "테스트");
    		//--==>> 테스트
    
    		System.out.println("               테스트");
    		//--==>>                테스트
    
    		System.out.println(         "관찰"        );
    		//--==>> 관찰
    		
    
    		//결과 출력
    		System.out.println("변수 a에 들어있는 값은 " + a + "입니다.");
    		System.out.println("변수 b에 들어있는 값은 " + b + "입니다.");
    		System.out.println("변수 c에 들어있는 값은 " + c + "입니다.");
    		//--==>>
    		/*
    		변수 a에 들어있는 값은 10입니다.
    		변수 b에 들어있는 값은 20입니다.
    		변수 c에 들어있는 값은 30입니다.
    		*/
    		//--== 『+』 연산자를 사용하는 과정에서
    		//		피연산자 중 문자열이 포함되어 있을 경우
    		//		문자열 결합 연산자로 활용되며
    		//		처리의 최종 결과는 문자열의 형태로 반환된다.
    
    		// 10 20 30
    
    		System.out.println(a + " " + b + " " + c);
    		//--==>> 10 20 30
    	
    
    		//추가 관찰
    		System.out.println(1+2);       // 산술연산자 +
    		System.out.println("1"+2);     // 문자열 결합 연산자 +
    		System.out.println(1+"2");     // 문자열 결합 연산자 +
    		System.out.println("1"+"2");   // 문자열 결합 연산자 +
    
    	
    	}
    }
    
    
    
    // 실행 결과
    /*
    10
    20
    30
    변수 a에 들어있는 값은
    변수 a에 들어있는 값은 10
    510
    50010
    15.0
    변수 a에 들어있는 값은10
    테스트
                   테스트
    관찰
    변수 a에 들어있는 값은 10입니다.
    변수 b에 들어있는 값은 20입니다.
    변수 c에 들어있는 값은 30입니다.
    10 20 30
    3
    12
    12
    12
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test004
      - 변수와 자료형
      - 키워드 및 식별자
    스코프 영역 안에서 변수명은 '식별자' 역할을 한다
    - 즉, 동일 영역 내에서는 같은 변수명은 선언할 수 없다.
    자바에서는 문자열을 담아낼 수 있을만한 데이터 타입(자료형)을  기본 자료형(Primitive Type)(Byte,short,int,long 등)으로 제공해주지 않는다. // (물론 char(문자)들을 집합시켜 만들 수 는 있으나 아직까지 집합을 시켜 만드는 방법을 배우지 않았음)

    자바는 "객체* 지향 언어"

    WHY? 문자열을 Primitive Type으로 만들 수 없었나?
    ㄴ 실수 만큼이나 골칫거리인 문자열
         → 길이 때문에 공간을 얼마나 사용할지 알 수 없기 때문에

    문자열 → 객체  "String 으로 구성 가능"
    String a;                                     int a;
    a = "안녕하세요";                              a = 10;
    String a = "반갑습니다.";                      int a = 20;
    더보기
    /*========================================
       ■■■ 자바의 개요 및 특징 ■■■
    	- 변수와 자료형
    	- 키워드 및 식별자
    ==========================================*/
    
    public class Test004
    {
    	public static void main(String[] args)
    	{
    		// 선언
    		// 자료형 변수명;
    
    		//변수명... (선언x)
    		//자료형... (선언x)
    
    		double height = 186.5;
    		int age = 43;
    		char degree = 'A';
    
    		String name = "윤석원";
    
    		//short age;
    		//--==>> 에러 발생(컴파일 에러)
    
    		//-- 스코프 영역 안에서 변수명은 '식별자'역할을 수행
    		//   (보이는 영역)
    
    		//String #name = "윤석원";
    		//-- 『$』와『_』를 제외한 다른 특수문자는
    		// 번수의 이름으로 활용할 수 없다.
    		// 그나마 사용이 가능한 이들 특수문자도
    		// 함부로 사용하는 것은 고려해야한다.
    		// (일반적으로 규칙을 갖고 사용할 수 있도록 활용)
    
    
    
    		//int tel = 01000000000;      -- (x)
    		String tel = "01000000000";
    		String _tel = "01000000000";
    
    		String 주소 = "서울시 마포구";
    		//-- 문법적으로 한글 단어를 변수명으로 사용할 수 있지만
    		//	 실무적인 측면에서 접근해 본다면
    		//	 절대로 한글 단어를 변수명으로 사용해서는 안된다.
    
    		
    		// 결과 출력
    		System.out.println("name : " + name);
    		System.out.println("height : "+ height);
    		System.out.println("age : "+age);
    		System.out.println(" tel : " +_tel);
    		System.out.println("주소 : "+주소);
    
    
    	}
    }
    
    //실행 결과
    
    /*
    name : 윤석원
    height : 186.5
    age : 43
     tel : 01000000000
    주소 : 서울시 마포구
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test005
      - 변수와 자료형
      - 키워드 및 식별자
      -printf()
     = (대입연산자) 를 보면 우항을 먼저 본 뒤 좌항에 대입할 것
     (* 자바와 읽는 방법을 동일 시)
    더보기
    /*=====================================
      ■■■ 자바의 개요 및 특징 ■■■
    	- 변수와 자료형
    	- 키워드 및 식별자
    	-printf()
    ======================================*/
    
    public class Test005
    {
    	public static void main(String[] args)
    	{
    		// 변수 선언(메모리 확보) 및 초기화(메모리에 값을 할당)
    		int a =10, b=5;
    
    		// 변수 선언
    		int c, d;
    
    		// 연산 및 처리
    		c = a + b;		//-- a + b 의 결과 값을 변수 c에 대입하라.
    		d = a - b;		//-- a - b 의 결과 값을 변수 d에 대입하라.
    		
    		// 결과 출력
    		// → 『10 + 5 = 15』의 형태
    		System.out.println(a + " + " + b + " = " + c);
    		//--==>> 10 + 5 = 15
    		//                숫자 문자열 숫자 문자열 숫자
    		//-- 자바에서는 서로 다른 자료형의 데이터들끼리도
    		// 『+』 연산이 가능하며
    		// 다른 어떤 자료형과 문자열 데이터의 『+』연산의 결과는 문자열.
    		// 즉, 문자열 결합 연산자로써 『+』
    
    		// println() / print() / printf() / format()
    		//  					-------------------- 동일
    
    		System.out.println("abcd");          // 출력+개행
    		System.out.print("1234");            // 출력
    		System.out.print("가나다라\n");
    
    		// ※ 문자열 영역 안에서 사용되는 『"\n"』은 개행 (개행문자)
    
    		System.out.print("\n오늘은\n뭐먹지\n혼자먹기싫은데\n같이밥먹을사람\n");
    		//--==>>
    		/*
    		오늘은
    		뭐먹지
    		혼자먹기싫은데
    		같이밥먹을사람
    		*/
    
    		// printf() / format()
    		//-- JDK 1.5 부터 지원되는 메소드
    
    		//System.out.printf("○ + ○ = ○",10,20,30);
    		//                   -- 어떤 유형의 데이터를 넣을지 옵션 값이 정해져있음 ex) 문자, 정수 등..
    		
    		System.out.printf("%d + %d = %d\n",10,20,30);            //『"\n"』 개행
    		System.out.printf("%d + %d = %d%n",10,20,30);            //『"%n"』 개행 _ 오로지 printf 에서만 기능
    		//-- 『%d』 → (10진수 정수형) 는 서식 지정 옵션
    
    		//System.out.printf("○ 과 ○\n",10,20);
    
    		System.out.printf("%d 과 %d\n",10,20);
    		//--==>> 10 과 20
    
    
    		//System.out.printf("○ 과 △\n",10,3.14);
    
    		//System.out.printf("%d 과 %d\n",10,3.14);
    		//--==>> 에러발생(런타임 에러)
    
    		System.out.printf("%d 과 %f\n",10,3.14);
    		//-- 『%f』 → 실수형 서식 지정 옵션
    		//--==>> 10 과 3.140000
    
    		System.out.printf("%d 과 %.2f\n",10,3.14);
    		//--==>> 10 과 3.14
    		//-- 『%.2f』 소수점 이하 두 번째 자리까지 표현 
    
    		System.out.printf("%d 과 %.3f\n",10,3.14);
    		//--==>> 10 과 3.140
    		//-- 『%.3f』 소수점 이하 세 번째 자리까지 표현 
    
    		System.out.printf("%f%n",3.141592);
    		//--==>> 3.141592
    
    		System.out.printf("%.4f%n",3.141592);
    		//-- 『%.4f』  소수점 이하 네번째 자리까지 표현 (기대 - 3.1415)
    		//             (반올림 발생)
    		//--==>> 3.1416
    
    
    
    
    	}
    }

    • Test006
      - 형 변환
      - 접미사 활용
      + 접두사 (8,16진수)
    자동 or 묵시적 형 변환 규칙에 위배 될 경우, 
    강제 or 명시적 형 변환이 필요하며, 이를 위해 접미사가 활용이 된다.
    더보기
    /*=====================================
        ■■■ 변수와 자료형 ■■■
    	- 형 변환 / 접미사 활용
    ======================================*/
    
    public class Test006
    {
     public static void main(String[] args)
    	{
    		int a;
    		a =10;
    		System.out.println("a의 결과 : " + a);
    		//--==>> a의 결과 : 10
    
    		int b = 20;
    		System.out.println("b의 결과 : " + b);
    		//--==>> b의 결과 : 20
    
    
    		short c;
    
    		// 연산 및 처리(대입 연산)
    		//c = a;
    		//--==>> 에러 발생(컴파일 에러)
    		//-- 기본적으로 자료형이 작은 것에 큰것을 담아내지 못한다.
    		//  (자동 형 변환 규칙 위반)
    
    		// 명시적인 형 변환(강제 형 변환)
    
    		c = (short)a; 
    		// a 가 가지고 있는 데이터를 short 형으로 형 변환을 수행한 후
    		// 변수 c 에 대입한다.
    
    		// 00000000 00000000 00000000 00001010 → int 형 a 변수에 담겨있는 10
    
            //                  ↓형 변환
    
    		// 00000000 00001010
    
    		//결과 출력
    		System.out.println("c의 결과 : " + c);
    		//--==>> c의 결과 : 10
    		
    		// 변수 선언 및 초기화
    		//int d = 10000000000;                   // 백억
    		//--==>> 에러 발생(컴파일 에러)
    
    		//long d = 10000000000;					// 백억
    		//--==>> 에러 발생(컴파일 에러)
    
    		long d = 10000000000L;					// 백억
    		//-- 접미사 『L』이 중요하다.
    		//	long 형은 숫자(상수) 뒤에 『L』또는 『l』을 붙여
    		//	상수를 표현해야 한다
    		//	즉, 약 21억 이상 되는 정수 형태의 상수에는
    		//	데이터 뒤에 접미사를 꼭 붙여줄 수 있도록 한다.
    
    		
    		System.out.println("d의 결과 : " + d);
    		//--==>> d의 결과 : 10000000000
    
    
    		// 추가 관찰
    
    		// 변수 선언 및 초기화
    		int e = 030;
    
    		// 결과 출력
    		System.out.println("e의 결과 : " + e);
    		//--==>> e의 결과 : 24
    		//-- 접두사 『0』 → 8진수
    
    		// 변수 선언 및 초기화
    		int f = 0xa6;
    		
    		// 결과 출력
    		System.out.println("f의 결과 : " + f);
    		//--==>> f의 결과 : 166
    
    
    
    		// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    		//                      a  b  c  d  e  f
    		//-- 접두사 『0x』→ 16진수
    
    		
    		// 변수 선언 및 초기화
    		//float g = 0;                  // int 0 → float g 자동 형 변환 
    
    		//float g = 0.0;                // double 0.0 → float g 자동 형 변환 규칙에 위배 - 강제 형 변환 필요!
    		//--==>> 에러 발생(컴파일 에러)
    
    		float g = 0.0f;
    		//-- 접미사 『f』가 중요하다.
    
    		System.out.println("g의 결과 : " + g);
    		//--==>> g의 결과 : 0.0
    
    
    
    
    	}
    }
    
    
    // 실행결과
    /*
    a의 결과 : 10
    b의 결과 : 20
    c의 결과 : 10
    d의 결과 : 10000000000
    e의 결과 : 24
    f의 결과 : 166
    g의 결과 : 0.0
    */

    Test007 , Test008
    - 변수와 자료형
    - 변수와 자료형 실습 및 테스트 : boolean 관찰

    true와 false로 값을 나타내는 boolean을 선언 및 초기화 할 때, 아래 사항을 주의하자!
    - boolean a = "true" ;   // "true"문자열을 담음 --(X)
    - boolean a = true;       //  true(참) 을 담음      --(O)
    클린 코드를 작성하기 위해서 이와 같이 정리하는 습관을 들이면 좋다.

    // 주요 변수 선언 (머리)
    // 연산 및 처리 (가슴)
    // 결과 출력 (배)
    더보기
    /*================================================
    	   ■■■ 자바의 개요 및 특징 ■■■
    	- 변수와 자료형
    	- 변수와 자료형 실습 및 테스트 : boolean
    =================================================*/
    
    public class Test007
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언
    		boolean a = true;          // boolean a = "true"; 다른 것!
    		boolean b;
    
    		int c=10, d=5;
    
    		// 연산 및 처리(관계 연산 및 대입 연산)
    		//b = 200 > c;
    		// b = 200>10;
    		// b = true;
    
    		b = c < d;
    		//b = 10 < 5;
    		//b = false
    
    
    
    		// 결과 출력
    		System.out.println("a : " + a);          
    		System.out.println("b : " + b);
    
    
    	}
    }
    
    //실행 결과
    /*
    a : true
    b : false
    */

    더보기
    /*================================================
    	   ■■■ 자바의 개요 및 특징 ■■■
    	- 변수와 자료형
    	- 변수와 자료형 실습 및 테스트 : boolean
    =================================================*/
    
    public class Test008
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언
    		char ch1, ch2, ch3;
    
    		int a;							    			// -- check
    
    
    		// 연산 및 처리
    		ch1 = 'A';
    		ch2 = '\n';		// 개행 문자
    		ch3 = '대';
    
    		//a = ch1;				    					// -- check
    		a = (int)ch1;			    					// -- check
    		// 명시적 형 변환
    
    
    
    		// 결과 출력
    		System.out.println("ch1 : " + ch1);
    		//--==>> ch1 : A
    		System.out.println("ch2 : " + ch2);
    		//--==>> ch2 : (개행)                          // \n 
    													   // println
    		System.out.println("ch3 : " + ch3);
    		//--==>> ch3 : 대
    
    		System.out.println("a : " + a);
    		//--==>> a : 65
    
    
    
    		// 추가 관찰
    		//System.out.printf("○, ○, ○, ○\n", ch1, ch2, ch3, a);
    
    		//System.out.printf("%d, %d, %d, %d\n", ch1, ch2, ch3, a);
    		//--==> 에러 발생(런타임 에러)
    
    		System.out.printf("%c, %c, %c, %d\n", ch1, ch2, ch3, a);
    		//--==>>
    		/*
    		A,
    		, 대, 65
    		*/
    	}
    }
    
    // 실행 결과
    
    /*
    ch1 : A
    ch2 :
    
    ch3 : 대
    a : 65
    A,
    , 대, 65
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test009
      - 변수와 자료형
      - 변수와 자료형 실습 및 테스트 : double    // 실수의 기본 자료형
      - 나눗셈 연산 실습
    ※ 나눗셈 연산시 주의사항
    - 정수 / 정수
    : 나눈 몫만 취함
    - (정수 / 실수) or (실수 / 정수) or (실수 / 실수)
    : 하나라도 실수일 경우, 실수기반의 연산하여 실수형태의 결과값을 도출해낸다.
    더보기
    /*================================================
    	   ■■■ 자바의 개요 및 특징 ■■■
    	- 변수와 자료형
    	- 변수와 자료형 실습 및 테스트 : double
    	- 나눗셈 연산 실습
    =================================================*/
    
    public class Test009
    {
    	public static void main(String[] args)
    	{
    		// 정수와 정수의 나눗셈 - 몫만을 취함
    		double a = 1 / 2;
    		// double a = 0 ;
    		// double a = 0.0;
    		System.out.println("double a : " + a);
    		//--==>> double a : 0.0
    
    	
    		double b = (double)1 / 2 ;
    		// (double)1 / 2 ;
    		// 1.0 / 2 ;
    		// 0.5
    		// double b = 0.5
    
    		System.out.println("double b : " + b);
    		//--==>> double b : 0.5
    
    
    		double c = 1/2 + 1/2;
    		// 0 + 0;
    		// double c = 0
    		// double c = (double) 0.0
    
    		System.out.println("double c : " + c);
    		//--==>> double c : 0.0
    
    
    		double d = 1 / 2.0;
    		// 1 / 2.0;
    		// 0.5
    		// double d = 0.5
    
    		System.out.println("double d : " + d);
    		//--==>> double d : 0.5
    		//-- 나눗셈 연산과 관련하여
    		//	 피연산자 중 실수가 하나라도 포함되어 있다면
    		//	 연산을 실수 기반의 연산이 수행되며
    		//	 결과 값 또한 실수 형태로 반환된다.
    
    		double e = 3/2 +1/2;
    		//double e = 1 + 0;
    		//double e = 1;
    		//double e = (double) 1.0;
    		System.out.println("double e: " + e);
    		//--==> double e: 1.0
    
    
    		double f = 3/2 + 1/2.0;
    		//double f = 1 + 0.5;
    		//double f = 1.5;
    		System.out.println("double f: " + f);
    		//--==>> double f: 1.5
    
    
    	}
    }
    
    // 실행 결과
    
    /*
    double a : 0.0
    double b : 0.5
    double c : 0.0
    double d : 0.5
    double e: 1.0
    double f: 1.5
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test010
    // ○ 퀴즈
    // 사전에 부여된 반지름 정보를 통해
    // 원의 넓이와 둘레를 구하는 프로그램을 구현한다.
    // → 반지름 : 10

    // ※ 원의 넓이 = 반지름 * 반지름 * 3.141592
    //   원의 둘레 = 반지름 * 2 * 3.141592

    // 실행 예)
    // 넓이 : xxxx
    // 둘레 : xxxx
    // 계속하려면 아무 키나 누르세요...

    풀이)

    더보기
    public class Test010
    {
    	public static void main(String[] args)
        {
        	// 주요 변수 선언 및 초기화
        	int r = 10;						// 반지름 변수 선언
            final double PI = 3.141592;		// 원주율 상수화(final)*
            double area, round;				// 원의 넓이, 둘레의 변수 선언
            
            // 연산 처리
            area = r * r * PI;
            round = 2 * r * PI;
            
            // 결과 출력
            System.out.println("넓이 : " + area);
            System.out.println("둘레 : " + round);
        }
    }
    // 실행결과
    /*
    넓이 : 314.1592
    둘레 : 62.83184
    계속하려면 아무 키나 누르십시오 . . .
    */
    ※ 변수의 상수화
    // 키워드 『final』→ 변수를 상수화 시킬 때 사용하는 키워드
    // 이와 같이 상수화 시켰을 때 대문자로 나타냄.
    // 대문자만으로 나타냈을때 가독성 낮아지는 규칙있는 단어들은 '_' 활용
    ex)    rainbowColor → RAINBOW_COLOR
             userName → USER_NAME
             penPrice → PEN_PRICE

    비트 연산자, 변수와 자료형 / 키워드 및 식별자 / 연산자 실습, final(상수화)

    728x90
Designed by planet-si