매일 조금씩

11/09 - Java (1) : 자료형, 연산자, 제어문 본문

빅데이터 플랫폼 구축을 위한 자바 개발자 양성과정

11/09 - Java (1) : 자료형, 연산자, 제어문

mezo 2020. 11. 10. 17:12
728x90
반응형

Java 

       - 기본 문법을 많이 되풀이해서 공부(반복!)

       - 가능하면 모든 소스를 타이핑(소스 감상 금지)

 

       * 자바의 정석(필독서)

               - 동영상 강의 - 혼자 들을수 있다! (다운로드 가능)

 

 

  • 프론트엔드 →  자바스크립트
  • 백엔드      →  자바, 파이썬
  • IoT          →  c, c++

 

 

 

Unix     

           - 하드웨어(비싸) / OS(비싸) 이렇게 따로 살때의 OS.

           - 중대형급에서 사용.

           - 공공기관 / 금융 에서씀

           - c / c++ / host(IBM) cobol 을 써써 업무용 프로그램 다 만듬

           - c / c++ => 모든 라이브러리를 수작업해야하는 단점!

           + Java가 나옴! (개인용 pc용이 아니라 업무용 중대형급에서 컸다)

                    -> 풍부한 라이브러리 (손쉽게 제작 가능)

                    -> 속도가 빠르고 업무용 프로그램에 손쉽게 제작 가능하고 관리가 편했다.

                    -> 자바 개발자는 개인개발자가 없다. 혼자 개발 못한다. (팀워크 중요)

                    -> 혼자하려면 스마트폰 쪽밖에 못하지만 그것도 다른쪽과 연결되어야한다. 

 


Java

 

  1. 이식성이 높은 언어다.
  2. 객체 지향 언어다.
  3. 다양한 애플리케이션을 개발할 수 있다. -> Java SE, Java EE
  4. 막강한 오픈소스 라이브러리가 풍부하다.

 

 

 

* Java SE :  기본 라이브러리 

↑ (붙이기)

* Java EE : 기업용 추가 라이브러리  (엔터프라이즈 - 기업용, 분산)

 

P7,8

* JDK : Java SE 의 구현체 - [JRE (JVM + 표준 클래스 라이브러리) + 개발에 필요한도구] 

                                 - 개발엔 JDK(javac.exe), 사용자에겐 JRE를 준다.

* JVM : 자바 가상 기계 - 자바 프로그램은 완전한 기계어가 아닌 중간 단계의 바이트 코드이기 때문에 이것을 해석하고                                  실행할 수 있는 가상의 운영체제가 필요하다. 그것이 자바 가상 기계 이다.

                              - 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적이다.                                  따라서, 운영체제에 맞게 설치되어야한다.

* API : 표준 클래스 라이브러리

 

 

 

 

@ Java API

www.oracle.com  -> Java ->  Java 설치 -> Java SE 8 -> Documentation -> Java SE API Documentation

          *** LTS : 장기지원버전 (빨리 이거로 갈아타라!)

 

 

 

 

 

소스 

          ㅇ 메모장

          ㅇ 범용 편집기 - Visual Studio Code      <- 우린 이걸로 한다!

                    -> eclipse 없이 메모장 가지고도 짤수 있어한다. eclipse는 도움을 주는 툴이다.

          ㅇ 전용 편집기(IDE)

                    - eclipse - 전자정부프레임워크, python(pycharm도 있다)

                    - intellij - 안드로이드

 

소스 작성 규칙

클래스명 = 파일명!!

* 식별자 규칙

* 대문자로 시작(팀간의 룰)

 

public class 클래스명{
         // 프로그램의 시작점

          public static void main(String[] args){     // args 만 바꿀수 있다.
                    프로그램 기술;
                    // 프로그램의 끝
                    System.out.println("화면 출력");

          }
}

 

 

 

소스 코드 작성

 

  • 기본 형식

JDK와 JRE모두 잘 설치되어있는지 확인하고 

 

 

public class Ex01{
    public static void main(String[] args){
        System.out.println("Hello Java");
    }
}

 

실행되는 것을 확인 가능

 

주석이나 출력에 한글 넣고 싶으면

 

이렇게 해주면 한글도 된다.

 

 

 

println에서 ln은 다음줄을 의미.

 

 

 

 

 

 

+를 쓸수도 있다.

 

 

 

 

형식대로 출력하는 방법도 있다.

 

 

 

 

 

 

 

 

 

 

자료형 

 

1. 변수

p39~49

기본, 정수, 실수, 논리  

int, double, boolean, char

