[ 오늘 공부할 부분 ]

 

1. 자바 기본 이해
2. 자바 개발 도구 설치
3. 변수의 타입
4. 변수 타입 변환
5. 변수와 시스템 입출력


1.  Java 시작하기 전에

 

① Java 소개

  • 객체 지향 프로그래밍 언어 - 객체를 만들고 이 객체들을 연결해서 프로그램을 완성하는 방식
  • 메모리 자동 정리  ∴ 개발자가 코드 작성에 집중할 수 있다.
  • 오픈소스 라이브러리 풍부
  • 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여 운영체제와 독립적으로 동작할 수 있다. 
  • 따라서 자바는 모든 운영체제에서 실행 가능하다.

② Java 컴파일 과정

출처 : https://tutorial.eyehunts.com/java/how-java-program-run-java-work-compiler/

[기본 개념 정리]

  • 프로그래밍 언어 : 컴퓨터가 이해할 수 있는 기계어 (machine language)와 사람의 언어를 연결하는 다리 역할  ex) Java
  • 소스파일 (source file) : 프로그래밍 언어로 작성한 파일 ex) .java 파일
  • 컴파일 (compile) : Java Compiler에 의해 .java 파일을 .class 라는 Java bytecode로 만드는 과정
  • JVM (Java Virtual Machine) : 자바를 실행하기 위한 가상 기계

[ 컴파일 과정 ]

  • 개발자가 프로그래밍 언어로 소스파일 작성.
  • 자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일
  • 컴파일된 바이트코드를 JVM의 클래스로더(Class Loader)에게 전달
  • 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올린다.
  • 실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행한다

 

2. 자바 설치 및 IDE (IntelliJ IDEA) 설치

 

① 자바 설치

https://www.azul.com/downloads/?package=jdk 

 

Downloads

No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.

www.azul.com

  • Azul 사이트에서 [무료버전 - Java 11(LTS) - mac OS - ARM 64-bit - JDK - .dmg]  순으로 다운로드 진행
  • 터미널 창을 열고 java -version 을 입력했을 때, 버전이 제대로 나온다면 설치 완료!

터미널창 모습

 

② IntelliJ IDEA 설치 (Ultimate version)

https://www.jetbrains.com/ko-kr/idea/download/#section=mac

 

다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE

 

www.jetbrains.com

  • IDE 란 ? IDE(Integrated Development Environment, 통합 개발 환경). 소스를 작성하는 것부터 서버를 실행, 터미널 사용, 각종 라이브러리 관리 등 다양한 기능이 통합되어 있는 툴

 

3. Java 변수 타입

 

① 변수 기초 지식

  • 변수 : 값을 저장할 수 있는 메모리 번지에 붙인 이름. 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다.
  • 변수 선언 : 변수의 타입과 이름을 정하는 것. 자바 언어의 변수 선언의 규칙은 아래와 같다. (출처 : www.oracle.com)
Except for variables, all instance, class, and class constants are in mixed case with a lowercase first letter. Internal words start with capital letters.
Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed.
Variable names should be short yet meaningful. The choice of a variable name should be mnemonic- 
that is, designed to indicate to the casual observer the intent of its use.
One-character variable names should be avoided except for temporary "throwaway" variables.
Common names for temporary variables are i, j, k, m, and n for integers; c, d, and e for characters.
  • 변수 사용 범위 : 변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지만 사용이 가능하고 밖에서는 사용할 수 없다. 

변수 사용 범위 에러 예시

  • 변수 초기화: 변수에 최초로 값이 저장될 때 변수가 생성되는 것. 초기화되지 않은 변수는 컴파일 에러를 발생시킨다.

변수 초기화 에러 예시

 

 

 

② Java 변수 타입

 

