일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 복합 선택자
- 웹개발
- 즐거운자바
- datalist
- 김성박
- nth-of-type()
- nth-child()
- ES6
- 속성 선택자
- jsp
- JavaScript
- vmax
- 서블릿
- spring
- 부스트코스
- 소스트리
- 다시볼 것
- 가상요소 선택자
- 보충필요
- vmin
- EDWITH
- 깃헙
- 부정 선택자
- 다시보자
- 상속
- 자바
- 즐거운 자바
- 가상클래스 선택자
- HTML Templating
- optgroup
Archives
- Today
- Total
기억의 DataBase
기본형, 참조형, 배열, Object, String 본문
기본형, 참조형, 배열
- Java에서 객체가 아닌 것들 - 기본형
소문자로 시작
기본형은 값을 가짐 > 값을 저장
boolean - True/False
char - 문자(2byte) 하나, 2byte 양의 정수
int - 4byte 정수
long - 8byte 정수, 10L, 20L
float - 4byte 실수, 10.5f
double - 8byte 실수
- 객체타입 - 참조형
대문자로 시작
참조형은 값을 참조함 > 인스턴스를 참조(주소 저장 X)
배열
String - 문자열, 부모가 Object
Object - toString( ) > 메소드를 가짐(Object 정보 return)
※ 메소드 오버로딩 - 파라미터로 다양한 값을 받게 작성(사용자 편이 추구)
> println(Object o) - 파라미터로 다 가능
※ 메소드에 파라미터로 준다는 것은 메모리에 새로운 값으로 복사한다는 것
메소드가 종료되면 메모리에서 삭제됨(static 메소드는 남아있음)
- 배열
같은 타입의 변수를 여러개 선언할 때 용이
int[] array = new int[1000];
int array2[] = new int[1000];
int[] a, b;
int c[], d;
Car[] car = new Car[] {new Car()};
System.out.println(car.length);
※ foreach + Ctr + Space >> 자동완성
- Object
Object의 메소드 toString(), equals(), hashCode()는 오버라이딩을 위해 준비된 메소드
> 오버라이딩의 기준은 자식메소드 > 객체를 만드는 사람이 설정
- toString()
public class ObjectTest {
public static void main(String[] args) {
Object obj1 = new Object();
//Object를 파라미터로 넣어주면 내부적으로 toString()을 호출
//toString()은 객체가 갖고 있는 값을 문자열로 바꿔서 반환
System.out.println(obj1);
System.out.println(obj1.toString());
}
}
- equals()
int wheel = 10;
@Override
public boolean equals(Object obj) {
if (this == obj) // 들어온 인자와 this가 같은가
return true;
if (obj == null) // 들어온 인자가 null
return false;
if (getClass() != obj.getClass()) // 들어온 인자와 this의 클래스 정보가 같은가
return false;
Car other = (Car) obj;
if (wheel != other.wheel) // 인자의 필드값을 비교
return false;
return true;
}
- hashCode()
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + wheel;
return result;
}
- String
String은 불변클래스 : String이 가지고 있는 모든 메소드는 값을 반환만하고,
자기 자신은 변하지 않음
public class StringTest {
public static void main(String[] args) {
String str1 = "hello"; // 상수 pool에 들어가기 때문에 같은 값으로
String str2 = "hello";
String str3 = new String("hello"); // new를 쓰면 새로운 인스턴스를 생성
String str4 = new String("hello");
if(str1==str2) { // == : 같은 것을 참조하는가
System.out.println("str1==str2");
}
if(str1.equals(str3)) { // equals : 같은 값을 가진 것인가
System.out.println("str1 == str3");
}
if(str3==str4) { // new를 쓰면 다른 인스턴스
System.out.println("str3 == str4");
}
}
}
문자열과 문자열을 더하는 코드를 쓰면 StringBuffer 인스턴스가 만들어짐
> 반복문 내에서 문자열을 더하면 성능에 많이 저하(서버 프로그램에서 민감)
> StringBuffer, StringBuilder 객체를 사용하는게 좋음
StringBuffer sb = new StringBuffer();
sb.append("*");
※ @Override 어노테이션 >> 오타로 인해서 메소드명이 다르거나 하면 오버라이드가 안됨
※ 정규표현식 : String의 가장 깊은 문법
ex) 긴 문자열에서 email이 있는지를 확인
Comments