본문 바로가기
728x90
반응형

전체 글135

[JAVA]11일차 class Circle { //인스턴스 변수 double radius = 0; //static 변수 final static double PI = 3.14; //인스턴스 함수 public Circle(double r) { radius = r; } //아래 double getArea(){} 앞에 static 붙이면 radius에 빨간줄(에러남) //--> static 함수 안에 인스턴스 변수/함수가 올 수 없는 이유는 무엇일까? double getArea() { double area = radius*radius*PI; return area; } } 1. static은 무엇인가? static 키워드가 붙은 변수를 클래스 변수라 한다. static에 대해 제대로 이해하기 위해서는 데이터 영.. 2020. 5. 25.
[JAVA]10일차 1.클래스 패스: 절대 경로와 상대경로 클래스 패스는 자바 가상머신이 .class 파일을 탐색할 폴더 경로를 말한다. 클래스 패스가 뭐라고 설정되어 있는지 확인하고 싶다면, 프롬프트 창에서 'set classpath'를 입력해 주면 된다. C:\JavaStudy>set classpath 프롬프트 창으로 클래스패스를 설정하면 프롬프트 창을 껐을 때 설정내용도 사라지므로, 아마 처음 시도해본다면 classpath 환경 변수가 정의되지 않았다고 뜰 것이다. 클래스 패스를 설정하려면 set classpath뒤에 '=폴더경로'를 작성해주면 된다. 그러면 해당 폴더 경로로 클래스 패스 경로가 설정된다. 클래스 파일을 어디서 찾을 지 경로를 설정해줄 때, 경로는 절대경로와 상대경로로 나뉜다. 절.. 2020. 5. 22.
데이터 영역의 구분 1. static 영역 - 패키지나 클래스 정보가 올라갑니다. - 패키지나 클래스는 프로그램 시작과 동시에 모두 올라가는 것이 아니라, 실제로 호출 될 때 올라가게 됩니다. (JVM은 영리합니다.) - static이라는 키워드를 붙여서 선언된 필드와 메소드인 '클래스 멤버'도 static 영역에 올라갑니다. static 영역에 있는 것은 어떤 곳에서나 접근이 가능해지기 떄문에 '전역'이라는 키워드를 사용합니다. - 그러므로, static (전역) 변수는 읽기 전용이 아닌 경우에는 가능한 사용하지 말아야 합니다. (누구나 접근해서 값을 수정하면 혼란을 가져 올 수 있기 때문) - class영역 혹은 method 영역 이라고도 불립니다. - static 영역에 자리잡게되면 JVM이 종료 될 때까지 사라지지 .. 2020. 5. 21.
[JAVA]9일차 1. JVM 자바 가상머신은 운영체제에 상관없이 자바 프로그램을 실행시키기 위한 하나의 소프트웨어다. 자바 가상머신은 운영체제가 달라도 코드를 수정하지 않고 프로그램이 원활하게 실행될 수 있도록 지원한다. 이것이 자바가상머신의 핵심이자 최대장점이지만, 단점으로는 OS 위에 자바가상머신이 있어서 프로그램 수행이 조금 느리게 느껴질 수 있다. 2.생성자(Constructor) 이전 수업까지는 클래스형 변수를 초기화하는 메소드를 따로 선언을 했었다. 메인함수에서 변수를 초기화하는 메소드를 호출하여 변수의 기본 값들을 저장하고 그것을 가지고 나머지 함수로 연산을 진행했었다. 이를 대신 할 수 있는 것이 바로 "생성자"다. ConstructorClass cc = new ConstructorCl.. 2020. 5. 21.
프로그램의 실행과 메모리 관리 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.
728x90
반응형