String str = ""; // OK. 내용이 없는 빈 문자열
cahr ch = ''; // 에러. ''안에 반드시 하나의 문자가 필요
char ch = ' '; // OK. 공백 문자(blank)로 변수 ch를 초기화
문자열 + any type -> 문자열 + 문자열 -> 문자열
any type + 문자열 -> 문자열 + 문자열 -> 문자열
자바는 C언어와 달리 참조형 변수 간의 연산을 할 수 없음
실제 연산에 사용되는 것은 모두 기본형 변수
기본형 : boolean, char, byte, short, int, long, float, double
참조형 : 8개의 기본형을 제외한 나머지 타입
정수형의 경우 ~ 의 범위
n은 bit수 (1byte = 4bit)

double d = 1.23456789;
System.out.printf("d=%14.10f%n",d); // d= 1.23345678900
// %전체자리.소수점아래자리f -> 전체 14자리 중 소수점 아래 10자리
// 앞의 빈자리는 공백으로 채우고 뒤의 빈자리는 0으로 채움
(char) 65 // 'A'
(int) 'A' // 65
(int) 1.6f // 1
(float) 10 // 10.0f
표현 범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 값 손실이 없으므로 투 타입 중에서 표현버위가 더 넓은 쪽으로 형변환

1. 두 피연산자의 타입을 같게 일치 시킴 (보다 큰 타입으로 일치)
long + int -> long + long -> long
float + int -> float + float -> float
double + float -> double + double -> double
⭐️ 2. 피연산자의 타입이 int보다 작은 타입이면 int로 변환
byte + short -> int + int -> int
char + short -> int + int -> int
// 무조건 소수점 첫째자리에서 반올림
long result = Math.round(3.14); // 3
// 자리수를 조절하는 방법
// ex) 소수점 3자리만 출력하고 싶을때
double pi = 3.141592;
double shortPi = Math.round(pi*1000) / 1000.0; // 3.142
String str1 = "abc"; // String pool에 저장
String str2 = new String("abc"); // 새로운 객체를 Heap에 생성
== : 내용과 같은 객체인지 비교, equals : 내용만 같은지 비교
str1 =="abc"; // true
str2 == "abc"; // false
str1.equals("abc"); // true
str2.equals("abc"); // true
str2.equalsIgnoreCase("ABC"); // true
0.0 <= Math.random() < 1.0
// 1~3 사이의 임의의 정수 만들기
1 <= (int) (Math.random() * 3) +1 < 4