ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TECHIT 앱 스쿨 2기: Android 3일차 (23.04.26)
    [THEC!T] 앱 스쿨2기 : Android 2023. 4. 26. 21:51
    728x90

    자료 출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 내용

     

    오늘 강의내용을 매우 간략하게 요약하자면 컴퓨터의 역사와 관련된 내용과 자바에서의 출력에 대한 내용이라고 요약 할 수 있었습니다.

     

    하기에는 오늘 배운 내용을 주제에 맞추어 배운 내용 혹은 추가 내용들을 작성하도록 하겠습니다.

    주제 일부는 생략하도록 하겠습니다.

    (운영진분께 교육자료를 그대로 쓰는 것이 아닌 제가 정리하여 작성하는 것은 오히려 좋다라고 들었기에 1일차에서는

    정말 대략적으로만 적었지만, 오늘부터는 해당 내용을 복습할겸 해서 내용을 추가하여 적도록 하겠습니다.)

    그리고 강의를 들으면서 대략적으로 적어서 순서가 다를 수 있습니다.

     

    혹시나 내용이 이상할 경우 말씀해주시면 수정하겠습니다.

     

    1.리터럴에 대하여 설명

    -> 리터럴이란 데이터 자체를 뜻하며, 변수에 넣는 변하지 않는 데이터를 의미한다.

    int number;
    num = 12

    위의 코드를 예시로 말하자면 정수형 변수 number에 정수형 리터럴 12를 할당 한 코드입니다.

    리터럴 자바에서 문자가 가르키는 값 그 자체를 뜻한다고 합니다. 12는 12이고 13은 13인것 처럼.....

     

    2. 자료형에 대하여 설명 / 표현 범위 설명

    자료형의 종류 및 자료형별 가지는 바이트 수
    논리형 : 1 byte - (boolean)
    문자형 : 2 byte - (char),
    정수형 : 1 byte - (byte), 2 byte - (short,char), 4 byte - (int), 8 byte - (long)
    실수형 : 4 byte - (float), 8 byte - (double)

     

     

    간단 요약

    -----------------------------------

    용량에 대한 설명
    ->HDD의 역사


    컴퓨터의 역사와 입출력에 대한 설명

    입력: 키보드, 마우스

    출력: 모니터


    컴퓨터 구조에 대한 설명
    ->폰노이만 구조에 대한 설명

    현재 컴퓨터의 구조인 HDD/SDD -> RAM -> CPU

    -----------------------------------

    3. 자바에서의 자료형 출력방법 설명

    자바에서의 printFormat에 대하여 설명
    printFormat와 다른 변수를 출력할때 발생하는 오류 설명

    논리형

    // 문자열 포함
    boolean a2 = false;
    System.out.printf("a2: %s\n", a2);
    // 문자열 제외
    
    boolean b = true;
    System.out.println(b);
    System.out.print(b); // 줄바꿈이 없는 출력

     

    정수형

    // 정수 타입
    // 1Byte
    byte byte1 = 127;
    // 2Byte
    short short1 = 32767;
    // 4Byte
    int int1 = 2147483647;
    // 8Byte
    long long1 = 922337203684775807L;
    
    // 문자열 포함
    System.out.printf("byte1: %d \n", byte1);
    System.out.printf("short1: %d \n", short1);
    System.out.printf("int1: %d \n", int1);
    System.out.printf("long1: %d \n", long1);
    
    // 문자열 없이 값만 출력 시
    int x = 10;
    System.out.println(x);

    실수형

    // 실수 타입
    // 4Byte
    float float1 = 11.11f;
    // 8Byte
    double double1 = 22.22;
    
    System.out.printf("float1: %f \n", float1);
    System.out.printf("double1: %f \n", double1);
    
    
    double y = 3.14;
    System.out.println(y);

    문자형

    //문자열 포함
    char char1 = 65;
    char char2 = 'A';
    
    System.out.printf("char1 : %s\n", char1); // 아스키 코드에 해당하는 문자 출력 65 = 'A'
    System.out.printf("char2 : %s\n", char2);
    
    //문자열 없음
    
    char c = 'A';
    System.out.println(c);
    System.out.print(c); // 줄바꿈이 없는 출력

    문자열형(String)

    // 문자열
    String str1 = "안녕하세요";
    System.out.printf("str1: %s \n", str1);
    
    
    String str = "Hello, World!";
    System.out.println(str);
    System.out.print(str); // 줄바꿈이 없는 출력


    // 당일 연습해야할 것 프로그래머스 혹은 백준에서 출력문제 풀어보기

     

     

    간단 요약

    -----------------------------------

    기억장소에 대한 설명(메모리)
    -> 저장 위치(개발자가 위치는 정하지 못하지만(os가 정함) 위치정보를 알려주는 이름지정 가능), 타입, 크기

    개발자가 정하는 것은 상수 혹은 변수의 이름과 자료형이라고 생각하면 된다.

     

    인코딩과 디코딩에 대한 설명

     

    인코딩 : 정보를 컴퓨터에서 사용하는 이진 데이터로 변환하는 과정 ex) 아스키 코드

    디코딩 : 인코딩과 반대로 이진 데이터나 숫자로 표현된 데이터를 사람이 읽을 수 있는 형식으로 변환하는 과정.

    ex) 파일 압축 = 인코드, 파일 압출 해제 = 디코딩

     

    -----------------------------------

     

    아스키 코드에 대한 설명

    아스키(ASCII) 코드는 컴퓨터에서 문자를 나타내기 위해 사용되는 일종의 부호 체계입니다. 이 코드는 7비트(128개)로 이루어져 있으며, 각각의 문자는 0부터 127까지의 숫자로 표현합니다. 

    아스키코드표 출처 : http://cafe.daum.net/flowlife

     

    간단 요약

    -----------------------------------

    유니코드에 대한 설명
    utf-8 주요 국가의 문자 2Byte
    utf-16 전세계 국가의 문자 3Byte

     

    -> 아스키 코드로 표현할 수 있는 언어는 영어를 표현하는데 중점을 두고 있었기에 전 세계의 모든 문자를 표현하는 데에 한계가 있어 이를 해결 하기 위해 유니코드가 개발되었음.

     

    -----------------------------------

     

    ----------------------------------- 생략 (이유 상기 출력문과 내용 중복)

    변수와 자료형 종류에 대한 설명
    변수 생성 및 정의에 대한 설명 및 실습 + 이름

    ----------------------------------- 생략

     

    형변환에 대한 설명(타입 캐스팅)

    Type Casting이란 값을 다른 타입으로 변환하는 것을 의미한다.

    -> 주요 특징으로는 자료형 별로 바이트 수가 다른데 작은 바이트수를 가진 자료형을 큰 바이트수를 가진 자료형으로 변경할 때는 문제가 되지 않는다. 하지만 반대일 경우에는 값이 변하거나 오류가 일어날 수 있다.

    // 4 byte 기억장소에 8 byte 크기의 값을 담는다.
    // 더 큰 용량을 가진 값을 작은 용량의 기억장소에 저장하기 위해서는
    // 강제로 형변환 해야 한다.
    int a3 = (int)100L;
    System.out.printf("a3 : %d\n",a3);
    int a4 = (int)40000000000L;
    System.out.printf("a4: %d\n", a4);
    
    
    // 출력결과
    //a3 : 100
    //a4: 1345294336

     

     

    연산자에 대한 설명과 실습

    최우선 연산자 :   .  [ ]   ( )
    .  -> 객체의 멤버의 접근 등 특정 매개체의 하위에 접근할 때 사용
    [] -> 배열 내 요소에 접근할 때 사용
    () -> 수식에서 우선순위를 변경하고자 할 때 사용
     
    단항 연산자 : !, ~, +/-, ++/--
    !      -> true를 false로 false를 true로 변경할 때 사용, 함수 실행 후 결과 값을 반전시킬때도 사용.
    강사님 말씀을 인용하자면 개발자의 코드 작성 스타일에 따라 사용하기도 않하기도 함.
    ~     -> 개발자가 직접 사용할 일은 거의 없지만 숫자의 비트 0을 1로 1을 0으로 변경하는 연산자.
    +/-   -> 숫자의 부호를 결정하는 연산자

    ++/--(전위형)   ->  값을 1 증가시키거나 감소시킨다.

    int answer = 0;
    ++answer;
    //위 코드와 아래의 코드는 동일한 기능을 한다.
    
    int answer = 0;
    answer = a + 1;

     

    산술 연산자 : +, -, *, /, %
    -> + 는 더하기, - 는 빼기, *은 곱하기, /은 나누기, %는 나누고 남은 나머지
    int a = 10;
    int b = 3;
    
    System.out.println(a+b); // 13 더하기
    System.out.println(a-b); // 7 빼기
    System.out.println(a*b); // 30 곱하기
    System.out.println(a/b); // 3 나누기 -> 소수점 버림
    System.out.println(a%b); // 1 나눈후 나머지 -> 10을 3으로 나누면 몫은 3 나머지는 1
     
    시프트 연산자 :  <<, >>, >>>
    비트를 이동시켜주는 연산자이다.
    -> 간단하게 결론만 말하자면 <<는 비트를 오른쪽으로 지정한 수 만큼 이동시켜 곱하기 2*n배,
    >>는 비트를 왼쪽으로 이동시켜 나누기 2*n
    int g1 = 100;
    
    System.out.printf("g1 >> 1 : %d\n", g1 >> 1);
    System.out.printf("g1 >> 2 : %d\n", g1 >> 2);
    System.out.printf("g1 << 1 : %d\n", g1 << 1);
    System.out.printf("g1 << 2 : %d\n", g1 << 2);
    		
    // 출력
    //g1 >> 1 : 50
    //g1 >> 2 : 25
    //g1 << 1 : 200
    //g1 << 2 : 400
    >>> 은 비트를 오른쪽으로 지정한 만큼 이동하며, 빈자리를 0으로 채워준다.
     
    관계 연산자 : >, <, >=. <=, ==, !=
    반환값은 true 혹은 false를 가진다.

    a > b -> a 가 b보다 크다면 true, 작거나 같다면 false

    a < b -> a 가 b보다 작다면 true, 크거나 같다면 false

    a >= b -> a 가 b보다 크거나 같다면 true, 작으면 false

    a <= b -> a 가 b보다 작거나 같다면  true, 크다면 false

    a == b -> a와 b가 값이 같으면 true,  다르다면 false

    a != b -> a와 b가 다르다면 true, 같아면 false

     

    논리 연산자 : &, |, &&, ||
    & , && : And 연산을 실행하는 공통점을 가지고 있으나,  &은 앞에 있는 조건이 false라도 뒤에 있는 조건 또한 연산한다는 차이점이 있다.

    |, || : Or 연산을 실행하는 공통점을 가지고 있으나, | 은 앞에 있는 조건이 true 라도 뒤에 있는 조건 또한 연산한다는 차이점이 있다.

    결론 그냥 &&,|| 만 사용하자..... 결과값은 동일한데 계산을 더할 필요는 없으니.... 만약 비교자체로 값을 변경해야되는 상황이 오지않는이상...?

     

    아직 적지 않은 연산자는 시간 관계상 내일 강의 해주신 다고  하셔서 적지 않았습니다.


     

    마무리

     

    아직까지는 기초인 내용들이라 어려운점은 없었으며, 오히려 다시 복습하며 기초를 다지는 기분이 들어 열심히 듣게되는 날이였습니다. 추후... 이제 모르는 내용 나오면 어떻게 될지 모르겠지만~! 최선을 다할 수 있도록 노력하겠습니다.

    자바는 알고리즘을 공부하면서 본 서적이 자바로 되어있어 해독만 가능한 수준이였는데, 추후 상황에 따라 자바와 코틀린 둘 다 원활하게 사용할 줄 아는 개발자가 되기 위한 기초를 다진다고 생각하며, 공부해야겠습니다.

    강사님 말씀중에 자바를 알아야 코틀린을 안다고 말씀하셨었었는데 저의 경우 자바에 대해서는 정말 조금만 알고 있던 상태에서 코틀린부터 독학을 했던 케이스라 처음에는 자바에 대한 거부감이 조금 있었지만, 반대로 생각해보니 조금만 알고 있던 자바를 공부하게 되면 코틀린을 지금보다 더욱 많이 알게 될 거란 생각이 들어 거부감이 많이 사라졌고 최소한 당일 강의 중 모르는 내용을 내비두지 않도록 해야겠다라는 생각을 가지게 되었습니다. 그리고 코틀린 또한 자바와 같은 jvm에서 돌아가기 때문에 자바에 있는 api들을 코틀린에서 편하게 가져다 쓸 수 있기 때문입니다.

    조금 밖에 안했지만 공부하면서 느낀거지만 코틀린으로 먼저 공부해서 그런지 아직까지는 코틀린이 편하기는......하더라구요...ㅋㅋㅋㅋㅋ 나중에 바뀔지 안바뀔지는 모르겠습니다.

Designed by Tistory.