[Java 기초문법] by Programmers school 자바 입문
문자열 비교하기
각 인스턴스가 같은 값을 저장한다고 해서 두 인스턴스가 같은 건 아니다.
public class CarExam {
public static void main(String[] args) {
String str1 = new String("Hello world");
String str2 = new String("Hello world");
if(str1 == str2){
System.out.println("str1과 str2는 같은 인스턴스를 참조합니다.");
}
else{
System.out.println("str1과 str2는 다른 인스턴스를 참조합니다.");
}
}
}
필드
자바에서는 속성을 필드로 선언할 수 있다.
필드 선언
public class Car {
public String name;
public int number;
인스턴스 생성
Car c1 = new Car();
Car c2 = new Car();
필드를 사용하기
public class Car {
public String name;
public int number;
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car();
//Car라는 인스턴스가 메모리에 2개 만들어 진다. 객체별로 name과 number라는 속성을 가진다.
//c1.name은 c1이 참조하는 객체의 name 을 의미.
c1.name = "소방차"; //c1이 참조하는 객체의 name을 소방차로 설정
c1.number = 1234; // c1.number = 1234란 c1이 참조하는 객체의 number를 1234 로 설정
c2.name = "구급차"; //c2가 가리키는 객체의name을 구급차로 설정
c2.number = 1004; //c2가 가리키는 객체의 number를 1004로 설정
System.out.println(c1.name); //콘솔에 c1이 참조하는 객체의 name 을 출력합니다.
System.out.println(c1.number); //콘솔에 c1이 참조하는 객체의 number 를 출력합니다.
String name = c2.name; //c2가 참조하는 객체의 name 을 String 타입 변수 name 도 참조하게 합니다.
}
}
메소드
Field가 물체의 상태라면, 행동에 대한 선언을 하는 것이 메소드
Car에 이름과 색깔을 부여하지만, 메서드에서는 전진하고 후진하는 행동을 선언한다.
void : 리턴하는 것이 없을 경우
public class MyClass{
public void method1(){
System.out.println("method1이 실행됩니다.");
}
}
변수의 scope와 static
scope : 변수가 사용가능한 범위
public class Car {
int globalScope = 10; // 인스턴스 변수
public void scopeTest(int value){
int localScope = 10;
System.out.println(globalScope);
System.out.println(localScope);
System.out.println(value);
}
}
global = 클래스 전체
local = method 내
한편 static method 내에서는 global 변수도 에러가 발생
static의 특징은 instance하지 않아도 사용할 수 있다는 점이다.
객체를 사용하지 않아도 사용할 수 있는 한편
static하지 않은 객체는 static 메서드 내에서 사용될 수 없다.
객체를 선언하고 가져오거나
System.out.println(new Car().globalScope);
아니면 field를 static으로 만들거나
함으로써 사용 가능하다
public class Car {
static int globalScope = 10;
public void scopeTest(int value){
int localScope = 10;
System.out.println(globalScope);
System.out.println(localScope);
System.out.println(value);
}
public static void main(String[] args) {
System.out.println(globalScope);
}
}
열거형 (enum)
enum 정의 방법
public class Car {
enum Gender{
MALE, FEMALE;
}
}
사용 방법
public class Car {
enum Gender{
MALE, FEMALE;
}
public static void main(String[] args) {
Gender gender2;
gender2 = Gender.MALE;
gender2 = Gender.FEMALE;
}
}
생성자
모든 클래스는 인스턴스화 될때 생성자를 사용한다.
메서드와 다르게 리턴 타입을 갖고 있지 않다.
생성자를 하나라도 만들었다면 자동으로 만들어지지 않는다.
객체가 될 때 필드가 초기화하는 역할을 수행
public class Car{
String name;
int number;
public Car(String n){
name = n;
}
}
자동차가 객체가 될 때 반드시 이름을 가지도록 한다.
반응형
'Programming > Java, Spring' 카테고리의 다른 글
[Java 기초문법] 시간 관련 메서드, Date, Calendar, java.time 패키지 (0) | 2022.10.21 |
---|---|
[Java 기초문법] Collections, Set, Hashset, Treeset, List, Map (0) | 2022.10.21 |
[Java 기초문법] Generic usage case (0) | 2022.10.21 |
[Java 기초문법] Exceptions 자바 예외 처리 (0) | 2022.10.20 |
[Java 기초문법] Streams API | Streams, stream의 다양한 메소드, sum, sort, filter (0) | 2022.10.20 |