본문 바로가기
728x90
반응형

study_java30

프로그램의 실행과 메모리 관리 1. 프로그램 실행 과정 자바 소스코드 파일은 컴파일러에 의해 자바 가상 머신이 해석할 수 있는 바이트 코드 파일, 즉 클래스 파일로 변환된다. 이 클래스 파일을 클래스 로더가 읽어 메모리에 올릴 준비를 하고, 자바 가상머신이 효율적인 메모리 관리를 위해 분할한 데이터 영역의 역할에 따라 클래스 파일의 데이터들이 분배된다. 프로그램이 실행되는 동안 할당된다고 해서 Run-time Area라고 불리는 영역은 클래스 영역(Method 영역이라 부르기도 함), 스택 영역, 힙 영역으로 나뉜다. 클래스 영역에는 클래스 로더가 읽어온 내용에 기반하여 클래스 데이터들이 저장된다. 전역 변수, 정적 변수(static 키워드가 붙은 변수)가 여기에 들어간다. 클래스 영역은 로더가 읽어온 내용에 기반한, 프로그램 실행에.. 2020. 5. 20.
[JAVA] 인스턴스 변수 & 클래스 변수 인스턴스 변수 인스턴스 변수는 인스턴스가 생성될 때 생성됨. 따라서 인스턴스 변수에 접근하기 위해서는 인스턴스를 생성해야한다. 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때(예-학생별 과목 성적 등)는 인스턴스 변수로 선언한다. 클래스 변수 클래스 변수는 인스턴스 변수에 static만 붙여주면 됨. 인스턴스 변수는 각각 고유값을 가질 수 있지만 클래스 변수는 모든 인스턴스가 공통된 값을 공유하므로, final 상수에 자주 붙여준다(예 - PI값: 3.14). 클래스가 로딩될 때 생성되어(그러므로 메모리에 딱 한번 올라감) 종료 될 때 까지 유지되는 클래스 변수는 public 을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역 변수가 됨. 또한 인스턴스.. 2020. 5. 20.
[JAVA]8일차 1. 클래스와 인스턴스 이해하기. 클래스는 변수(or 상수)와 함수로 구성되어 있다. 클래스 파일은 자바 컴파일러로 자바 소스코드(.java)를 바이트 코드로 구성된 파일(.class)로 바꾼것을 말한다. 클래스 파일에 기반하여 프로그램에 필요한 데이터가 메모리에 올라간다. 인스턴스는 객체와 같은 의미로, 새로운 클래스형 변수가 new 생성자로 생성되었을 때 만들어진 인스턴스를 말한다. 음.. 따로 정의한 객체 클래스를 new 생성자로 .class파일로 만들어 메모리에 올리면 "인스턴스화"되는 것이며, 인스턴스화 된 것을 인스턴스라 부른다. 인스턴스 변수는 클래스 안에 있으면서 & 함수 바깥에 선언되어 있는 변수를 말한다. 클래스 내부에 선언되어 있기 때문에, 클래스 범위 내에서는 어.. 2020. 5. 20.
[JAVA]7일차 함수(method) 함수는 변수를 가지고 실행할 코드를 정의하는 것으로, 두번 이상 사용하는 연산 등을 함수로 만드는 것이 좋다. 다만 main 함수는 프로그램이 시작되는 시작점이므로 다른 함수를 main함수 밖에서 선언하고 main함수 안에서는 다른 함수들을 사용하는 형태로 전개하는 것이 깔끔하다. 또한 무슨 용도의 함수인지 알기 쉽게 함수명을 정하는 것이 좋다. 아무래도 여러번 사용하는 만큼 매번 함수내용 보러 스크롤을 내릴 수도 없으니 말이다. 만들어 둔 함수를 사용하는 것을 "호출한다"라고 하고, 함수의 괄호()안의 것들을 매개변수 혹은 인자(파라미터)라고부른다(다 똑같은 말이다). 보통 main 함수에서 다른 함수를 호출하는데, 함수명 옆에 바디({ }영역)는 없는데 괄호().. 2020. 5. 19.
[JAVA]6일차 내용이 점점 어려워지기 시작했다 ㅎㅎ 지난주 수업까지는 특강으로 커버쳤는데 슬슬 머리 쥐어뜯고 있다.. 6일차에 배운것은 두가지당. - break/continue 무한루프 - 별(*) 찍기 break/continue 무한루프 break; --> break 코드가 가장 근접하게 포함되어 있는 반복문 탈출 continue --> 실행하던 반복문의 나머지를 생략하고 반복문 조건검사로 이동 별(*)찍기 나는 별모양을 찍기 위해서 조금씩 구현해나가는 건 줄 알았는데, 그냥 * 2 - 5>2 - 4>2 - 3>2. 조건식이 2>2가 되면 거짓. i의 for문으로 돌아감. --> 이게 계속 반복됨 2-2. 삼각형 모양으로 * 찍기 /*결과 * ** *** **** ***** */ public cl.. 2020. 5. 19.
[JAVA]5일차 오늘은 조건문과 반복문에 대해 배웠다 ! if(else if - else) / switch-case / while(do-while) / for 1. if(else if - else) if (조건식) { 실행 영역 } else if (조건식) { 실행 영역 } else { 실행 영역 } if 문은 말그대로 "만약에 ~라면"으로 시작한다. 조건식이 참일 경우 { } 영역이 실행된다. 그러나 조건식이 거짓이라면 { } 영역이 실행되지 않는다. if-else if 문은 : 예를들어 if - else if - else 형태의 코드가 있을 때 if 가 참이었다면, 나머지 else if - else 의 { } 코드를 생략한다. - if 문은 실행영역의 코드가 하나일 경우 { }를 생략할 수 있다... 2020. 5. 15.
[JAVA]4일차 4일차 수업의 핵심. 형. 변. 환. 형변환이란 변수 또는 상수의 자료형을 변환하는 것이다. 우리는 처리하려는 데이터들의 타입을 왜 굳이 바꾸어야 할까? 우선, 값이 같더라도 실수형 데이터와 정수형 데이터는 데이터 처리 방법이 매우 다르다. int형 정수 200의 bit : 00000000 00000000 00000000 11001000 float형 정수 200.0의 bit : 01000011 01001000 00000000 00000000 이처럼 같은 값이어도 데이터 bit의 형태가 매~우 다르다. 이렇게 다른 데이터들을 동시에 다루고, 연산하고, 대입해야하므로 우리는 데이터들의 자료형을 하나로 맞춰야 한다. 그리고 그 과정이 바로 형변환이다. 형변환은 변수에 변수값으로 무언가를 대.. 2020. 5. 15.
[JAVA]3일차 프로그래밍은 성급하게 손가락부터 나가면 에러천국된다. 코드를 어떻게 짤지 생각하는 버릇을 들여야 한다. 생각을 했는데도 잘 진행이 안되면, 그때는 차근차근 하나씩 해보자. 1byte = 8bit이다. bit는 0과 1로 표현되고, 값은 2진수로 계산된다. 그러므로, 1byte의 공간에 최대로 들어갈 수 있는 숫자는 11111111 ㅡ 2의 8승? NOPE ! ! ! 아니다. 음의 정수를 표현하기 위해서 컴퓨터는 최상위 비트를 이용한다. 최상위 비트가 0이면 양수, 1이면 음수로 본다. 따라서, 8비트에서 부호 비트인 최상위 비트를 제외하고 계산하면 1byte는 2의 7승까지(-128~+127) 표현이 가능하다는 것을 알 수 있다. 양수라고 가정하고, 01111111 --> 다 더해보면.. 2020. 5. 13.
[JAVA]1일차 + 2일차 효율적인 프로그래밍에는 컴퓨터 구조에 대한 이해가 도움이 될 수 있다. 컴퓨터 시스템은 하드웨어, 소프트웨어, 펌웨어의 결합으로 구성된다. 하드웨어는 컴퓨터의 실제 물리적 부품들을 말하고 CPU, 메인메모리, I/O Bus, 하드디스크, 그래픽카드 등이 있다. 특히 CPU는 컴퓨터 장치 중 가장 핵심적인 것으로, 컴퓨터로 수행되는 연산처리의 모든 것을 담당한다. CPU는 각 장치들과 '버스'를 통해 처리할, 처리된 데이터를 주고 받는다. 메모리와 통신하는 버스는 I/O 버스(Input/Output Bus:입출력 버스)라고 부른다. 메모리는 컴퓨터가 켜진 동안에만 데이터가 저장되고 이용되는 공간으로, 주기억장치와 보조기억장치가 존재한다. 소프트웨어는 하드웨어가 작업을 수행하도록 명령하는.. 2020. 5. 12.
메소드 체이닝(Method chaining) 곤부해야지. 수정 예정 2020. 2. 20.
728x90
반응형