변수의 비교와 지정
- 기본 타입 변수
- 객체 타입 참조 변수
- equals과 ==의 차이
변수의 종류
① 기본 타입 값 변수
: 변수마다 메모리를 따로 가짐
변수 = 값 = 메모리
② 객체 참조 변수
: 변수는 객체를 가리키는 참조이다.
new를 해서 사용하여 생긴 친구를 어딘가 저장하여 이것을 참조하는 것임.
객체 타입 변수의 비교
① == : 참조가 같은 지를 비교한다.
② equals() : 값이 같은 지를 비교한다.
(String 변수의 비교)
String color1= "red";
String color2 = "yellow";
String color3 = "r";
color3 += "ed"; // color3 = "red";
if(color1 == color3) // false
if(color1 != color3) // true
if(color1.equals(color3)) // true
String name = "java OOP";
String title = name;
// title 출력 : java OOP
Student student = new Student();
student.read(s);
Student newStudent = student;
//if(student == newStudent)는 true
별칭이란 무엇인가?
: 같은 이름의 변수가 같은 객체를 가리킬 때 >> 참조
스트링 객체는 불변
: 객체가 한번 생기면 값이 바뀔 수 없음
- 값을 바꾸려면 새로운 객체를 생성
- 원래 객체는 불변으로 그대로 남아있다.
String str1 = "Sweet";
String str2 = str1; // str1 = str2 = Sweet
str2.replace('e','i'); // Swiit는 따로 저장을 시켜주지 않았기 때문에 쓰레기가 되었다.
String str3 = str1;
str3 += "Song"; // str3 = SweetSong
스트링 메서드
- 검사 메서드 : contains, startsWith, endsWith, compare 등
- 일부를 돌려주는 메서드 : charAt, substring 등
- 위치 검색 메서드 : indexOf
// 원본은 바뀌지 않는다.
- 변경 메서드 : replace, replaceAll, toLowerCase 등 (그리고 +연산자)
// 원본이 변경되어 새로운 객체가 생성되었다.
** print안에 + 연산자를 통해 출력하는 것은 객체만 남게 되어 메모리가 낭비된다. 이 문제는 StringBuilder를 사용하여 해결한다.
--------------------------------------------------------------------------------------------------------------------------
학생과 학과 클래스 만들기
>> 학생 클래스에서 갖게 될 데이터는 무엇인가? 결국엔 학생이 갖게 될 데이터가 객체가 된다.
클래스 만드는 순서
1) 학생(객체)이 가져야할 데이터가 무엇인지, 타입의 값을 정한다.
2) 학생 클래스에 이 데이터를 저장할 필드를 만든다.
3) 생성자 확인 // 객체가 만들어질 때 필요한 일
4) 입력 메소드
5) 출력 메소드
클래스를 만드는 방법
- Bottom up 방식 : 학생 클래스(요소 클래스)를 만들고 이후, 학과 클래스(메인 클래스)를 만든다.
- Top down 방식 : 학과 클래스(메인 클래스)를 만들고 이후, 학생 클래스(요소 클래스)를 만든다.
// 보통 데이터는 bottom up 방식으로 데이터 포맷을 만들고 입력을 받지만,
기능 같은 경우에는 top down 방식으로 좀 더 세분화한 기능들을 추가하는 방식을 사용한다.
설계 원칙
1. Keep It Simple and Short(KISS)
- 필요한 기능만 포함
- 소프트웨어 개발 과정에서 Aglie(에자일) 개발 방법이다.
- 개발 과정을 반복하면서 기능이 점점 추가되고 커진다.
- spiral 모델이라고도 함
2. DRY(Don't Repeat Yourself)
- 중복 배제 원칙
- 재사용 가능하도록 메서드로 만든다.
- 매개 변수를 통해 상황에 맞게 동작할 수 있도록 작성한다.
'Computer Science > JAVA' 카테고리의 다른 글
[JAVA] 제너릭이란? (0) | 2020.11.03 |
---|---|
[JAVA] 추상화란? (0) | 2020.10.23 |
[JAVA] 인터페이스란? (+서점 구현하기) (0) | 2020.10.06 |
[JAVA] 상속이란? (+ 서점 구현하기) (0) | 2020.10.06 |
[JAVA] 자바 기본 (0) | 2020.09.02 |
댓글