본문 바로가기

JAVA

(227)
메소드 오버로딩 매개변수의 개수나 타입이 조금씩 다르지만, 비슷한 기능을 하는 메소드가 여러 개 있을 수 있다. 이런 메소드가 각각 다른 이름으로 정의되어 있다면, 어떨 때 어떤 메소드를 사용해야 할지 구분하기 어려울 수 있다. 이러한 경우를 위해서 " 매개변수의 수가 다르거나, 매개변수의 타입이 다르다면" 동일한 이름으로 메서드를 여러 개 정의할 수 있다. 이를 메소드 오버로딩이라 한다. 메소드 오버로딩 매개변수의 유형과 개수가 다르게 하여 같은 이름의 메서드를 여러 개 가질 수 있다. 여기서 중요한 것은 타입과 매개변수의 수가 중요하다. 타입은 같았지만 매개변수가 달라졌기 때문에 가능했다. 매개변수의 수는 같지만 타입이 다르기 때문에 가능하다. 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개라도 있을 경우, 컴파일러는 기본 생성자를 추가하지 않는다. 명시적으로 생성자를 선언하..
객체와 클래스 예를 들어 우리가 자동차를 만든다고 가정해보자. 자동차를 만들려면 무엇이 필요할까? 만들 자동차의 설계도가 필요하다! 객체지향 프로그래밍에서도 마찬가지이다. 메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업이 필요하다. 자바에서 설계도가 바로 '클래스' 이다. 클래스에는 객체를 생성하기 위해서 필드와 메소드가 정의되어 있다. 클래스로부터 만들어진 객체를 해당 클래스의 '인스턴스'라 한다. 즉, 자동차란 객체는 자동차 클래스의 인스턴스와 같다. 그리고 클래스로부터 객체를 만드는 과정을 '인스턴스화'라고 한다. 그래서 이게 무엇을 뜻하는 걸까? 하나의 클래스로부터 여러개의 인스턴스를 만드는 것이 가능해진다. (동일한 설계도로 여러대의 자동차를 만드는 것과 같음) - 클래스 선언 ..