출처 : https://vertex-academy.com/tutorials/en/types-variables-java-create-variable/

 

  • 정수 타입: 정수를 저장할 수 있는 타입. byte, short, int, long 타입
  • char 타입: 작은따옴표(')로 감싼 하나의 무자 리터럴을 저장할 수 있는 타입
  • String 타입: 큰따옴표(")로 감싼 문자열을 저장할 수 있는 타입
  • 실수 타입: 실수를 저장할 수 있는 타입. float, double
  • boolean 타입: 참과 거짓을 의미하는 true와 false를 저장할 수 있는 타입

 

4. 변수 타입 변환

 

 자동 타입 변환: 자동으로 타입이 변화되는 것. 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장 될 때 발생

 

 

  • 정수 타입 연산에서  int 타입 보다 작은 byte타입의 변수는 int타입으로 자동 타입 변환되어 연산 수행
  • char/short 타입도 마찬가지로 int 타입으로 지동 타입 변환 된다.
  • 반면, long타입의 경우 int타입 보다 허용범위가 크기 때문에 변수결과를 long 타입으로 변수에 저장 한다.

 

 강제 타입 변환(casting) : 강제로 타입을 변환하는 것. 값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 쪼개어서 저장하는 것

 

강제 타입 변환 예시
실수 연산에서의 강제 타입 변환 예시

③ 문자열 결합 연산: 문자열과 + 연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어남

 

 

  • 문자열 연산은 앞에서 부터 순차적으로 + 연산 수행
  • 피연산자 중 하나가 문자열일 경우 나머지 피연산자도 문자열로 자동 변환된다.
  • 만약 우선 연산하고 싶은 부분이 있다면 해당 부분을 괄호()로 감싸주고 연산을 수행

 

④ Integer.parseInt(): 문자열을 정수 int 타입으로 변환

⑤ Double.parseDouble(): 문자열을 실수 double 타입으로 변환 

※문자열 타입 변환 연습 문제

Q) var1 부터 var4 까지 + 연산을 수행해서 int 타입 result 변수에 9 가 저장되도록 ()에 들어갈 코드를 작성하시오.

long var 1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = ( 이곳의 답안을 작성하기! );
System.out.println(result);

더보기

답안 : (int)(var1 + var2 + var 3+ (int)(Double.parseDouble(var4)));

 

5. 변수와 시스템 입출력

 

① System.out.println(): 괄호에 주어진 매개값을 모니터로 출력하고 개행

② System.out.print( "형식문자열", 값1, 값2, ... ): 괄호에 주어진 매개값을 모니터로 출력하고 개행하지 않음

③ System.out.printf() : 괄호에 주어진 형식대로 출력

출처 : wikifidia

* printf() 참고할 만한 자료 : https://www.baeldung.com/java-printstream-printf

 

Formatting Output with printf() in Java | Baeldung

Learn how to format output using Java's PrintStream.printf() method

www.baeldung.com

 

④ System.in.read(): 키보드에서 입력된 int 타입의 키코드를 읽음

⑤ Scanner: 키보드에 입력된 String 타입의 문자열을 읽음

 

 

'Coding > Java' 카테고리의 다른 글

[06] Java 참조 타입  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11
[02] 생활코딩 Java 입문 강의 정리 (2)  (0) 2022.11.04
[01] 생활코딩 Java 입문 강의 정리 (1)  (0) 2022.11.04

 내용정리 

 

1. 자바에서 코드는 의도를 잘 파악할 수 있게 작성해야 하는데, 그때 사용하는 중요한 수단 중 하나가 "변수"이다.

2. 자바에서는 변수의 데이터타입을 엄격히 제한하기 때문에 데이터타입을 잘 정의해 줘야한다.

3. 변수의 데이터타입을 바꾸고자 할때는 Casting을 검색해서 찾아 데이터타입을 명시적으로 변환해준다.

 

 

 

 Java 데이터타입 

출처 : https://catsbi.oopy.io/6541026f-1e19-4117-8fef-aea145e4fc1b

 

  • 숫자형 : 정수형 - byte, short, int ,long  (아무것도 쓰지않으면 int 로 잡는다)
                 실수형 - float, double (아무것도 쓰지않으면 double 로잡는다)
  • 논리형 : boolean - true / false (논리형 리터럴) [리터널=값 ]  
  • 문자형 : char
  • 문자열  : String (혼자만 대문자를 쓴다)

출처 : https://kingpodo.tistory.com/54

 


 

 

 

윗 코드를 출력했을 때 값

 

 

변수 정의하기
변수의 데이터타입 정의
변수 데이터타입 바꾸는 방법

 

 


 

[출처] https://www.opentutorials.org/course/3930/26656

'Coding > Java' 카테고리의 다른 글

[06] Java 참조 타입  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11
[03] Java 시작하기(설치), 변수와 타입  (1) 2022.11.11
[01] 생활코딩 Java 입문 강의 정리 (1)  (0) 2022.11.04

 java의 동작 원리

  1. java 언어로 쓰여진 source code는 우리의 컴퓨터는 인식을 하지 못하기 때문에
  2. java 기반으로 이루어진 java virtual machine이 필요하다.
  3. java 언어로 쓰여진 source code를 컴퓨터 언어로써 인식을 하기 위해서 compile을 진행하게 되고,
  4. 컴파일을 진행하게 되면 java application.class로 인식을 하게 된다.
  5. class로 인식이 된 source를 실행시키게 되면, virtual machine으로 컴퓨터 내에서 동작하게 된다.

출처 : 생활코딩 https://www.opentutorials.org/course/3930/26656

 

  • class : binary(bin)=컴퓨터가 읽을 수 있는 언어 >> Application(Program)
  • java : 소스코드(src)=사람이 읽을 수있는 언어
  • Compile이란? 확장자가 .java인 파일을 기계가 이해할 수 있도록 전환하는것 (.java 를 .class로 전환)
  • JVM이란? Java Virtual Machin 즉 자바를 실행하는 가상기계 (.class 파일을 읽어서 동작시킴)

 

java의 기본 구조와 개념 정리

  • 자바에서 패키지(package)는 관련된 클래스 또는 인터페이스를 그룹으로 묶어 놓은 것
  • 자바 프로그램은 한 개 이상의 클래스로 구성된다.
  • 클래스는 한 개 이상의 필드(field)와 메서드(method)로 구성된다.

 

출처 : 생활코딩 https://www.opentutorials.org/course/3930/26656


① 패키지 

  • 클래스는 물리적으로 하나의 클래스 파일(확장자 .class)인 것처럼 패키지는 물리적으로 하나의 디렉터리이다.
  • 따라서 하나의 패키지는 디렉터리에 저장된 클래스 파일들이다.

 

② 클래스(Class)

  • 클래스는 객체에서 공통된 상태와 행동을 모델링한 것으로 설계도와 유사하며, 다음과 같은 구성요소로 이루어 진다.

         - 필드(field): 객체에 속한 데이터(객체의 상태, 속성, 특징, 정보, 명사적 의미)를 저장할 변수
         - 메서드(method): 필드 상태를 조작할 수 있는 함수
         - 객체의 행위(behavior, 행동, 동작, 기능, 방법, 데이터 조작, 동사적 의미)

  • 객체란 실 세계에 존재하는 모든 것(일상 생활에서 볼 수 있는 사물)과 아이디어 같은 개념을 총칭한다.
  • 모든 객체는 상태(state)와 행위(behavior)로 구성되고 객체는 클래스로부터 생성된다.
  • 클래스 정의란 클래스를 구현하는 것으로 클래스 헤더와 몸체로 구성된다.
  • 클래스 헤더는 class 예약어로 시작하여 이 뒤에 클래스 이름을 기술한다. 관례상 클래스 이름(클래스명)은 대문자로 시작한다.
  • 클래스 몸체는 스텁(메서드의 기능은 없지만 컴파일이 가능하도록 빈 중괄호) 안에 넣어 정의한다. 즉, 중괄호 { 와 } 내부에 필드와 메서드가 구성됨

출처 : https://palpit.tistory.com/

 

 

③ 메서드와 main() 메서드

  • 클래스에서 꼭 필요한 행위를 포함하려면 메서드를 정의해야 한다.
  •  메서드(method: 함수)는 어떤 특정한 행위(동작, 기능)을 구현하는 함수
  • 클래스의 메서드는 해당 클래스로부터 만들어지는 객체에게 메서드로 표현된 기능을 부여하는 것이고, 객체에게 메서드로 표현된 행위 능력을 갖게 하는 것
  • 클래스를 실행하기 위해 반드시 main 메서드를 정의해야 한다. main 메서드는 자바 프로그램 실행이 시작되는 특별한 메서드이다.
  • 메서드 정의는 클래스(또는 인터페이스) 안에 정의(메서드 기능 구현)한다.
접근지정자    반환 자료형    메서드명(매개변수)  {

        // 몸체 (메서드 처리 내용)

  }

 

메서드의 정의 형태는 마치 제품을 만든(몸체) 후 그 제품을 담기 위해 포장(중괄호 {}) 하고 제품명을 붙이는 것(메서드 명)과 유사

 

 

메서드의 구성 요소

  메서드 헤더(Header)   접근 지정자, 반환형(return type), 메서드 명, 매개변수로 구성
  접근 지정자(access specifier)   멤버 변수와 메서드에 접근을 허락하는 레벨을 나타냄 (public, static)
  반환형(return type)   객체가 메서드 호출의 결과로 돌려주어야 하는 정보.
  (void라고 지정된 메서드는 메서드 호출의 결과로 돌려줘야 할 정보가 없다는 것)
  메서드 명   사용자가 해당 기능에 부합하는 이름을 지정
  매개변수(parameter)   메서드가 호출될 때 요구되는 입력 값을 받아서 저장하는 변수.
  메서드 명 다음에 오는 소괄호 (와 )에 표기함
  인자(argument)   메서드를 호출할 때 함께 전달하는 정보. 인자는 매개변수에 대응하여 치환된다.
  매개변수와 인수는 반드시 동일한 자료형과 동일한 순서, 동일한 개수대로 사용해야 함
  ( ※ 두 개 이상의 값을 전달받는 메서드라면 각 매개변수마다 자료형을 반드시 표기해야 한다.
  각 매개변수는 콤마로 구분.)
  메서드 몸체(body)   실제로 객체가 할 행위를 적어주는 곳. 스텁 안에 메서드 기능을 기술하여 정의
  식별자(Identifier)   식별자는 클래스, 변수, 메서드 등에 붙이는 이름
  예약어(Keyword)   예약어는 미리 용도가 정해진 이름으로 식별자로 사용할 수 없다.
  접근 지정자(Access specifier)   접근 지정자는 멤버 변수와 메서드에 접근을 허락하는 레벨을 나타냄

 

 


[출처]

출처 : 생활코딩 https://www.opentutorials.org/course/3930/26656

          https://palpit.tistory.com/entry/Java-1-Java-%EA%B8%B0%EB%B3%B8-%EA%B5%AC%EC%A1%B0

'Coding > Java' 카테고리의 다른 글

[06] Java 참조 타입  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11
[03] Java 시작하기(설치), 변수와 타입  (1) 2022.11.11
[02] 생활코딩 Java 입문 강의 정리 (2)  (0) 2022.11.04

+ Recent posts