공부/Java 4

가변인자(varargs)와 오버로딩

기존에는 메소드의 매개변수 개수가 고정적이었으나, JDK1.5부터 동적으로 지정할 수 있으며 이를 '가변인자(variable arguments)' 라고 한다. 선언 방법 '타입... 변수명' class Test { static String something(String... args) { // to be } } 만약 여러 문자열을 하나로 결합하여 반환하는 make 메소드를 작성한다면, 아래와 같이 매개변수의 개수를 다르게 해서 여러 개의 메소드를 작성해야할 것이다. String make(String s1, String s2) { ... } String make(String s1, String s2, String s3) { ... } String make(String s1, String s2, String..

공부/Java 2022.06.12

클래스 메소드(static 메소드)와 인스턴스 메소드

변수에서 그랬던 것과 같이, 메소드 앞에 static이 붙어 있으면 클래스 메소드 붙어 있지 않으면 인스턴스 메소드이다. 그렇다면 클래스를 정의할 때, 어느 경우에 static을 사용해서 클래스 메소드로 정의해야하는 것일까? 인스턴스 메소드는 인스턴스 변수와 관련된 작업을 하는, 즉 메소드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메소드이다. 그런데 인스턴스를 생성해야만 만들어지므로 인스턴스 메소드 역시 인스턴스를 생성해야만 호출할 수 있는것이다. 반면에 메소드 중에서 인스턴스와 관계없는(인스턴스 변수나 인스턴스 메소드를 사용하지 않는) 메소드를 클래스 메소드(static메소드)로 정의한다. class MyMath2 { long a, b; // 인스턴스 변수 a, b만을 이용해서 작업하므로 매개변..

공부/Java 2022.06.12

인스턴스 변수와 클래스 변수

인스턴스 변수와 클래스 변수에 대해 포스팅 한다. 변수는 클래스변수, 인스턴스변수, 지역변수 모두 세 종류가 있다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수이고 붙지 않은 것은 인스턴스변수 이다. class Variables { /* 클래스 영역 */ int iv; // 인스턴스 변수 static int cv; // 클래스 변수 (static 변수, 공유 변수) void method() { /* 메소드 영역 */ int iv = 0; // 지역변수 } } 변수의 종류 선언위치 생성시기 클래스 변수 (class variable) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 (instance variable) 인스턴스가 생성되었을 때 지..

공부/Java 2022.06.12

JUnit을 이용한 단위 테스트와 Assert 메소드

내가 있던 SI 프로젝트는 규모가 너무 커서 JUnit을 활용한 단위 테스트를 적용할 수 없었다. 그래서 난 JUnit을 사용해본적이 없다. 대부분 Logger.debug를 이용하여 파라미터만 콘솔에 출력했다. JUnit을 활용한 테스트 코드 작성이 목표였기 때문에 관련 내용을 정리해보고자 한다. 1. JUnit이란? 자바용 단위 테스트 도구이다. 2. 단위테스트(Unit Test)란? - 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차 - 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차 3. JUnit 특징 - @Test 메소드가 호출할 때마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 함 - 단정(assert)메소드로 테스트 케이스의 수행 ..

공부/Java 2022.03.31