Java

Day1

jineric 2023. 1. 14. 16:24
1. JVM(자바 가상 머신)
    - 여러 운영체제에서 동일한 실행결과가 나오도록 설계

    소스코드 -> 컴파일 -> byte코드로 변환됨(기계어롭 변환) -> jvm에서 실행


    .java파일 : 소스코드 , 변경등이 가능하다.
        -it회사는 소스코드가 재산, 보안에 신중해야한다. 내 것이 아니다. 회사귀속
    .class파일: jvm에서 실행할수있게 하는 파일, 컴파일 후 기계어로 변환된 파일
        -class파일을 java파일을 어림잡아 복원하는 해커들이 존재한다.
        -ex) 윈도우익스플로어를 개발

2. 자바의 소스코드

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("안녕하세요. java!");
            System.out.println(100);
        }
    }

    - 파일명과 class명은 동일해야한다.
         src내부 파일명과 코드상 class명
    - 대소문자가 명확히 구별해야 함
    - 문장의 끝은 ;(세미콜론)을 붙여야 한다.


3. 문장의 출력
    - System.out.println();  한 줄 값에 값을 출력한 후. \n을 붙이지 않아도 알아서 줄 바꿈이 됨
    - System.out.print();    한 줄 값에 값을 출력한 후 \n을 붙이지 않으면 줄 바꿈이 안됨 , \n에 의해서 다음 줄값을 출력함


4. 주석문
    - 인수인계용도
    - 내 코드를 내가 분석하는 시간을 줄이기 위해서

        -//          : // 부터 라인 끝까지 주석으로 처리
        -/* 내용 */   : /*와 */사이에 이쓴ㄴ 모든 범위의 내용을 주석으로 처리
        -/**  */     : 자바더주석, jsm더 ,  주석 자바클래스나 인터페이스, 생성자, 메소드를 설명할때 사용 => 실무에서 주료 사용

5. 변수(Variable)
    - 하나의 값을 저장 할 수 있는 메모리 공간
    - 변수를 선언하는 방법

         데이터타입 변수이름:

            int a:

                => 램에 jvm 공간속에 스택영역에 4byte 메모리이름을 a라고 지정

    - 데이터 타입(스텍영역에 저장되는 기본테이터타입)
        정수(음의 정수 0 양의 정수) : byte(1byte, 2^8, -128~0~127), short(2byte. 2^16, -32768~0~38767), int(4byte, 2^32, 약-21억~0~약21억), long(8byte)
        실수(소수점 추가)          : float(4byte, 소숫점 6째까지), double(8byte)
        문자                      : char(2byte)
            문자형            ''   : 1글자 => 2byte => 유니코드사용 /  아스키코드는 1byte 사용
            문자열 (문자배열)  " "  : 컴퓨터 내부에서는 사실 없다. => char + char + ....  => 내부적으로 char를 연결함
            string 은 사실 자료형이 아니라 매소드  => char + char + char +.... 이런 형태로 되어있다.
        논리 : boolean(1byet => true(=0), fales(=1))


    1bit : 0 or 1
    1byte : = 8bit = 2^(8) 개의 정보저장가능

        byte a = 300; (x)

    - 변수이름 작성방법
        1. 첫글자는 문자 또는 "$", "_" 를 사용해야한다.
            apple, $apple, _apple
        2. 첫글자를 숫자로 시작할 수 없다.
            1apple(x)
        3. 대소문자를 구별
            apple 변수와 Apple는 서로 다름
        4. 문자수의 길이 제한은 없다.
           ajsdkfljas;dlkfjals;djfal; = 10;
        5. 예약어는 사용할 수 없다.
           true, false, if, while, for.....
        => 해결법 : true1 (숫자를 붙이면 사용가능)
        6. 관례) 첫글자는 소문자로 시작, 다른 단어가 붙을 경우 첫글자를 대문자로함 (권장)
            myScore, nextCount
           ***클래스는 대문자로 시작.

    -변수의 초기화
        int a;
        a = 10;

            => 램에 jvm 공간속에 스택영역에 4byte 메모리이름을 a라고 지정 => ㅁㅁㅁㅁ에 맨 오른쪽 부터 체움
            => 각 ㅁ칸 마다 8개의 bit가 존재
            => 10을 오른쪽부터 2진법으로 채운다.
            => 00000000/00000000/00000000/00001010

    -변수의 선언 및 초기화
            데이터타입 변수이름 = 값;
            int a = 10;

        -변수는 바뀔수있다.
        -변수는 객체일수도있고,,,, 다양한 형태일수 있다.

    - 변수의 재대입
        변수이름 = 값;

        int a = 10;
        System,out.println(a); //10

        a= 5;
        System,out.println(a); //5

        a: a는 변수로써 모양의 형태는 문자의 형태이지만 메모리의 주소를 저장함
        = : 우측에 있는 값을 왼쪽에 대입해라 즉  x <= 10 형태


