프로그램 실행 구조 및 개발 방법
- 자바는 완벽한 객체지향형 프로그램을 목표로 한다.
디버깅하는 법
- 중단점 설정
- Debug main 클릭해서 실행
- F6 누르면서 변수 들어오는 거 확인
package mycome.test;
// main 문을 쓸 때는 main하고 바로
public class Main {
public static void main(String[] args) {
//Data
int x = 30; // x라는 주소에 3이라는 값을 올린다.
int y = 40; // y라는 주소에 4라는 값을 올린다.
int z = 0; // x + y를 z라는 값을 올린다.(메모리(주기억장치))
// string은 큰 따옴표, character는 작은 따옴표
//명령어들의 집합 sys.out하고 컨트롤 스페이스 엔터
z = x + y;
System.out.println(z);
//콘솔은 문자기반의 출력장치
//디버깅 하는 법(강제 브레이크)
//브레이킹 포인트 클릭하고, RUN - step into/ step over
// step into는 함수 만나면 함수로 따라 들어가고
// step over는 함수 만나면 건너뜀
// 단축키 F6
// 종료하고 싶으면 TERMIANTE
}
}
객체지향형 모델(In Java)
- main class(진입점, 한 개만 있어야 한다.)
- 다수의 object로 구성
대(대신하는) 수학 ex) 선형 대수학
수학의 수는 약속이고 기호이다.
SW 공학 (비용절감이 가장 중요)
- 최소한의 비용으로 최대한효과
- SW의 생성부터 폐기까지 (Life cycle)에서 발생되는 비용을 최소화
- 프로젝트 진행 방법론(폭포수 모델, 에자일 모델) - Dead line을 지키는 것이 중요함
- 프로그래밍 방법론(효율적인 방법론)
- 함수 지향형 방법론
- 객체 지향 방법론
비용절감 평가기준
- 코드 개발 시간이 줄어들면 됨 → SW의 코드 재사용성이 높으면 됨
1. 컴퓨터의 구성
컴퓨터 = HW + SW
CPU에 의해 수행을 원하는 모든 명령어는 필요로 하는 데이터와 함께 반드시 주기억장치에 적재(load)되어 있어야 한다. 만약 명령어를 수행할 때 필요로 하 는 데이터가 메모리에 없을 경우 프로그램을 정상적으로 실행할 수 없다.
SW란 원하는 산출물을 얻기 위해 HW를 조작하기 위한 명령어들의 집합체로 프로그램이라고도 한다.
- 명령어들을 해석하고 수행하는 주체는 CPU 이기 때문에 CPU가 할 수 있는 명령어를 어떤 순서로 어떻게 전달할 것인가가 프로그램 작성의 핵심이다.
- CPU가 할 수 있는 기능
- 메모리에 저장된 데이터 및 명령어 읽고 쓰기
- 연산 기능
- 제어 기능
프로세스와 메모리의 관계
- 메모리를 실행시킨다. → 해당 메모리 공간에 대해서, 원래 이 메모리 공간을 해당 프로세스가 독점하고 있었던 것
- 프로세스를 종료한다 → 해당 공간을 다른 프로세스가 쓸 수 있게 이 권한을 해제하는 것.
- 메모리를 쓰던 놈이 정리를 해놓진 않음. 어차피 들어오는 놈이 덮어 씌우면 지워짐(시간을 효율적으로 사용하기 위해)
- 메모리 확보와 함께 항상 해야 하는 게, 항상 초기화해야 한다(변수 x = 20)을 설정하는 것처럼
- 결론 : 반드시 데이터를 선언할 때는 데이터 초기화를 고민해 두고 선언한다.
2. 개발환경
DK = 유틸 + 라이브러리 + JVM(실행환경)
JVM = 실행 환경
- 자바 실행 과정
프로그램 = 명령어(실행 중 변경 불가) + 데이터(실행 중 변경 가능)
- 작성 순서
- 데이터를 명령 수행 전에 미리 준비
- 데이터를 이용한 명령어 작성
3. 타입과 연산자
변수와 데이터 타입(자료형)
- 기본형( 한 개만 담음)
- 정수형(byte, short, int, long)
- 실수형(float , double)
- 문자형(char)
- 논리형(boolean)
- 참조형(여러 개를 담음)
- 배열, 문자열, class 등
- 배열은 메모리 상에 첫 번째 메모리 값을 가져오고, 이후 쭉 나열되어 있는 변수를 부름
package mycom.test;
// 자바는 클래스명과 파일명이 일치해야한다.
// 어차피 자동으로 잡아줌
// 하나의 클래스를 하나의 .java 파일로 선언하는 걸 원칙으로 하나,
// 하나의 파일 안에 여러 개의 클래스를 선언할 수는 있으나,
// 방법을 모른다면 그냥 1대 1로 매칭하는게 가장 안정적이다.
public class Main{
public static void main(String[] args) {
// 전체 카테고리 에서 이렇게 main 두개 두면 터진다.
// 근데 커서 여기두고 하면 안 터진다. 다른 곳을 검색하지 않기 때문
int i = 10;
double d = 17.5;
double result = 0.0;
result = d; //double = int;(암묵적 형변환을 지원)
// 원칙적으로 오른쪽에 있는 변수와 오른쪽에 변수의 데이터타입이 항상 일치해야한다.
// 그런데 에러가 안나? 왜냐하면, result = 0.0 integer 메모리 공간이 있기 때문에 가능
i = (int)result;
// 에러남 4바이트 공간에 8바이트 꾸겨넣으려니까 당연히 안됨
// 그러니까 cast 해줘야함 -> (자료형)(강제 형변환)
int ch = 'c'; //문자를 숫자로 하는 거 될까? 되네 아스키 코드인듯
System.out.println(ch);
System.out.println("result = " + result);
// 두 항이 모두 숫자면 산술 연산
// character, 문자열 하나라도 포함되어있으면 문자열 concat
}
}
자료형의 형변환
연산자
4. 제어문
5. 메모리
메모리에 대용량 데이터 관리하기
배열
- 배열이란 여러 변수들을 하나로 묶어 하나의 이름으로 다룰 수 있도록 물리적으로 연속된 메모리에 저장하는 구조를 말한다.
- 단, 하나의 이름으로 여러 개의 데이터를 한꺼번에 다루기 위해 반드시 메모리를 연속적으로 할당하고 값을 저장하도록 하고 있으며, 이러한 원리로 인해 배열의 이름에는 전체 메모리 공간을 다루기 어려우므로 시작 주소만 저장하도록 한다
배열의 종류
- 정적 배열 = 실행 도중 배열의 크기를 변화시킬 수 없는 배열
6. 함수
함수 = 프로시저의 일종으로 프로그램 내에서 공통으로 반복되는 부분은 메인에서 분리해 선언하는 기능적 단위
- 프로그램을 작성할 때 프로그램을 기능에 따라 여러 개의 단위로 분해하여 작성하면 쉽게 작성할 수 있고, 수정 및 관리가 쉬워지고, 분리된 단위로 다른 곳에서 재사용이 가능해진다.
'Java' 카테고리의 다른 글
Java GUI (0) | 2023.03.22 |
---|---|
Java의 객체지향 (1) | 2023.03.22 |