Java 18

[JAVA] 8. JVM의 개념과 역할

JVM이란? Java Virtual Machine. (가상 머신 : 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것) - 우리가 작성한 자바 프로그램이 수행되는 프로세스를 의미함. - 다시 말해, java라는 명령어를 통해 애플리케이션이 수행되면, 이 JVM 위에서 애플리케이션이 동작함. JVM은 JAVA와 OS사이에서 중개자 역할을 수행. 그리고 가장 중요한 메모리관리, Garbage Collection을 수행. 왜 자바 가상머신을 알아야 하는가? 사용자가 많아지는 애플리케이션일수록, 한정된 메모리를 효율적으로 사용하여 최고의 성능을 내기 위해 노력해야 한다. 따라서, 메모리 효율성을 위해 메모리 구조를 알아야 하는 것은 필수이다. 자바 프로그램 실행 과정 1. 프로그램이 ..

Java 2021.04.30

[JAVA] 7. 자주 쓰는 어노테이션(@) 종류

@Override What : 해당 메소드가 부모 클래스에 있는 메소드를 Override 했다는 것을 명시적으로 선언. Why : 만약 매개 변수가 하나 빠진 상태로 Override했을 경우, 명확하게 "이 메소드는 Override 된거니깐 내가 잘못 코딩했으면 컴파일러 너가 알려줘." 라고 지정해주는 것. @Deprecated What : 미리 만들어져 있는 클래스나 메소드가 더 이상 사용되지 않는 경우 선언. Why : "얘는 더 이상 사용하지 않으니까 그렇게 알아두고, 누가 이거 쓰면 경고 한번 해줘." 라고 지정해주는 것. @SupressWarnings What : 코딩하다 간혹 컴파일러에서 경고를 줄 때 제외시키기 위해 선언. Why : "얘는 일부러 이렇게 코딩한 거니까 너가 경고를 해 줄 필..

Java 2021.04.29

[JAVA] 6. StringBuffer vs StringBuilder

String은 immutable(불변의)한 객체다. String 문자열을 더하면 새로운 String 객체가 생성되고, 기존 객체는 버려진다. 그러므로, 계속 하나의 String을 만들어 계속 더하는 작업을 한다면, 계속 쓰레기를 만들게 된다. ex1) String text = "Hello"; text = text + " world"; //첫번째 text 객체는 쓰레기가 된다. 자바의 가비지 컬렉션이 계속 일을 하게끔 되므로 성능저하를 일으킨다. 이런 단점을 보완하기 위해서 나온 클래스가 StringBuffer와 StringBuilder다. 이 둘의 간단한 차이점은, StringBuffer Stringbuilder Thread Safe win lose Speed lose win ex2) StringBuil..

Java 2021.04.29

[JAVA] 5. 일부 완성되어 있는 abstract 클래스

abstract클래스에 대해 결론부터 말하자면, 설계 -> 개발 프로세스 단계에서 설계 단계를 interface 선언. 개발 단계를 해당 class 및 Impl구현이라고 했을 때, 설계와 실제 개발 사이의 중간 단계를 위한 예약어라고 볼 수 있다. 인터페이스를 선언하다 보니, 어떤 메소드는 미리 만들어 놓아도 문제가 없지만 해당 클래스를 다 만들기엔 애매하다. 그래서, 아주 공통적인 기능을 미리 구현해 놓으면 많은 도움이 되기 때문에 abstract클래스를 만든다. ex) public interface MemberManager { public boolean addMember(MemberDTO member); } public class MemberManagerImpl implements MemberMana..

Java 2021.04.29

[JAVA] 4. Static의 쓰임새와 Static 블록

Static은 객체를 생성하지 않아도 메소드를 호출할 수 있는 마법의 메소드. ------------------------------------------------------------------------ ex) public class ReferenceStatic { public static void main(String args[]) { ReferenceStatic.staticMethod(); //객체 생성 없이 바로 메소드 호출 } public static void staticMethod() { //static 메소드 선언 System.out.println("This is a staticMethod."); } } ----------------------------------------------..

Java 2021.04.29

[JAVA] 3. 오버로딩(overloading) vs 오버라이딩(overriding)

오버로딩(overloading) - 확장 public void print(String stringData) {} public void print(int intData, String stringData) {} - 두 메소드처럼 이름만 같고, 매개 변수가 다른 것이 오버로딩. - "같은 역할을 하는 메소드는 같은 메소드 이름을 가져야 한다. 다만, 전달하는 매개변수의 타입과 갯수는 여러가지이므로 매개변수 선언만 다르게 한다." 오버라이딩(overriding) - 덮어 씀 (부모 클래스의 기능은 무시하고 자식 클래스에서 덮어 씀) - 자식 클래스에서 부모 클래스에 있는 메소드와 동일하게 선언하는 것을 "메소드 overriding"이라 함. - overriding된 메소드는 부모 클래스와 동일한 리턴 타입을 가..

Java 2021.04.29

[JAVA] 2. 자바의 변수 종류는 총 4가지

개념 지역 변수 (local variables) - 중괄호 내에서 선언된 변수 - 메소드 안이든 밖이든 중괄호만 있으면 됨.. 매개 변수 (parameters) - 메소드에 넘겨주는 변수 인스턴스 변수 (instance variables) - 메소드 밖에, 클래스 안에 선언된 변수. - 앞에 static이라는 예약어가 없어야 함. 클래스 변수 (class variables) - 메소드 밖에, 클래스 안에 선언된 변수 중에서 static 예약어가 있는 변수 생명 주기 1. 지역 변수는 선언된 중괄호 내에서만 유효함. 2. 매개 변수는 메소드 호출 시 시작되고 끝나면 소멸됨. 3. 인스턴스 변수는 객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸됨. 4. 클래스 변수는 클..

Java 2021.04.29

[JAVA] 1. 자바 파일 컴파일 과정

*** 자바의 신(이상민 저)을 공부한 내용 중에 기억해야 할 개념들을 정리해 놓은 글 입니다.*** *자바 컴파일 및 실행 절차 1. .java라는 확장자로 되어 있는 소스를 컴파일하면, 2. .class라는 확장자를 가진 파일이 생성되어 디스크에 저장됨. ------------------------------------------------------------------------- 이 .class 파일은 바이너리 파일로 되어 있기 때문에 에디터에서 열어도 보기 힘듦. javac.exe(Windows) 또는 javac(Mac)이라는 프로그램이 컴파일러 역할을 수행. ------------------------------------------------------------------------- 4..

Java 2021.04.29