6. 연산자 (operator)
    - 프로그램에서 데이터를 처리하여 결과를 산출
    - 연산에 사용되는 표시나 기호
    - 산술연산자
        +, -, +, /, %

    - 비교연산자
        >, <, >=, <=, ==(같다.), !=(다르다.)
        => 비교연산자의 결과는 boolean형

    - 증감연산자
        변수에 값을 1증가 시키거나 1감소 시키는 연산자
        ++변수; 다른연산을 수행하기 전에 값을 1증가시킴
        --변수; 다른연산을 수행하기 전에 값을 1감소시킴
        변수++; 다른연산을 번저 수행한 후 값을 1 증가시킴
        변수--; 다른연산을 번저 수행한 후 값을 1 감소시킴

        int a = 1;
        ++a;
        Syetem.out.println(a) // 2

        int a = 1;
        a++;
        Syetem.out.println(a) // 2
        ---------------------------------------
        int x = 1;
        int result = ++x;
        result:2 , x:2

        int x= 1;
        int result = x++;
        result:1, x:1

    - 대입연산자
        값을 변수에 저장해주는 연산자.
        =, +=, -=, +=, /= , %=

        int num1 = 10;
        num += 1;       (=>   num = num + 1)

    - 논리연산자
        &&(and) ||(or) ^(hat) !

        AND연산
        boolean && boolean
            예) 정보처리기사 합격조건 , 로그인
                -평균점수 60점 이상
                -각 과목당 40점 이상

        A   &&  B   결과
        t       t   t
        t       f   f
        f       t   f
        f       f   f

        ---------------------------------------
        OR연산
        boolean || boolean
            예) 주민등록번호의 성별
        1 또는 3 또는 5 또는 7 또는 9 는 남자
        2 또는 4 또는 6 또는 8 또는 0 은 여자

        A   ||  B   결과
        t       t   t
        t       f   t
        f       t   t
        f       f   f

        ---------------------------------------
        ^(햇)  xor 연산자
        => 같으면 f
        => 다르면 t

        ---------------------------------------
        ! NOT연산
        => 반대로 바꿔줌
        !Boolean

         !B   결과
          t    f
          f    t


    - 비트연산자
        &, |, ^ , << , >>
        메모리가 부족 할 경우를 대비해서 메모리의 2진법을 직접 사용하기 위해서

        ex)
        10진수 28  => 2진수 11100

        1024     512      256    128    64   32  16   8   4   2   1
                                                  1   1   1   0   0

        10진수 25  => 2진수 11001
        1024     512      256    128    64   32  16   8   4   2   1
                                                  1   1   0   0   1
        -----------------------------------------------------------
        &(and)                                    1   1   0   0   0  => 24
        |(or)                                     1   1   1   0   1  => 29
        -----------------------------------------------------------
        ^                                         0   0   1   0   1  => 5
        -----------------------------------------------------------
        <<(shft)    ex) 28<<2           1     1   0   0   0   0   0  => 112
        >>(shft)    ex) 28>>2                             1   1   1  => 7



    - 삼항연산자
        3개의 피연산자를 필요로 하는 연산자 이며, 앞의 조건식에 따라 : (콜론) 앞뒤의 피연산자가 선택

            조건식 ? 값1 : 값2

            (결과 boolean)

                emo = 10 > 5 ? 😁 : 😍;