상세 컨텐츠

본문 제목

프로그래머 도전기 3일차

프로그래머가 될거야!

by Choyee 2023. 8. 29. 23:16

본문

1,2일차 때 첫걸음을 뗐다는 표현을 썼었습니다...만....

걸음마도 걷지 못하는 수준이었다는 것을 깨닫게 되었습니다

기초중의 기초를 배우고 있었다는 것을 새삼 느끼게 됐었고

그래도 다행인것은 이제서야 뭘 배우는지 그래도 알 것 같다는 점입니다

완벽히 이해하지는 못한것 같지만, 그래도 하나하나 따라해보는 데에

스스로 의의를 두며, 3일차 마무리 하겠습니다

 

 

 

3-1

<변수>
변수 이름을 명명할 때 => 의미있게 알아볼 수 있게
                              = 가독성 있게

변수 저장 공간의 특성

 


* 자료형
             정수   문자    실수    논리
1바이트 - byte                      boolean
2바이트 - short  char
4바이트 - int               float
8바이트 - long             double

ex) int num = 넘버를 4바이트 정수로 쓰겠다는 의미


* 정수 자료형
       크기            수의 범위
byte    1             -2의7승 ~ 2의7승-1
short   2             -2의15승 ~ 2의15승-1
int      4             -2의31승 ~ 2의31승-1
long    8             -2의63승 ~ 2의63승-1

맨 앞의 비트 = 부호 비트
=> 부호 비트 제외 나머지 비트로 수를 표현

byte = 1바이트 단위의 자료형 -> 동영상, 음악파일 등 => 실행 파일의 자료 처리를 할 때 사용
short = 2바이트 단위의 자료형 -> 주로c/c++ 언어와의 호환시 사용
int = 4바이트 단위의 자료형 -> 자바에서 사용하는 정수 기본 자료 형
long = 8바이트 단위의 자료형 -> 가장 큰 정수 자료형 => 숫자의 뒤에 L 또는 l을 써서 long 형임을 표시해야 한다


* char = 문자 자료형
       => 인코딩 = 각 문자에 따른 숫자 값 부여
            디코딩 = 숫자 값을 원래의 문자로 변환

  문자세트 = 문자를 위한 코드 값(숫자 값) 들을 정해 놓은 세트
              => 아스키 = 1바이트로 영문자, 숫자, 특수문자 등을 표현
                   유니코드 = 복잡한 언어를 표현하기 위한 표준 인코딩 => 자바 유니코드 = UTF-16
              => 문자 -> 변수에 저장 = 문자에 해당하는 코드 값이 저장됨


* 실수 자료형 
float = 4바이트
double = 8바이트
부동 소수점 방식 = 실수 -> 지수부 + 가수부 로 표현 => 무한의 실수를 표현하기 위한 방식
                   ex) 0.1표현 = 1.0 x 10의-1승 => 가수1.0 / 밑수10 / 지수-1승

실수 = 보통 double형으로 처리
float 형으로 사용하는 경우 -> F,f로 표시를 해야함


* 논리형 - boolean
논리값 true, false를 표현하는 자료형
boolean으로 선언

자료형 없이 변수 사용 = 자바10
자료형이 필요한 이유 = 변수를 선언할 때 변수가 사용할 메모리 크기와 타입을 구분하기 위해 자료형을 사용
지역 변수 자료형 추론 = 변수에 대입되는 값을 보고 컴파일러가 추론

 



<상수>
* 상수 = 변하지 않는 값
상수 선언 = final 키워드 사용 => 다른 값 대입 불가능

리터럴 = 프로그램에서 사용하는 모든 숫자, 값, 논리 값
리터럴에 해당되는 값 = 특정 메모리 공간인 상수 풀에 있음 => 필요한 경우 -> 상수 풀에서 가져와서 사용
 => 상수 풀에 저장 할때 -> 정수 = int / 실수 = double로 저장
                                 -> long이나 float 값으로 저장해야 하는 경우 => 식별자 명시 필요 (L,l,F,f)


* 형 변환
묵시적 형 변환 = 작은 수에서 큰 수로, 덜 정밀한 수에서 더 정밀한 수로 대입되는 경우
명시적 형 변환 = 묵시적 형 변환의 반대의 경우, 변환 되는 자료 형을 명시해야 함 => 자료의 손실이 발생할 수 있음

 



<항, 연산자>

항 = 연산에 사용되는 값
연산자 = 항을 이용하여 연산하는 기호
(대입, 부호, 산술, 증가 감소, 관계, 논리, 복합 대입, 조건, 비트 연산자 등)

