1.5 Strings

변수를 선언하는 것에 있어서도

new를 사용하고 안하고는 큰 차이가 생김

https://images.velog.io/images/tonyhan18/post/dba64c4e-3543-4925-9262-91b2a0d16a08/image.png

new 를 쓴다는 것은 공간을 생성하여서 값을 대입하는 것이기 때문에

이때 변수에 저장된 것은 메모리 공간의 주소이지 메모리 공간의 값이 저장된 것이 아니다.

String s1 = "Java";
String s2 = "JAVA";

if(s1=="Java") System.out.println("same");
//여기에서 물어보는 것은 같은 객체를 참조하는지 물어보는 것이다.
//동적할당된 객체가 아니기 때문에 same 문구가 출력된다.

if(s1.toUpperCase() == s2) System.out.println("same");
//이 것은 s1의 객체를 가지고 와서 대문자로 바꾼다음 새로운 객체를 반환
//하는 것이기 때문에 값을 비교하는 것이 아닌 여전히 주소를 비교하는 문장이다

String su = s1.toUpperCase();
if(s2.equals(s1)) System.out.println("same");
//그렇기 때문에 가능하다면 객체의 함수를 사용하여서 확인해 주는
//과정이 필요하다.

https://images.velog.io/images/tonyhan18/post/9883d5ce-9c35-4d1d-8e8a-541ef130c37c/image.png

그렇기 때문에 우리는 String 에 내장되어 있는 다양한 함수들을 그때그때마다 찾아서 사용해 주어야 한다.

1.6 Inputs and Outputs

import java.util.Scanner;

Scanner in = new Scanner(System.in);
System.out.println("What is your name");
String name = in.nextLine();

이외에도 next : 공백이전까지의 문자열을 읽는다. nextInt : 정수값을 입력으로 받음(문자를 넣으면 에러남) nextDouble : 실수값을 입력으로 받음(문자를 넣으면 에러남)

등등이 있다.

System.out.print() // 출력하고 줄 안바뀜
System.out.println() // 출력하고 줄 바뀜
System.out.printf() // 출력형식 지정 가능

출력 형식 d : int x : hexadecimal f : floating c : character s : string b : boolean