본문 바로가기

Java

스택과 힙 메모리 프로그램을 구동하게 되면 해당 프로그램은 메모리 영역에 올라가게 됩니다. 이렇게 메모리 영역에 올라가 있는 코드나 데이터들을 CPU에서 필요한 명령어나 데이터를 읽어가서 프로그램이 실행되게 되는데요.크게 4가지로 구분되어 메모리에 올라가게 됩니다. 1. 코드 영역 (Code Segment)– 실제 프로그램 코드 자체가 적재되는 영역을 말합니다. C나 JAVA등의 개발 언어로 짜여진 프로그램은 컴퓨터가 이해할 수 있는 기계어의 형태로 컴파일 되어 파일 등에 저장되는데, 실제 이 파일의 프로그램에 대한 전체적인 코드 자체가 올라가는 영역입니다.– 프로그램 자체 영역으로 보시면 됩니다. 2. 데이터 영역 (Data Segment)– 프로그램이 실행되면서 필요한 변수가 저장되는 영역인데, 이 데이터 영역은 프로.. 더보기
정적메소드와 인스턴스 정적 메소드는 this 레퍼런스가 없다(인스턴스 메소드는 각각의 인스턴스마다 메모리를 할당하여 어떤 객체에서 불러왔는지 구분할 필요가 있기때문에 this가 필요하고 정적 메소드는 클래스로 선언된 모든객체에 의해 공유되기때문에 객체를 구분할 필요가없음 )– 정적 메소드는 오버라이딩이 불가하다.– 정적메소드는 인스턴스 멤버를 호출할 수 없다. 메모리 할당 순서는클래스가 메모리 할당 -> 정적 멤버변수 -> main 메소드-> 객체 생성후 -> 인스턴스 멤버 변수api 중에서 Math 라는 클래스는 수학관련된 정적 메소드로 정의 되어있음 왜냐면 매번 인스턴스를 생성하는 것이 번거롭기 때문에 클래스로 바로 접근해서 속성이나 메소드를 사용하는 것이 메모리를 보다 효율적으로 사용할수 있는 방법이라서 ~ 더보기
패키지 - Pakege 동일한 클래스를 패키지로 구분하기 위함패키지 네임은 – 회사 _인터넷_주소.패키지_이름_클래스_이름 이런식으로 더보기
메소드 오버라이딩 상속 – 슈퍼클래스, 서브클래스protected – 상속관계나 같은 패키지 내 접근가능레퍼런스 변수super – 부모 메소드나 변수를 부를때은닉변수 – 메소드 오버라이딩을하면 부모 메소드는 은닉상속에서의 생성자 – 생성자는 상속되지 않는다. 명시하지 않아도 자동 호출 서브클래스의 인스턴스가 생성되려면 슈퍼클래스의 멤버변수를 포함한 인스턴스도 생성된다. 생성자 생성자는 상속되지않는 유일한 멤버함수이다. 서브클래스의 인스턴스가 생성될 때 자신의 생성자가 호출되면서 슈퍼 클래스의 생성자를 연속적으로 자동호출한다.슈퍼 클래스 생성자가 먼저 실행되고 서브클래스의 생성자가 실행된다.\생성자 문제슈퍼클래스에서 전달인자를 갖는 생성자만 정의해 놓으면 전달인자를 갖지 않는 디폴트 생성자를 더 이상 ㅍ컴파일러가 제공하지 .. 더보기
업캐스팅과 다운캐스팅 레퍼런스형 변수 자식은 부모가 될수있다 – 업캐스팅부모는 자식이 될수 없으므로 강제적으로 형변환 해줘야함Parent p = new Child(); // 업캐스팅을 한후Child c =(Child)p // 다운캐스팅을 해야한다.이를 다운캐스팅이라한다.참고로 레퍼런스 변수들 사이의 형변환은 상속관계에서만 가능하다.다운캐스팅 서브클래스로 형변환하는 것이다.참조 가능한 영역이 확대된다. 컴파일러에 의해서 자동으로 형변환되지 않는다. 명시적으로 캐스팅을 해주어야한다. 실행시 예외사항이 발생할 수있으므로 인스턴스의 클래스 형과 참조하는 레퍼런스 변수의 상속 관계를 생각해서 명시적 캐스팅을 해야한다. (이전에 이미 업캐스팅이 된 레퍼런스 값을 다운캐스팅 하는 경우에만 안전하다.) 더보기
추상클래스 메소드구현을 강제.추상클래스는 다형성 구현 가능업 캐스팅 자식이 부모가 된다 !!! 추상클래스는 클래스의 일종이다.추상메소드와 일반 메소드를 가질 수 있다.상속을 위해서는 extends 를 쓴다.단일 상속만 가능하다. (오직 하나의 클래스에 대해서만 extends)모든 추상 메소드는 구현하여야 사용할 수있다.업 캐스팅이 가능하다.*final변수 앞에 붙이면 변수를 상수화 시킴메소드 앞에 부이면 서브클래스에서 오버라이딩 하는것을 허락하지 않는다.클래스 앞에 붙이면 상속을 허락하지 않는다. 더보기
WrapperClass – 오토박싱 오토 언박싱 박싱이란 값 형식 변수인 기본 자료형이 레퍼런스 형식 변수인 Wrapper 클래스형으로 변환하는 것을 의미한다. 스택상의 메모리 공간에 있던 값이 오른쪽과 같이 힙 상에 객체를 생성해서 스택상의 값을 복사하는 것을 박싱이라고 한다. 아… 힙 .. 뭐였지– 힙:동적 메모리 할당 또는 메모리 동적 할당은 컴퓨터 프로그래밍에서 실행 시간동안 사용할 메모리 공간을 할당하는 것을 말한다. 사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재 할당을 받을 수 있다. 이것은 프로그램이 실행하는 순간 프로그램이 사용할 메모리 크기를 고려하여 메모리의 할당이 이루어지는 정적 메모리 할당과 대조적이다.힙이란 한마디로 동적메모리할당을 위해 기억되는 메모리 할당공간기본자료형은 스택영역에 저장되는데 박싱을 통.. 더보기
스레드의 상태전이,우선순위,동기화 Skip to content 스레드의 상태전이new 로 스레드 생성 -> start() -> Runnable 상태-> run()실행-> sleep,suspend,wait 사건발생시 blocked->blocked 상태에서 스레드가 대기 run()중지 sleep()메소드 호출하고 다시 runnable 되려면 지정된 시간이 경과 해야한다 .wait() 는 다른 메소드에게서 notify 메시지를 전송받아야 다시 runnable되고, suspend 에 의해서 일시 중지 된 스레드는 resume를 통해서 재실행합니다. 이러한 시간을 요하는 작업을 반복문 대신 sleep() 메소드로 처리 할수있다. 스레드의 우선순위void setPriority (int newPriority)setPriority 전달인자로 Threa.. 더보기