자바멘토링(12)
-
추상클래스
추상클래스 -미완성 설계도: 미완성 메소드를 갖고 있는 메소드 package main200; abstract class Player{//추상클래스 (미완성 클래스,미완성 설계도) abstract void play(int pos);//추상 메소드 (미완성 메소드) abstract void stop();//추상 메소드(선언부만 있고 구현부{}가 없는 메소드 } -다른 클래스 작성에 도움을 주기위한 것으로 , 인스턴스 생성 불가 Player p = new Player(); //에러발생 미완성설계도 => 제품 생산 불가 -상속을 통해 추상메소드를 완성해야 인스턴스 생성 가능하다. //추상클래스는 상속을 통해 완성해야 객체 생성 가능 class AudioPlayer extends Player{ void play ..
2022.12.03 -
Weak Reference & Soft reference
자바의 Garbage Collector 는 더이상 참조되고 있지 않는 객체를 자도응로 수거하여 프로그래머가 직접 메모리를 관리하지 않아도 되도록 해준다, 하지만 모든 경우에 대해 gc가 깨끗하게 메모리를 정리해주지는 않는다, 때로는 참조가 계속 남아 있는 경우가 있을 수 있고 이런 경우에 객체는 수거되지 않고 memory leak으로 이어질 수 있다, 이와 같이 참조를 부주의하게 사용하여 발생할 수 있는 memory leak 현성을 막기외해서는 객체에 대한 참조를 유연하게 다루어 필요하지 않은 객체들이 수거 될 수 있도록 해야 한다. JAVA의 참조 유형에는 4가지가 있다, 참조유형에 따라 GC실행 대상여부와, 시점이 달라진다. Reachability # Garbage collector는 referenc..
2022.12.03 -
Static 이란?
Static은 객체를 생성하지 않아도 메소드를 호출 할 수 있는 메소드이다. Static 메소드는 클래스 변수만 사용할 수 있다는 단점이 있다. Static이 아닌 변수 이름은 static context에서 참조 x 문제 해결 방법 : 1. static 메소드에 static 을 없애고 객체 생성후 호출하기 2. 변수에 static 붙히기 ( 인스턴스 변수가 클래스 변수가 된다 , 그럴경우 모든 객체에서 하나의 값을 바라보기 때문에 문제가 발생할 수 있다.) Static 블록 어떤 클래스의 객체가 생성 되면서 딱 한번만 불려야 하는 코드가 있다 . " 한번만 호출 되어야 하는 코드" Static 블록 사용하여 구현 가능하다. 특징 1. 객체가 생성되기 전에 한번만 호출되고 그 이후에는 호출이 안된다 . 2..
2022.11.27 -
기본자료형과 참조자료형의 차이점 ?
ex1) Char v1 ='A'; if(v1=='A'){ int v2 = 100; double vs = 3.14; } boolean v4 = true; 기본자료형은 직접 값을 가지고 있다 (stack)하지만 참조자료변수는 직접값을 가지고 있지 않는다 주소값을 참조하고 변지수를 가지고 있다. ex2) int[] scores ={10,20,30}; -{10,20,30}값을 가지고 있는 배열 객체를 scores가 참조한다 -배열은 힙 영역에 생성된다 -배열의 생성번지 (주소값)을 참조 -최종적으로 변수에 참조주소가 저장된다. ex3) String name1= new String("신용권"); 클래스 타입 = 참조변수 스트링 객체를 만들고 new를 하면 그 객체가 만들어진다 new는 객체생성 연산자 이다 . 기..
2022.11.11 -
object는 무엇인가?
모든 클래스의 부모 클래스는 object이다? 자바에서는 기본적으로 아무런 상속을 받지 않으면 java.lang.object클래스를 확장한다. 이클립스가 어떻게 object를 확장하는 지 알수있을까? 답: object 클래스에 있는 메소드를 사용하면된다. ex) 내가 만약 부모 parent클래스를 상속을 받게 되면 이미 부모 parent클래스안에 object 클래스가 상속이 되어있기에 이중 상속을 받을 수 없다 -> "자바는 한번에 이중상속을 받을수 는 없지만 여러단계로 상속을 받을수는 있습니다." 왜? 모든 클래스는 object클래스를 상속 받을까? 답: object클래스에 있는 메소드들을 통해서 클래스의 기본적인 행동을 정의 할수 있기 때문입니다. "이정도의 메소드는 정의 되어 있어야 하고 처리를 해..
2022.11.11 -
jvm 실행 동작 과정
1.자바언어를 컴파일 하면(컴퓨터 언어로 번역) 바이트 코드가 되는데 그상태에서 다시 자바 언어로 되돌릴수 있는가? -자바 컴파일 과정의 거꾸로인 디컴파일에 대해서 설명 -바이트코드 상태에서 우리가 봤을때 해석이 가능한가? -빌드가 된 결과물을 우리가 들여다 봐야 한다 -빌드했을때 의도하지 않은 결과를 보고 분석할수 있어야 한다. 자바? 자바는 os에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 jvm덕분이다. 그렇다면 jvm의 어떠한 기능 때문에 os에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보자 1.개발자가 자바 소스 코드(.java)를 작성합니다. 2.자바 컴파일러(Java Compiler) 자바소스 파일을 컴파일 한다. 자바바이트 코드(.class) 파일이 생성 .clas..
2022.11.08