본문 바로가기

분류 전체보기

(143)
[JAVA] this() 생성자(코드의 간결함을 위한!) this() 생성자 자기 자신의 다른 클래스를 호출하기 위한 생성자이다. 쓰이는 이유는 코드의 간결함 떄문, 자세한건 아래 예제를 통해 이해하자. 예제 package test; import java.util.Scanner; class House{ int price; String dong; int size; String kind; public House(){ this(100,32,"상계동","아파트"); } public House(int price){ this(price, 32, "상계동", "아파트"); } public House(int price, int size){ this(price, size, "상계동", "아파트"); } public House(int price, int size, String ..
[JAVA] new 생성자 생성자 tc라는 객체를 생성할 때 new연산자 다음의 TestClass()를 생성자라 한다. TestClass tc = new TestClass(); 지금까지 객체를 생성할 때 아무렇지도 않게 이렇게 객체(인스턴스)를 생성했다. 하지만 new연산자 뒤의 생성자는 어디서 정의 한 것일까? 이는 컴파일러에서 정의된 생성자가 없다면 자동으로 정의해준다. 빈생성자만을 정의 해준다. 하지만 이렇게 빈 생성자를 선언해서 객체를 생성한다면 멤버변수를 따로 초기화 해줘야한다는 불편함이 존재 했었다. 그래서 그러한 문제점을 제거하기 위해 직접 생성자를 선언하면 좋다. 주의할 점 정의된 생성자가 있을 경우 컴파일러는 빈 생성자를 따로 정의해 주지 않는다. 이렇게 떄문에 생성자를 선언하고 필요에 따라 빈 생성자도 따로 선언..
[JAVA] 정적 메소드와 인스턴스 메소드(Static Method and Instance Method) 정적 메소드(Static Method)와 인스턴스 메소드(Instance Method) 정적 메소드와 인스턴스 메소드의 가장 큰 차이점이라면 저장되는 공간이 다르다. 이전의 정적변수(Static Variable)이 저장되는 공간이 Class Area라고 했다. 그래서 정적 변수의 경우 별다른 객체(인스턴스) 생성 없이 Class.정적변수명 으로 바로 접근이 가능했다. 이와 같이 정적 메소드도 별다른 인스턴스 생성 없이 바로 호출이 가능하다. 주의할점 정적 메소드 내에서는 인스턴스 변수(Instance Variable)나 메소드(Method)를 사용할 수 없다. 물론 지역변수(Local Variable)은 사용이 가능하지만 인스턴스 변수나 메소드를 왜 사용할 수 없냐면 정적 메소드의 초기화 시점은 인스턴스..
[JAVA] 메소드 오버로딩(Method Overloading) 메소드 오버로딩이란? 한 클래스 내에서 같은 이름의 메소드를 여러개 정의할 수 있는 기능을 의미한다. 조건 1. 파라미터의 타입이나 개수가 달라야한다. 2. 파라미터의 이름은 오버로딩 성립에 영향을 주지 않는다. (하지만 파라미터의 타입이 같다면 성립X) 3. 리턴 타입은 오버로딩 성립에 영향을 주지 않는다. (파라미터의 타입이 같다면 리턴타입이 달라도 성립X) 예제 package test; import java.util.Scanner; class Boiler{ String maker; int temp; String color; void tempUp(){ temp++; } void tempUp(int amount){ temp += amount; } } public class test { public st..
[JAVA] 가변 인자 메소드(Variable Method) 주의할 점, JDK 1.4버전 이하에서는 안되며 가변 인자 메소드는 1.5버전 이상에서 호환이 됩니다. 선언 RETURN_TYPE FUNCTION_NAME(String ... infos){ return RETURN_TYPE; } 예제 package test; import java.util.Scanner; public class test { void printlnInfo(String ... infos){ if(infos.length != 0){ for(int i = 0; i < infos.length; i++){ System.out.println(infos[i]); } } else { System.out.println("인자가 없네요?"); } } public static void main(String[]..
[JAVA] 메서드와 변수 응용 예제 package test; import java.util.Scanner; class Args { int x; void add(int x){ x = x + 50; } void add(Args arg){ arg.x = arg.x + 40; } void addNew(Args arg){ arg = new Args(); } void add(int[] arr){ arr[0]++; } } public class test { static int staticVar2 = 20; public static void main(String[] args) throws Exception { Args arg = new Args(); arg.x = 100; int[] arr = new int[1]; arg.add(arg.x); Sy..
[JAVA] 기본적인 메소드(함수)선언 함수 선언 기본 형식(근본적으로 어느언어나 똑같다) 선언 class CLASSNAME { RETURN형 FUNCTION_NAME(PARAMITER1, PARAMITER2....){ return RETURN_VALUE; } } 예시 class TestMakeFunction { boolean returnTrue(){ return true; } } 해석 위 예제 코드의 경우 'TestMakeFunction'클래스 내부에 'returnTrue'라는 메서드가 존재하며 TestMakeFunction.returnTure(); 사용시 'TRUE'를 반환한다. 비고 C언어는 0는 False를 뜻하고 그 이외의 수는 True였지만 Java에서는 명확히 'True or Flase'와 '수'는 분리되어있다. 그래서 보통 흔한..
[JAVA] 변수에 관해서 package test; import java.util.Scanner; class Aircon { int memvar; static int staticVar; } public class test { static int staticVar2 = 20; public static void main(String[] args) throws Exception { int localVar; Aircon vk1 = new Aircon(); System.out.println("vk1.memVar" + vk1.memvar); //멤버 변수는 컴파일 시 0으로 자동으로 초기화 된다. System.out.println("vk1.staticVar" + vk1.staticVar); //정적 변수 역시 0으로 자동으로 초기화 된다. ..