본문 바로가기

JAVA/복습

(50)
[프로그래머스] 생성자 오버로딩 실습 (복습필요) 문제 -- 정답 코드(작성) public class Car{ String name; int number; public Car(){ this("이름없음", 0); } public Car(String name){ this(name, 0); } public Car(String name, int number){ this.name = name; this.number = number; } } -- 실행코드 // 실행을 위한 코드입니다. public class CarExam { public static void main(String[] args) { Car car1 = new Car(); Car car2 = new Car("자동차"); Car car3 = new Car("자동차", 1234); } }
메소드 오버로딩 매개변수의 개수나 타입이 조금씩 다르지만, 비슷한 기능을 하는 메소드가 여러 개 있을 수 있다. 이런 메소드가 각각 다른 이름으로 정의되어 있다면, 어떨 때 어떤 메소드를 사용해야 할지 구분하기 어려울 수 있다. 이러한 경우를 위해서 " 매개변수의 수가 다르거나, 매개변수의 타입이 다르다면" 동일한 이름으로 메서드를 여러 개 정의할 수 있다. 이를 메소드 오버로딩이라 한다. 메소드 오버로딩 매개변수의 유형과 개수가 다르게 하여 같은 이름의 메서드를 여러 개 가질 수 있다. 여기서 중요한 것은 타입과 매개변수의 수가 중요하다. 타입은 같았지만 매개변수가 달라졌기 때문에 가능했다. 매개변수의 수는 같지만 타입이 다르기 때문에 가능하다. MyClass2.java 1. 정수를 2개를 받아들여서 그 정수값을 더해..
생성자 (Constructor) 생성자 모든 클래스는 인스턴스화 될때 생성자를 사용한다. 생성자의 특징 생성자는 리턴타입이 없다. 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다. 매개변수가 없는 생성자를 기본생성자라고 한다. 생성자를 하나라도 프로그래머가 만들었다면 기본생성자는 자동으로 만들어지지 않는다. public class 클래스명{ 타입 필드명; public 클래스명(매개변수목록){ // method와 다르게 리턴타입을 갖고 있지 않다. ... //생성자 블록 - } public 리턴타입 메소드명(매개변수목록){...} 생성자의 역할 생성자가 하는 일은 객체가 될 때 필드를 초기화 하는 역할을 수행한다. 자동차가 객체가 될때 반드시 이름을 가지도록 하려면, Car클래스를 다음과 같이..
[프로그래머스]switch문 - 실습(1) import java.util.Calendar; public class SwitchExam { public static void main(String[] args) { // month에는 오늘이 몇 월인지 들어 있습니다. int month = Calendar.getInstance().get(Calendar.MONTH) + 1; String season = ""; // switch문을 이용해서 season이 오늘은 어떤 계절인지 나타내게 만들어보세요. switch (month){ case 12: case 1: case 2: season = "겨울"; break; case 3: case 4: case 5: season = "봄"; break; case 6: case 7: case 8: season = "여름..
2차원 배열(2 Dimensional Array) 2차원 배열 - 배열의 배열 1. 2차원 배열 선언 방법 arr - 2차원 배열을 가리킬 수 있는 변수 [3] - 1차원 배열을 가르킬 수 있는 참조 변수가 3개 생긴 것 [4] - 실제 정수 값을 담을 수 있는 그릇들 => 정수를 4개씩 담을 수 있는 배열이 3개가 생성된다. int[][] arr = new int[3][4]; 배열에 값을 담을 때 arr[0] = 10; 결과 : 에러 발생 배열 0번째 인덱스, 이 부분을 의미하는데, 실제 int값을 담을 수 있는 부분이 아니라 int형 배열을 가리킬 수 있는 참조 변수이기 때문에 정수 값을 담을 수가 없다. 즉. arr[0]은 또 다른 1차원 배열을 가리킬 수 있는 참조형 변수이기 때문에 값을 담을 수 가 없다. ** 실제로 값을 담을 때에는 다음 인..
변수의 scope와 static 변수의 스코프 프로그램상에서 사용되는 변수들은 사용 가능한 범위를 가진다. 그 범위를 변수의 스코프라 한다. 변수가 선언된 블럭이 그 변수의 사용범위이다. public class ValableScopeExam{ int globalScope = 10; // 인스턴스 변수 public void scopeTest(int value){ int localScope = 10; System.out.println(globalScope); System.out.println(localScpe); System.out.println(value); } } 클래스의 속성으로 선언된 변수 globalScope 의 사용 범위는 클래스 전체 이다. 매개변수로 선언된 int value 는 블럭 바깥에 존재하기는 하지만, 메서드 선언부에..
String 클래스의 Method 문자열 길이 구하기 str.length()는 str이 참조하는 문자열의 길이를 구해서 int 타입으로 리턴해주는 메소드 이다. System.out.println(str.length()); //str 문자열 붙히기 (concat) str.concat("world") 메소드는 str 이 참조하는 문자열 hello 에다가 메소드의 인자로 들어온 문자열 world 를 붙혀서 String 타입으로 리턴하는 메소드다. String Class는 불변 클래스로, 메소드가 수행되면, 새로운 문자열을 만든다. 그러므로, 원래 클래스는 변하지 않는다. String str = new String("hello"); System.out.println(str.concat(" world")); //출력결과는 hello world S..
생성자(constructor) 생성자 new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당 여기서 잠깐! 객체 초기화란 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것. ' 생성자를 실행하지 않고는 클래스로부터 만들 수 없다' 기본 생성자 public class() {} 모든 클래스는 생성자가 반드시 존재. (하나 이상 가질 수 있음) ==> 클래스가 public class로 선언되면 기본 생성자에도 public이 붙지만, 클래스가 public 없이 class로만 선언되었다면 기본 생성자에도 public이 붙지 않는다. new 연산자 Car a = new Car(); 클래스에 명시적으로 선언한 생성자가 1개라도 있을 경우, 컴파일러는 기본 생성자를 추가하지 않는다. 명시적으로 생성자를 선언하..