대입 연산자 = 변수에 값을 대입
                   변수에 연산의 결과를 대입 => 우선 순위가 가장 낮은 연산자
                   왼쪽 변수L에 오른쪽 변수R(값)을 대입

부호 연산자 = 단항 연산자
                   양수 음수의 표현, 값의 부호를 변경
                   변수에 +,-를 사용한다고 해서 값이 변하지는 않음
                   변수의 값을 변경하려면 대입 연산자를 사용해야 함

산술 연산자 = 사칙연산에 사용되는 연산자
                => % = 나머지를 구하는 연산자 -> 숫자 n의 나머지 = 0 ~ n-1 범위의 수
                                                           -> 특정 범위 안의 수를 구할 때 종종 사용

증가 감소 연산자 = 단항 연산자
                          1만큼 더하거나 1만큼 뺄 때 사용하는 연산자
                          => 항의 앞/뒤 위치에 따라 연산의 결과가 달라짐
                          val = ++num; => 먼저 num 값이 1증가한 후 val 변수에 대입
                          val = num++; => val 변수에 기존 num 값을 먼저 대입한 후 num 값1증가
                          val = --num; => 먼저 num 값이 1 감소한 후 val 변수에 대입
                          val = num--; => val 변수에 기존 num 값을 먼저 대입한 후 num 값1감소

관계 연산자 = 이항 연산자
                   연산의 결과가 ture, false로 반환 됨
                    == -> 두 개 항의 값이 같으면 참, 다르면 거짓
                    != -> 두 개 항이 다르면 참, 같으면 거짓

논리 연산자 = 관계 연산자와 혼합하여 많이 사용
                    && -> 두 항이 모두 참인 경우에만 결과 값이 참
                    || -> 두 항 중 하나의 항만 참이면 결과 값이 참, 두 항이 모두 거짓이면 결과 값은 거짓
                    ! -> 단항 연산자, 참인 경우는 거짓으로 바꾸고, 거짓인 경우는 참으로 바꿈
       => 단락 회로 평가 - 논리 곱(&&) = 두 항이 모두 true 일 때만 결과가 ture
                                                   => 앞의 항이 false 이면 뒤 항의 결과를 평가하지 않아도 false
                                - 논리 합(||) = 두 항이 모두 false 일 때만 결과가 false
                                                => 앞의 항이 ture 이면 뒤 항의 결과를 평가하지 않아도 ture

복합 대입 연산자 = 대입 연산자와 다른 연산자를 함께 사용함
                          프로그램에서 자주 사용하는 연산자
                           +,-,*,/ + = -> 왼쪽 항 기준 사칙연산을 하고 왼쪽 항에 대입
                           %= -> 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입

조건 연산자 = 삼항 연산자
                   조건 식의 결과가 참인 경우와 거짓인 경우에 따라 -> 다른 식이나 결과가 수행됨
                   제어문 중 조건문을 간단히 표혀할 때 사용
                   => 조건식 ? 결과1 : 결과2; = 조건식이 참이면 결과1, 거짓이면 결과2가 선택
                   ex) int num = (5>3) ? 10 : 20

비트 연산자 = 자바에서는 자주 사용하진 않음
                   정수에만 사용
                   >>> = 동일한 연산 => 채워지는 비트가 부호와 상관없이 0으로 채워짐
                   & = and연산자, 두 비트가 모두 1인 경우만 1, 아니면 0
                   | = or연산자, 두 비트가 모두 0인 경우만 0, 아니면 1
                   ^= Xor연산자, 두 비트가 다른 값이면 1, 같은 값이면 0 
                   ~ = 반전 연산자, 비트 값을 0은 1로, 1은 0으로 바꾸는 연산자
                   << = 왼쪽 shift, 비트를 왼쪽에서 오른쪽으로 이동
                   >> = 오른쪽 shift 비트를 오른쪽에서 왼쪽으로 이동
                        => ex) 정수 15의 왼쪽 2자리 이동하는 경우 = 15<<2
                              => 0000 1111 -> 0011 1100 = 결과 값 = 60
                        => 한번 밀릴 때마다 X 2, / 2

연산자 우선 순위 = 일차식 -> 단항 > 산술 -> 이동 -> 관계 -> 논리 -> 조건 -> 대입 연산자

 

012345678910

 

 

 

3-2

* 조건문 = 주어진 조건에 따라 다른 수행문이 실행되도록 프로그래밍

if문 -> if(조건식){ 수행문; } => if(age>8){
                                                     System.out.println("학교에 다닙니다");
                                         }