byte, short, long, float 등등 

 

                  ↓

 

용어들외우기(메모리 크기는 X)

 

 

  • boolean : true, false 모두 소문자로 써야함
  • char : '' 는 문자, ""는 문자열이다. 모든 문자를 유니코드로 처리한다.

        ASCII -  영문, 특수 글자, 숫자는 코드값으로 처리 

        unicode - 다국어   ex) char c4 = '\uc790';  // 하면 '자' 가 출력됨 / \u 때문에 한글자로 인식

 

 

 

  • String : 객체 형태로 정확히 class형태다. (string을 대문자로 시작하게 써야함)

 

           ※ 항상 문자는 '' , 문자열은 "" 써야함

  • float : f가 붙어야함 2.5처럼 그냥 소숫점은 double로 취급한다. 2.5f 처럼 해줘야한다.

 

 

 

2. 상수

대문자로 선언, 연결은 _ 사용

선언시, final을 붙이면 상수화 된다.

 

형변환 - 자동형변환,

          - 강제형변환 -> ()괄호를 쓴다.

 

 

 

 

 

 

 

 

 

 

 

 

연산자 

 

1. 증감 연산자

 

 

 

2. 산술 연산자

정수/정수 => 정수 => 몫(소수점이하 없어짐)

3/2 는 1.5인데 1만 나온다. 

1.5처럼 소수점이 다나오게 하려면 피연산자 중 최소한 하나를 실수화 시켜줘야한다.

ex) 3/(double)2

 

 

2-1. char 연산

char 타입도 정수 타입이므로 산술 연산이 가능하다. 

주의할 점은 char타입이 산술 연산이 될 경우 int 타입으로 변환되므로 산출 타입은 int타입이다.

public class CharOperationExample{
    public static void main(String [] args){
        char c1 = 'A' + 1;
        char c2 = 'A';
        // char c3 = c2 + 1;  // 에러발생 

        System.out.println("c1: " + c1);
        System.out.println("c2: " + c2);
        // System.out.println("c3: " + c3);
        
    }
}

여기서 c1의 'A' + 1은 리터럴 문자 'A'에 1을 더한 것인데 문자 A는 65라는 유니코드를 가지므로 'A'+1은 66이 된다.

자바는 리터럴 간의 연산은 타입 변환없이 해당 타입으로 계산하기 때문에 문제가 없다.

 

 

그러나 c3에서 c2 에 1을 더하면 c2는 int 타입으로 변환되고 1과 연산이 되기 때문에 산출타입은 int 타입이 된다.

따라서 char타입변수 c3에 대입을 할 수가 없어 컴파일 에러가 발생한다.

(리터럴연산의 결과값 변수) + 1 => int + int 

그래서 다음과 같이 되어야 한다. 

public class CharOperationExample{
    public static void main(String [] args){
        char c1 = 'A' + 1;
        char c2 = 'A';
        char c3 = (char)(c2 + 1);  

        System.out.println("c1: " + c1);
        System.out.println("c2: " + c2);
        System.out.println("c3: " + c3);
        
    }
}

 

 

 

 

 

 

3. 대입연산자

 

4. 삼항연산자

public class ConditionalOperationExample{
    public static void main(String [] args){
        int score = 85;
        char grade = (score > 90)? 'A' : ((score > 80)? 'B': 'C');
        System.out.println(score + "점은" + grade + "등급입니다.");
    }
}

 

 

 

 

 

 

 

제어문 

p108

 

1. if-else 문

public class IfElseIfElseExample{
    public static void main(String [] args){
        int score = 75;

        if(score >= 90){
            System.out.println("점수가 100~90입니다.");
            System.out.println("등급은 A 입니다.");
        } else if(score >= 80){
            System.out.println("점수가 80~89입니다.");
            System.out.println("등급은 B 입니다.");
        } else if(score >= 70){
            System.out.println("점수가 70~79입니다.");
            System.out.println("등급은 C 입니다.");
        } else {
            System.out.println("점수가 60~69입니다.");
            System.out.println("등급은 D 입니다.");
        }

    }
}

 

 

 

 

2. switch 문

원래 switch문의 괄호 안에 정수타입 변수나 정수값을 산출하는 연산식만 올수 있었는데

자바7부터는 String 타입의 변수도 올 수 있다.

 

 

 

 

 

 

반복문

          @ 구구단

 

 

          @ 문자열 출력

 

내코드

 

강사님 코드1

                           j <= 65+i를 하는 이유는 A부터 출력하기 위함

 

 

                           문자열 결합을 이용

강사님 코드2

 

728x90
반응형