Java

Java 개발 공부 3일차 (21.08.19)

Pearl_mini 2021. 8. 22. 13:06
728x90

3일차에도 계속 자바언어에 대하여 배웠다. 

지금까지는 강사님의 자료를 통해 먼저 봤고 "이것이 자바다"라는 교재를 통해 오늘은 복습에 추가로 공부했다.

 

저급언어: 기계어(0과1)와 비슷한 언어로 사람이 알아보기 어려운 언어를 말한다. 대표적으로 '어셈블리어'가 있다.

고급언어: 보통의 프로그래밍언어로써 사람이 알아보기 쉬운 언어를 말한다. 대표적으로 자바,C, C++ 등이 있다.

 

C언어 - 절차지향언어인데, 절차지향 언어는 규모가 큰 프로그램을 만들다 보면 유지보수가 어려운 것이 단점이다.(확장자 .c -> 컴파일 후 바로 .exe 실행파일이 됨)

자바 - 이식성이 높음, 객체지향언어 (OOP: Objext Oriented Programming, 객체지향프로그래밍), 메모리 관리를 알아서 해줌, (.java (소스파일) ----  java.exe를 이용하여 ----> .class(바이트코드)로 변환! class파일을 실행하기 위해서 JVM 자바 가상 기계가 필요하다. 자바가 중간단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하고 이것이 JVM: Java Virtual Machine),C언어나 C++에 비하여 VM이 필요하여 속도가 느리다.

 

**명령프롬포트에서 java -version 엔터 치면 API 버전이 나옴.

 

API 문서를 참고해서 여러 기능들을 확인하는 것이 좋다.

ex) Scanner (Java Platform SE 8 ) (oracle.com)

 

이클립스 퍼스펙티브와 뷰

 -기본 개발과 디버그 퍼스펙티브 사용해봄

 - 퍼스펙티브는 디버깅 할 때 변수나 변수를 이용한 계산값을 직접 지정하여 데이터를 확인할 수 있다.

 

유니코드 (아스키문자 포함-특수기호 및 영어 알파벳), 한글도 코드가 부여되어 있음.

자바에서는 char 타입으로 2 byte 제공함.char는0과 양수만을 가진다.

 

char c  = ' '; 으로 공백(유니코드 32)으로  or 역슬래시0 = NULL의미 로 초기화

int i = 0; 으로 초기화

String str = ""; 로 초기화

double d = 0.0; 으로 초기화

 

float 타입은 숫자 뒤 F, long 타입은 숫자 뒤 L 붙여줘야 type mismatch가 나지 않는다.

(기본형은 int, double이므로 숫자만 적어주면 됨)

실수형에서 지수(e로 10의 지수 나타냄), 가수 부분으로 수를 표현할 수 있다. 자주 사용하지는 않음.

실수형은 int값이 담길 때 소숫점 자리 .0 으로 실수타입으로 출력된다.

 

보통 대문자로 이루어진 단어는 상수를 의미함 (ex. MIN_VALUE, MAX_VALUE)

자바에서 boolean, char 타입을 제외한 기본타입들은 최대, 최소 상수값을 제공한다. (ex. Long.MIN_VALUE)

- 최대, 최소로 담을 수 있는 숫자값 확인 가능!!

 

 0 : False, 0외의 값들 : True

 

비트반전연산자(~)를 사용하면 다 int 타입으로 변경된다. (정수형의 타입에만 사용됨)

뒤에 ( ) 형태가 붙어있다면 메소드임.

같은이름의 메소드가 여러 클래스에 속해있을 수 있다. 

 

Java 의 데이터 타입

1. 기본 type (소문자 시작)

- byte, int, char, long ...

- Stack 메모리 공간에 해당 메모리만큼을 갖고, 변수명이 이름, 내용은 값이 입력된다.

 

2. 참조 type (대문자 시작, 객체로 이루어진 것들)

- String

- Stack에 메모리 공간을 갖는데 변수명이 이름, 내용은 주소값 (보통 16진수로 표시됨, 0x~~ 을 가지고, 실제 값은 Heap이라는 메모리 공간에 저장된다.

 

같은 문자열 리터럴을 생성하려고 한다면 자바는 동일한 String 객체를 참조하도록 되어있다. 그러나 new 라는 객체 생성 연산자를 사용하면 새로운 String 객체의 번지값을 가진다.

이 때 equals 메소드를 이용하면 실제 문자열이 같은지를 확인 // 비교연산자(==)를 이용하면 stack안에 값 (즉, 주소)이 같은지를 비교

 

논리 연산자는 1개짜리보다 2개짜리가 더 효율적임.  (& 보다 &&이 빠름)

1번째 조건을 확인한 후 해당하지 않으면 나머지 조건을 평가하지 않고 바로 넘어간다.

 

비트논리연산자  (복습하기**)

- 정수형에만 해당됨. (실수형은 비트단위연산이 안됨)

- 비트이동연산자 (>>, <<, >>>)

  >> 의 경우,, 양수인 경우 0을 채우고 음수인 경우 1을 채워준다. (부호수가 바뀌면 안되므로)

 

삼항연산자 (?:)

- if 조건문과 유사함. 

- (조건문 ? True일 경우 값 또는 연산식 : False일 경우 값 또는 연산식)의 형태로 사용

 

조건문

- if문 (if, else, elseif)

- switch문

 break가 없을 때 아래 모든 문장이 실행됨. break문 필수!!*

default 문장은 모든 case가 맞지 않을 때 실행되는 문장.

 

반복문

- for문 (반복 횟수를 알고 있을때)

- while문 (조건에 따라 반복할 때)

- do-while문 (일단 1회이상 실행 시켜야할 때)

 

Math.random()

 :  0.0이상 1.0 미만의 실수타입 난수를 랜덤으로 발생시켜주는 메서드.

728x90

'Java' 카테고리의 다른 글

Java 개발 공부 5일차 (21.08.23)  (0) 2021.08.28
Java 개발 공부 4일차 (21.08.20)  (0) 2021.08.22
Java 개발 공부 2일차 (21.08.18)  (0) 2021.08.19
Java 개발 공부 1일차 (21.08.17)  (0) 2021.08.17
Java 기초 공부 (변수)  (0) 2021.08.09