목록Back-end/JAVA (41)
NULL
메소드 오버로딩(overloading)이란 같은 이름의 메소드를 중복하여 정의하는 것이다. 자바에서는 원래 한 클래스내에서 같은 이름의 메소드를 둘 이상 가질 수 없다. 하지만 매개변수의 갯수 또는 타입이 다른경우 동일한 이름으로 메소드를 여러개 정의 할 수 있다. 장점 1. 메소드 오버로딩을 사용한다면 메소드에 사용되는 이름을 절약할 수 있다. 2. 메소드를 호출할 때 전달해야 할 매개변수의 타입, 개수에 대해 신경쓰지 않고 호출가능하게 된다. 메소드 오버로딩은 OOP의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법 중 하나다. 메소드 오버로딩의 조건 1. 메소드 이름이 같아야한다. 2. 메소드 매개변수의 타입과 갯수가 달라야한다. 메소드 오버로딩의 반환 타입과는 관계없다. 만약 메소..
this는 자기자신, 현재 객체를 나타낸다. public Car(String name){ name = name; } "name = name"은 가깝게 선언된 변수를 우선 사용하기때문에 이 코드는 매개변수의 값을 매개변수 name에 대입하라는 의미가 된다. 즉 필드는 바뀌지 않고 이런 경우에서는 필드라는 것을 컴파일러와 JVM에게 알려주기위해 this를 사용해야한다. public Car(String name){ this.name = name; } this.name은 필드의 name을 가리키고, 이퀄 뒤의 name은 매개변수를 의미한다. 즉 매개변수의 값을 필드에 대입하라는 의미가 된다. 메소드를 사용할때도 this.메소드명()으로 호출가능하다.
모든 클래스는 인스턴스화 될때 생성자를 사용한다. Car c1 = new Car(); 빨간색 코드 부분이 생성자이다. 메소드와 다르게 생성자는 리턴타입이 존재하지 않는다. 생성자의 특징 1. 생성자는 리턴타입이 없다. 2. 매개변수가 없는 생성자를 기본생성자라고 부른다. 3. 생성자를 하나라도 만들었다면 기본생성자는 자동으로 만들어지지 않는다. 4. 생성자를 만들지않으면 컴파일할 때 매개변수가 없는 생성자가 자동으로 만들어진다. 생성자의 역할 생성자가 하는 일은 객체가 될 때 필드를 초기화하는역할을 수행한다. 자동차가 객체가 될 때 반드시 이름을 갖게 하려면, Car클래스를 다음과 같이 만들어야한다. public class Car{ String name; int number; public Car(Stri..
열거형은 특정 값만 가져야할 때 사용한다. 열거형 정의 방법 enum Gender{ MALE, FEMALE; } 열거형 사용 방법 Gender gender2; gender2 = Gender.MALE; gender2 = Gender.FEMALE; //Gender타입의 변수에는 MALE이나 FEMALE만 대입이 가능. 다른 값은 저장할 수가 없다. Gender타입변수안에 특정값인 MALE, FEMALE이 아닌 다른 값은 저장 할 수 없다.
public class VariableScopeExam { int globalScope = 10; // 인스턴스 변수 static int staticVal = 7; // 클래스 변수 public void scopeTest(int value) { int localScope = 20; //지역변수 } public static void main(String[] args) { System.out.println(staticVal); // 클래스 변수는 인스턴스화 하지 않고도 사용가능 System.out.println(globalScope); // 오류 } } 키워드 static을 사용하면 인스턴스화 하지 않아도 static을 사용할 수 있다. ValableScopeExam v1 = new ValableScopeE..
1. 클래스 객체를 정의하는 틀, 설계도 자바에서는 여러 객체를 생성하여 사용하게 됨. 클래스는 객체의 상태를 나타내는 필드, 행동을 나타내는 메소드로 구성됨. 2. 인스턴스 자바에서 클래스를 사용하려면 해당 클래스 타입의 객체를 선언해야한다. 2-1 인스턴스화 클래스로부터 객체를 선언하는 과정을 인스턴스화라고 한다. 즉 인스턴스란 메모리에 할당된 객체다. 하나의 클래스로부터 여러개 인스턴스를 생성할 수 있다. 이렇게 생성된 인스턴스는 독립된 메모리 공간에 저장된 자신만의 필드를 가질 수 있다. 하지만 해당 클래스의 모든 메소드는 해당 클래스에서 생성된 모든 인스턴스를 공유하게 됨. 3. 객체(Object) 물리적 존재나 추상적인 것들 중에서 자신과 다른것을 식별가능한 것 즉, 실세계에 존재하거나 생각할..
public static void main(String[] args) { String str = "hello"; //String은 한번 만든 객체를 바꾸지 않는다. - 불변 클래스 System.out.println(str.length()); System.out.println(str.concat(" world")); System.out.println(str); str = str.concat(" world"); System.out.println(str); // 변수로 concat을 사용해서 문자열을 추가하면 값이 변하게 된다. System.out.println(str.substring(3)); // 3번째 인덱스부터 마지막까지만 짜른다. System.out.println(str.substring(1, 3))..
class ReferenceTypeExam { public static void main(String []args) { ReferenceTypeExam exam = new ReferenceTypeExam(); //기본형 변수value1을 addOne에 전달합니다. int value = 10; exam.addOne(value); System.out.println("기본형 변수의 값을 다른 메소드에서 변경한 결과: " + value); //참조형 변수arr을 addOne에 전달합니다. int []arr = {10}; exam.addOne(arr); System.out.println("참조형 변수의 값을 다른 메소드에서 변경한 결과: " + arr[0]); } public void addOne(int valu..
자동차는 자동차 이름, 자동차 번호를 가지고 있고, 자동차는 달리고 멈추는 기능이 있다. 여기에서 가지고 있는 것을 속성이라고 한다. 자바에서는 이러한 객체의 속성을 필드(field)라는 용어로 사용한다. -이름과 번호를 필드로 가지고 있는 Car클래스 선언 public class Car{ String name; int number; } -Car 클래스를 인스턴스화 하기 Car c1 = new Car(); Car c2 = new Car(); //Car라는 인스턴스가 메모리에 2개 만들어 진다. 객체별로 name과 number라는 속성을 가진다. -속성 이용하기 - 참조 변수 다음에 나오는 점(dot)은 참조변수가 참조하는 객체가 가지고 있는 것을 사용할 때 사용 //c1.name은 c1이 참조하는 객체의..
자바에서 가장 많이 사용하는 클래스다. 자바 인스턴스 생성방법 1. new연산자를 이용하지 않고 인스턴스를 만드는 경우 String str1 = "hello"; String str2 = "hello"; "hello"라는 문자열이 메모리 중에서 상수가 저장되는 영역에 저장된다. 상수는 변하지 않는 값을 의미. String str2 = "hello"; 이 문장이 실행될 때에 hello 라는 문자열 상수는 이미 만들어져 있으므로 str1이 참조하는 인스턴스를 str2도 참조한다. 2. new연산자를 이용해서 인스턴스를 만드는 경우 String str3 = new String("hello"); String str4 = new String("hello"); new연산자를 이용하여 인스턴스를 만들면 인스턴스는 무조..