String 문자열
Character 문자
- 그냥 개행하면 오류
- 요런 식으로 자바가 처리함
System.out.println("Hello "
+ "World");

문자열 비교 연산자
대소문자 구분 O
문자열1.equals(문자열2);
-> 같으면 true
, 같지 않으면 false
- 완전히 똑같아야 함
대소문자 구분 X
문자열1.equalsIgnoreCase(문자열2);
-> 대소문자 구분 안하고 같으면 true
, 같지 않으면 false
👀👀
==
와 .equals()
의 결과는 왜 다른걸까?
String
변수 생성 방법
1. 리터럴 이용
String s = "abc";
string constant pool
영역에 존재
2. new
연산자 이용
String s = new String("abc");
두 연산자의 차이
1. ==
- 두 대상의 객체의 주솟값 비교
- 일반 객체처럼
Heap
영역에 생성된 String
객체와, 리터럴을 이용해 string constant pool
에 저장된 String
객체의 주솟값은 다르다.
2. .equals()
String
클래스의 .equals()
메소드
- 두 대상의 데이터 값 자체 비교
일반적인 타입과 String
타입의 차이
1. 일반적인 타입 : int
, char
...
Call by Value
-> 기본적으로 대상에 주솟값을 가지지 않는 형태로 사용됨
2. String
- 일반적인 타입이 아니라 클래스다.
- 클래스는 기본적으로
Call by Reference
-> 주솟값 부여
- 같은 데이터값을 부여하더라도 서로 주솟값이 다를 수 있다.
new line : \n
escape : \
public class stringapp {
public static void main(String[] args) {
System.out.println("Hello World"); // String > Character
// System.out.println('Hello World'); // Character ..error
System.out.println('H'); // Character
System.out.println("H"); // String
System.out.println("Hello "
+ "World");
System.out.println("Hello \nWorld"); // new line
System.out.println("Hello \"World\""); //Hello "World"
}
}

public class stringoperation {
public static void main(String[] args) {
System.out.println("Hello World".length());
System.out.println("Hello [[name]] ... bye. ".replace("[[name]]", "egoing"));
}
}

Ref