if-else문 -> if(조건식){ 수행문1; } else { 수행문2; } => if(age>8){
                                                                                 System.out.println("학교에 다닙니다");
                                                                      }
                                                                      else {
                                                                                 System.out.println("학교에 다니지 않습니다")
                                                                      }

if-else if-else 문 = 하나의 경우에 조건이 여러개에 해당하는 경우
                     -> if(조건1){ 문장 1; } else if(조건2){ 문장 2; } else if(조건3){ 문장3; } esle { 문장4; }
                     => 하나라도 조건을 만족하게 되면 그 다음 나머지 조건을 보지 않음 -> 그 다음 문장을 수행하게 된다

조건문과 조건 연산자
조건이 하나인 경우 -> if(a>b)          -> max = (a>b) ? a : b;
                                max = a;          = 조건 연산자
                              else
                                max = b;

switch-case문 = 조건식의 결과가 간단한 정수, 문자열의 값일 때
                  -> if-else if-else문 대신 -> switch-case문 사용 가능
                   ex) switch(rank){
                           case 1 : medalColor = "G";
                                     break;
                           case 2 : medalColor = "S";
                                     break;
                           case 3 : medalColor = "B";
                                     break;
                            default : mealColor = "A";
                          }
      => 자바 7부터 switch-case 문의 case 값에 문자열 사용 가능

0123456789

 

 

 

3-3

* 객체 지향프로그래밍 = OOP => 객체 마다 프로그램을 짜는 기준에 따라 처음과 끝이 달라지는 방식
                                             객체들을 정의, 정리하고 객체마다의 기능들이 제공이 되면
                                             이 기능들이 서로 협력이 되면서 프로그램이 완성되어지는 방식
   <-> 절차 프로그래밍 = C언어 => 시간 순서대로 구현하는 방식


* 클래스 - 객체에 대한 청사진 => 객체에 대한 속성과 기능을 코드로 구현
                                            객체의 속성 = 특성, 속성, 멤버 변수
                                            객체의 기능 = 객체가 하는 기능들을 메서드로 구현

            -> (접근 제어자) class 클래스 이름{
                   멤버 변수;

                   메서드;
                }

class = 대부분 대문자로 시작
       -> 하나의 java 파일에 보통 하나의 class가 들어감
       -> 여러개의 클래스가 같이 있는 경우 = public 클래스는 단 하나
                                                           + public 클래스와 자바 파일의 이름은 동일해야 함
       -> 자바의 모든 코드 = class 내부에 위치

클래스의 기능 -> 메서드로 구현
                       멤버 함수라고도 함
                       객체가 수행하는 기능을 구현

패키지 이름 = 소문자
클래스 이름 = 소문자로 시작해서 단어가 바뀔 때 마다 대문자
변수 이름 = 소문자로 시작해서 단어가 바뀔 때 마다 대문자
메소드 이름 = 소문자로 시작해서 단어가 바뀔 때 마다 대문자

패키지 = 소스의 묶음
패키지 이름 = 성격


* 메서드 = 함수의 일종 -> 하나의 기능을 수행하는 일련의 코드
                               -> 중복되는 기능 -> 함수로 구현 = 함수를 호출하여 사용

함수 정의 - 함수 이름 = 함수의 기능 관련
             - 매개 변수 = 함수의 수행을 위해 필요한 변수
             - return = 함수 수행 결과 반환 예약어
             - 함수 반환형 = 반환 값의 자료형을 나타냄 -> 값이 없는 경우 = void 라고 씀

함수 스택 메모리 = 함수가 호출될 때 사용하는 메모리 = 스택
                       => 함수의 기능 수행이 끝나면 자동으로 반환되는 메모리

함수를 사용하는 이유 - 효율적으로 기능 사용
                            - 코드 작성시 생긴 오류 -> 사용된 코드만 수정 => 유지, 보수 관리 용이
                            - 하나의 기능을 함수 이름에 맞게 구현하는 것이 적절하다

012

P.S. 오늘도 화이팅하는 마음으로 이클립스를 실행했는데... 띠용

       왠지 모를 오류가 떴었습니다... 알아보니 자바의 버전문제라고 해서

       난생처음 ini 확장자 파일의 내용을 건드려보았습니다.

       cmd를 활용해서 자바의 버전 정보를 정확히 확인하고

       이클립스 ini 안의 자바 버전 정보를 업데이트 하여 해결을 하고나니,

       미지의 영역이라도 찾아보고 차근차근 하다보면 할 수 있다는 자신감을 소소하게 얻게 되었습니다

        

 

2023. 08. 29 (화)

관련글 더보기