JAVA 개념

안형준·2022년 5월 4일
0

JAVA

목록 보기
1/1
post-thumbnail
이클립스는 개발자가 코드 작성 시 사용하기 편리한 프로그램 중 하나이다.
용도는 특정한 프로그래밍 언어 사용의 편리성을 위함

사람이 이해할 수 있게 만들어진 컴퓨터 언어 "java"로 소스코드를 입력한다. (.java)

컴파일하면 이클립스가 컴퓨터가 이해할 수 있는 언어로 변환한다. (.class)

실행을 누르면 이클립스가 컴퓨터에 설치된 java virtual machine으로 사인을 보낸다.

사인을 받은 java virtual machine은 컴퓨터에 사인을 보낸다.

프로그램이 실행된다.

사물 인터넷 ( Internet Of Things ) : 사물이 인터넷에 연결돼서 프로그래밍 적으로 제어됨

줄여서 IOT라고도 부름

라즈베리 파이 : 교육용으로 만들어진 사물 인터넷 컴퓨터

gpio라는 핀이 있으며 자바를 이용해 몇 번 핀을 킬 지 명령이 가능함

이것이 가능해지면 

수많은 사물을 기계적으로 자동화된 방법으로 제어할 수 있음

데이터 타입에는 String(문자열)과 Int(숫자)가 있다.

+를 사용할 때 숫자는 더하는 기능이 되지만 문자에서는 문자끼리 서로 연결하는 기능을 한다.

숫자에서 사용할 수 있는 연산이 문자에서는 안되는 경우기 있고(* 곱하기 연산)

반대로 문자에서는 사용할 수 있는 연산이 숫자에서는 안되는 경우가 있따.(/length)

String(문자열)과 Int(숫자)를 구분 짓는 가장 큰 방법은

""큰 따옴표 안에 작성하면 String이 되고 Int는 숫자를 작성하면 된다.

sout > ctrl+space > system.out.println 자동 완성이 된다.

숫자형 데이터 타입에서는 + - * / 와 같은 사칙 연산을 할 수 있고,

.Math 란 수학 창고를 불러와 여러가지 작업을 진행 할 수 있다.

예를 들어 

소수점 내림을 원할 시 floor 이용 ex) System.out.println(Math.floor(Math.PI)); 

소수점 올림을 원할 시 ceil 이용 ex) System.out.println(Math.ceil(Math.PI));

자바에서 문자열의 표현

 다른 언어와는 다르게,  자바에서는 큰따옴표와 작은따옴표를 구분해준다.

- 큰따옴표 "" 는 문자열(String)을 의미 ex) "Hello World" 처럼, 여러 문자의 모임. 

- 작은따옴표 '' 는 문자(Character)를 의미. ex) 'H'처럼, 문자 하나를 의미. 

* 역슬래쉬의 기능 - 줄바꿈을 해줄 때: \n (역슬래쉬 n) 

- 이스케이프(escape) 해줄 때: (이스케이핑해주려는 문자 앞에) \ 역슬래쉬 첨가 

* 이스케이프(escape) : 역슬래쉬 \를 붙임으로써, 특정기호가 시스템상에 특정 기능으로 약속되어 있는 것을 해제 해주는 것

.replace() - 특정문자열을 바꿔주는 기능
"Hello leezche".replace("leezche", "egoing")
ㄴ leezche를 egoing으로 바꿔준다.

int (integer) - 정수 
double - 실수 
string - 문자열

변수의 효용: 어떤 값을 넣어야 하는 부분에 '변수'를 사용함으로써, 특정 값의 수정이 필요할 때 변수 하나만 수정하면 모두 일괄 수정 적용이 일어나는 폭발적인 효과가 있다.

변수의 활용상황: "값이 변할 수 있는 부분", 즉 고객 나이, 직업, 신분 등 정보가 변할 수 있는 부분을 변수로 사용하면 후에 누가 보더라도 아! 이 부분은 고객의 ~~에 대한 정보겠구나 라는 것을 유추할 수 있게 한다.

integer(정수)를 double(실수)로 적는것은 손실이 발생하지 않으니 double로 표시를 해도 바로 값이 나타나고 반대로 실수값을 정수값으로 적으면 그것은 손실이 발생하기 때문에 오류가 난다.

이러한 경우를 위해 캐스팅(casting)이라는 것을 해준다.

예를 들어 int a = (int) 1.1;

1.1은 실수이지만, 캐스팅을 통해 정수 1.1로 표현된다.

디버깅
1. 프로그램을 멈추고 싶은 곳 왼쪽에 더블클릭을 하면 브레이크 포인트(점 모양)이 생긴다.
2. 디버그를 이용해 한줄 한줄을 step over (버튼f6)을 통해  볼 수 있다.
3. 한줄한줄이 아닌 영역을 설정하여 실행시키고 싶으 끝나는 부분을 더블클릭한 후 Resume버튼
4. Step into를 누르면 해당 줄을 자세히 볼 수 있다.
5. Terminate (빨간 박스)를 누르고 우측 자바를 클릭하면 다시 코딩화면을 돌아갈 수 있다.

eclipse에서 Run Configurations로 진입하여 argument(인자)에서 입력값을 설정하게 되면, 우리는 args 라는 parameter(매개변수)를 통해 그 값들을 활용할수 있다.

1. 자바 확장자가 붙은 파일을 class 확장자가 붙은 실행 파일로 바꾸는 방법 (compile)
2. class 파일의 확장자가 붙은 파일을 실행하는것 (run)
3. 입력값을 주고 그 입력값에 따라서 출력값이 다르게 나오는 방법 (input)

