0827 | 자바의 정석 기초편 :: ch2-10
몸살이 나서 지금 제정신이 아닌거같지만... 오늘 할 일은 해야 하니까 😑 기본형과 참조형 ✔ 값의 타입 8개 = 기본형 - 문자 (가나다, abc) - char - 숫자 ( 정수 - byte, short, int, long / 실수 - float, doubl
ala-nueva.tistory.com
▲ 값변수와 참조변수 정리
[1] 기본형과 래퍼클래스
- int n = 3; //n은 변수를 담는 그릇. 자바 기본형 = 값변수
- String s = n; // s는 그릇이 아니다. 이름의 역할 = 참조변수
- 기본형에 박스를 씌운 (객체화) 래퍼클래스, Integer, Double (대문자로 시작)
🟩 문제점
1. String s 그릇(객체) 안에 그릇(객체)이 들어가는 형태가 되어서 불가. 대입연산자를 기준으로 (공간) = (값) 의 구조가 되어야 한다. ▶ 따라서 실제로는 n에 있는 3을 꺼내서 대입을 시도한다.
2. String에 int 값을 연결시키므로 형식이 안맞아서 불가.
✅ 변수는 값을 다루는 값 변수와 참조만 하는 참조변수로 나눠진다
✅ 객체는 공간에 담는게 아니라 식별하는 것
* 문자열 String은 하나의 도구.
"문자열".메소드() 로 기능을 붙여쓸 수 있는게 그 증거!!!

public static void main(String[] args) {
int x = 3;
Integer x1 = Integer.valueOf(x); // new Integer(x); boxing. 래퍼클래스를 만드는 새로운 방법
int x2 = x1.intValue(); // unboxing
double z = 4.3;
Double z1 = Double.valueOf(z);
double z2 = z1.doubleValue(); // unboxing
String y = "hello"; // string은 이미 박싱이 되어있다고 보면 됨.
}
[2] String 객체 이해하기
""문자를 표기하는 표기법. 독단적으로 사용되면 런타임이 객체화해준다.
👉 즉, "큰따옴표"가 있다고 해서 무조건 객체는 아니다.
2-1) String과 기본형간 변경하기 - valueOf()
// string <-> 기본형간 변경
int n1 = 10;
String s1 = Integer.toString(n1); // int로 명시된 값을 toString
String s3 = String.valueOf(n1); // 어떤 값이든 string으로 변경
String s2 = "30.2";
double n2 = Double.valueOf(s2);
2-2) String 객체간 비교하기
// String 객체간 비교
String name1 = "아이유";
String name2 = "아이유"; // 자바 실행환경이 박스를 입힘
String name3 = new String("아이유"); // 내가 의도적으로 입힘
System.out.println(name1 == name2); // 같은 박스(객체)를 참조하는지 비교해서 true
System.out.println(name1 == name3); // new로 새 박스를 만들었으므로 서로 다른 박스를 참조해서 false
System.out.println(name1.equals(name2)); // 박스 안의 값 비교 true
System.out.println(name1.equals(name3)); // 기존 박스와 새 박스 안의 값도 동일해서 true
System.out.println(name1 =="아이유"); // true. 중복박스를 만들지않는다.
2-3) String에 내장된 기능으로 문자열 출력하기
✔ 스트링이 가진 내장메서드 활용하기
String.length() // 문자열 길이 반환
String.indexOf() // 지정한 매개변수의 인덱스 반환
String.substring(start index,end index) // 인덱스로 추려낸 문자나 문자열 반환 (end index-1 까지 출력)
// 확장자를 제외한 파일명 출력
String fileName = "photo.jpg";
System.out.println("길이: " + fileName.length()); // 전체 길이 9반환
int index = fileName.indexOf("."); // 점이 있는 위치 찾기
System.out.printf("index:%d%n ", index);
String result1 = fileName.substring(0, 3);// 파일명에서 3번쨰 문자까지 출력
System.out.println(result1); // 인덱스 0,1,2 문자만 출력되어 pho
String name = fileName.substring(0, index);// 파일명만 출력하기
System.out.println(name);
String name1 = fileName.substring(0, fileName.indexOf(".")); // 변수명이 아닌, 메서드 그대로 넣기
System.out.println(name1);
✔ 그 외 String 메소드 실험
int last = myname.lastIndexOf("u"); // 해당되는 문자열을 찾아 인덱스 반환. 없으면 -1
char word = myname.charAt(0); //0번째 문자 반환
boolean t = myname.contains("a-ki"); // 문자열이 포함되어있는지 참거짓 반환
String added = myname.concat("'s english name is lia"); // 기존 문자열에 원하는 문자열 더해서 반환
String change = myname.replace(word, 't'); // 지정한 문자를 원하는 문자로 교체
String change1 = myname.replace("y","myuna" ); //지정한 문자열을 원하는 문자열로 교체. 문자-문자열 로 대입은 가능한데 똑같이 String으로 적혀있어야 한다 ("y" -,"myuna")는 되는데 ('y'-"myuna")는 안됨
String upper = myname.toUpperCase();
String[] arr = myname.split("-"); // 지정문자열로 잘린 문자열이 배열로 반환
System.out.println("last: " + last);
System.out.println("word :" + word);
System.out.println("t:" +t);
System.out.println("added:" + added);
System.out.println("change:" + change);
System.out.println("change1:" + change1);
System.out.println("upper: " + upper);
System.out.println("split 결과는 아래에!");
for(String s : arr)
System.out.print(s);

'😵 ~23.11.10' 카테고리의 다른 글
0612 | 연산자 (0) | 2023.06.12 |
---|---|
0612 | 연습문제 > 실수 & 개선방안 정리 > 파일 입출력+문자열 다루기 (0) | 2023.06.12 |
0608 | 입출력 스트림을 이용한 비동기 처리 (파일 인아웃 흐름 만들기) (0) | 2023.06.08 |
0607 | 변수선언, 형변환, 개체와 객체, 아스키코드와 유니코드, 바이너리 플러그인, 문자값 읽어내기 (1) | 2023.06.07 |
0605 | 자바실행원리, 패키지, 자바 값 종류와 표현법 (1) | 2023.06.05 |