https://school.programmers.co.kr/learn/courses/9/9-%EC%9E%90%EB%B0%94-%EC%A4%91%EA%B8%89
자바 중급
자바 입문을 수강했다면 자바의 다양한 기능에 대해 더 알아볼 수 있는 자바 중급을 추천합니다.
school.programmers.co.kr
위 강의 수강 내용을 기억하기 위해 작성합니다.
Object 클래스
모든클래스의 최상위 클래스
메소드 중에서 가장 많이 사용되는 것들
equals 객체가 가진 값을 비교할 때 사용
toString 객체가 가진 값을 문자열로 반환
hashCode 객체의 해시코드 값 반환(자료구조에서 많이 사용)
사용할 때 반드시 오버라이딩해서 사용해야함
public class Car{
String name;
int number;
public static void main(String[] args){
Car c1 = new Car();
c1.name = "ben";
c1.number = "11";
Car c2 = new Car();
c2.name = "ben";
c2.number = "11";
if(c1.equals(c2)){
// 서로 같이 않다고 뜬다.
}
c1.hashCode();
c2.hashCode();
// 서로 다른 hashCode를 반환한다.
// 현재 equals, hashCode 메소드는 Object가 구현한 것을 그대로 사용하고 있기 때문
}
}
Java.lang 패키지
필수적으로 공부해야하는 패키지
Wrapper
기본형 타입을 객체로 변환시킬때 사용
타입별로 분류된 클래스들을 모은 것
int i = 5;
Integer i2 = new Integer(5);
//단순 숫자를 객체형이나 참조형으로 사용하기 위해서 위 i2처럼 선언을 다르게 해야했음
Integer i3 = 5; //오토박싱을 통해 기본형 데이터를 객체형으로 바꿔서 사용 가능하다.
오토박싱 : 기본 타입 데이터를 객체 타입의 데이터로 자동 형변환 시켜주는 기능
Integer i = 5;
int i2 = i.intValue();
// 반대로 원래는 객체형 데이터를 단순 데이터로 변환 해줘야 했다.
int i3 = i;
// 오토언박싱을 통해 자동으로 형변환이 가능하다.
오토언박싱 : 오토박싱과 반대로 객체 타입의 데이터를 기본형 타입 데이터로 자동 형변환
StringBuffer
string class는 자기 자신이 변하지 않는 불변 class이다.
stringbuffer class는 자기 자신이 변하는 class이다.
StringBuffer sb = new StringBuffer();
StringBuffer sb2 = sb.append("hello");
// append 메소드는 자기 자신인 this가 반환된다.
// 반환된 것을 sb2가 받았으므로 두 변수는 같다.
메소드 체이닝(Method Chaining) : 자기자신을 리턴하여 계속해서 자신의 메소드를 호출하는 방식
-java에서 자주 사용되는 문법
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
// stringbuffer에서 자기 자신을 반환하기 때문에 append()를 계속해서 사용할 수 있다.
String
String str1 = "hello world";
String str2 = str1.substring(5);
String str3 = str1 + str2;
// 위 명령을 수행하면 결과적으로 아래와 같이 실행된다.
String str4 = new StringBuffer().append(str1).append(str2).toString();
// stringbuffer 객체를 만들고 append 메소드를 사용해 문자열을 누적하고 String으로 형변환하여 출력한다.
String str5="";
for(int i = 0; i < 100; i++){
str5 += "*";
}
// 반복문 안에서 문자가 더해질 때 마다 내부적으로 StringBuffer 객체를 만들어 낸다.
// java에서 new 연산자가 많이 사용될수록 느려진다.
StringBuffer sb = new StringBuffer();
for(int i = 0; i < 100; i++){
sb.append("*");
}
String str6 = sb.toString();
// 위와 같은 방법을 통해 사용하는 것이 더욱 바람직하다.
Math
생성자 자체가 private으로 되어 있기 때문에 new 연산자를 통해서 객체를 생성할 수 없다.
모든 메소드와 속성이 static으로 정의되어 있기 때문에 객체를 생성하지 않고도 사용할 수 있다.
Math.max(a, b);
Math.min(a, b);
Math.abs(a);
Math.random();
Math.sqrt(a);
Java.util 패키지
자료구조 클래스들을 컬렉션 프레임워크라고 함
Collection interface는 자료가 있다라는 것을 표현하며 저장된 순서를 기억하지 못하므로 iterator interface에 의존해서 하나하나 찾아야한다.
Set interface는 중복을 허용하지 않는 자료구조를 표현한 것 Collection을 상속받고 있다. add 메소드가 같은 값이 있으면 false 없으면 true 반환
List interface는 중복을 허용하면서 순서를 기억하는 자료구조를 표현한 것 Collection을 상속받고 있다. get(int x) 메소드를 통해 index 접근 가능하다.
Map interface는 put 메소드 수행 시 key 값과 value 값을 넣어야 하며 모든 key 값은 중복을 허용하지 않는다.

Generic
제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. 한마디로 특정(Specific) 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입이라는 것이다.
https://st-lab.tistory.com/153
자바 [JAVA] - 제네릭(Generic)의 이해
정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고
st-lab.tistory.com
set
Set<String> set1 = new HashSet<>(); //Set은 interface이기 때문에 new로 객체를 생성할 수 없음
// 따라서 Set을 구현한 클래스인 HashSet을 이용해서 인스턴스 생성
boolean flag1 = set1.add("kang"); // true
boolean flag2 = set2.add("kang"); // false
Iterator<String> iter = set1.iterator(); // 값을 하나하나 꺼내기 위해서 iterator 사용
while(iter.hasNext()){ // hasNext()를 통해 끝까지 실행 가능
String str = iter.next();
}
List
// java.awt는 클래스로 전혀 다른 부분이다. java.util을 불러와야 한다.
List<String> list = new ArrayList<>(); // Set과 마찬가지로 list는 interface이므로
// 그것을 구현하고 있는 ArrayList 클래스를 이용하여 인스턴스 생성
list.add("x");
list.add("y");
list.add("x");
list.size(); // 3
for(int i = 0; i < list.size(); i++){ // List는 index 접근이 가능하다.
String str = list.get(i);
}
Map
Map<String, String> map = new HashMap<>();
map.put("x", "y");
map.put("x1", "y2");
map.put("x", "y1");
map.size(); // 2
map.get("x"); // y1 같은 키에 또다시 입력을 받으면 최근에 들어온 값으로 바꿔줌
Set<String> keys = map.keySet();
Iterator<Stirng> iter = keys.iterator();
while(iter.hasNext()){ //전체 출력
String key = iter.next();
String value = map.get(key);
}'Language > Java' 카테고리의 다른 글
| Java의 정석 정리 3 (0) | 2023.09.15 |
|---|---|
| Java의 정석 정리 2 (0) | 2023.09.10 |
| Java의 정석 정리 (0) | 2023.09.07 |
| 강의 내용 정리 2 (0) | 2023.03.08 |
| 기초 내용 정리 모음 (2) | 2023.02.22 |