path : 현재 디렉토리에 자바가 없어도, 환경변수에 설정되어 있는 패스 값을 보면서 수소문해서 찾는다. 그렇기에 cmd에서 따로 경로 입력없이 java만 입력해도 자동으로 실행되는 것

javac : java파일을 class 파일로 컴파일 하기 위한 명령어

dir : 현재 경로(directory)에 위치한 파일들을 보여준다.

java : 파일명 : 실행하고 싶은 class파일을 실행시킨다. 단, 명령어 뒤에 .class는 붙이지 않아도 된다.

실행하고자 하는 자바 프로그램과 그 프로그램에 영향을 주는 라이브러리(패키지)가 서로 다른 폴더에 있다면, java -cp ".;폴더명"을 통해 .(현재 디렉토리)를 포함하여 패키지 중 컴파일 되어 있지 않아 실행에 영향이 가는 경우 컴파일을 해준 뒤 프로그램을 실행한다.

어떤 값을 담아놓는 것이 변수

어떤 일이 수행되도록 기능을 구현해놓은 것이 메소드(함수)

변수와 메소드 중 자주 쓰이고, 함께 쓰이는 연관된 변수와 메소드들을 묶어 놓아 그룹핑한 것이 클래스이다.

여러 클래스들 중 자주 쓰이고, 서로 비슷하고, 연관된 클래스들 끼리 묶어 놓아 그룹핑한 하여 이름 붙인 것이 패키지이다.

클래스는 한번만 사용할 클래스가 있고 여러번 사용해야 할 클래스가 있다. 

클래스의 내용이 계속 변화해야 한다면, 예를 들어 텍스트 파일 안에 쓰고 있는 글이 계속 변화한다면, 하나의 클래스의 같은 메소드를 여러번 반복 하여 쓰는것은 비효율 적이고 보기에도 힘들다. 

그렇기 때문에 하나의 클래스를 복사하여 = instance 화 하여 변수에 집어 넣고 데이터 타입으로는 이게 클래스를 instance 화 한다는걸 자바에게 알려주기 위해 클래스이름을 붙여 주면. 그 클래스 안에 들어갈 메소드를 어느 클래스를 향하고 있는 건지 다시 말해 어떤 텍스트 파일을 향하고 있는 건지 자바에게 경로를 나눠 주게 되어 텍스트 파일 변경에 용이해진다.

상속은 하나의 클래스가 가진 메소드(함수)와 필드(변수)를 이어받아 본인이 원하는 대로 수정, 보완 등을 하여 하나의 (자식)클래스를 만드는 것이다.

또한 예를들어 부모 클래스가 Writer이고, 자식 클래스가 PrintWriter일 때 서로 동일한 메소드를 가지고 있게 된다면 자식 클래스인 PrintWriter의 메소드가 실행된다.

Extract local variable (로컬변수추출) alt+ shift + L 를 통해 한번에 변수화 시킬 수 있다.

Alt + 옮기고 싶은 방향의 방향키 : 다른 코드 간섭없이 깔끔하게 정리할 수 있다.

Run버튼 우측에 화살표를 눌러 Run configurations-arguments에 진입하면, 입력값을 넣을 수 있다.

조건문 
if(income > 10000.0) {
dividend1 = income * 0.5;
dividend2 = income * 0.3;
dividend3 = income * 0.2;
} else {
dividend1 = income * 1.0;
dividend2 = income * 0;
dividend3 = income * 0;
}

을 통해 income이 만원 이상일 경우에는 수익을 5:3:2로 나누고, 만원 미만일 경우에는 dividend1이 모든 것을 갖는다라는 프로그램을 만들 수 있다.

배열은 서로 연관된 데이터를 정리 정돈 및 그룹핑, 변수 간소화 해주는 도구이다.

double [ ] (double형 데이터로 이루어진 배열이다) 
dividendRates = new double[3] ; (double형 데이터 3개를 담을 수 있는 수납 상자) 
dividendRates[0]=0.5;
dividendRates[1]=0.3;
dividendRates[2]=0.2;

메소드는 서로 연관된 코드를 그룹핑하여 정리정돈한 상자이다.

메소드를 사용하는 이유는 연관된 많은 코드들을 밑에 따로 빼놓아 확인 및 변경을 쉽게 하기 위해서다.

클래스란 비슷한 종류의 멤버들(변수, 메소드)을 묶어 놓아 이름붙여 정리해놓은 상자이다.

클래스를 사용하는 이유는

- 여러 다른 종류의 변수, 메소드들이 혼재되어 있어도 '클래스 소속'을 밝혀주면 각 멤버들의 성격을 한눈에 파악할 수 있기 때문이다.

- 구현 되어있는 변수, 메소드들을 메인 스크립트에 다 적어줄 필요 없이, 클래스로 만들어 따로 빼놓고 필요한 부분에 클래스명.변수or메소드 식으로 바로 호출해 쓸 수 있어 편리하다.

- print처럼 흔한 이름의 메소드, 변수가 여러 개 존재할 경우, 클래스 소속만 다르면 중복 오류 없이 한 스크립트 내에 쓰일 수 있다.

인스턴스는 하나의 클래스를 복제해서 서로 다른 데이터의 값과 서로 같은 메소드를 가진 복제본을 만드는 것이다.

인스턴스를 사용하는 이유는 클래스의 각 기능들을 갖고있는 동시에 각 인스턴스마다 다른 데이터값을 넣어 사용할 수 있기 때문이다. 클래스의 기능들에 여러 값을 계속 추가 하다보면 버그가 발생할 수 있는데, 경우1은 ... , 경우2는 ... 과 같이 독립적인 인스턴스를 생성해 사용하면 버그발생과 같은 일을 미연에 방지할 수 있기 때문이다.
profile
개발 공부

0개의 댓글