beginIndex 위치에서 시작하여, endIndex 의 전 위치 까지 자릅니다.
😎 Index는 0부터 시작합니다
예를 들어
String gold = "GOLD";
"G" = 0 번째 Index, "L" = 2 번째 Index 인것입니다.
public class Main {
public static void main(String[] args) {
String gold = "GOLD";
String g = "G";
String goldSub1 = gold.substring(0, 1); // "G"
String goldSub2 = gold.substring(1, 3); // "OL"
System.out.println(g == goldSub1); // false
System.out.println(goldSub2); // OL
}
}
실행결과
false
== 비교는 주소값을 비교, .equals() 는 값 자체를 비교 합니다.
- 아래의 예시처럼
phoneNumber.split("-");: - 라는 특정 문자를 기준으로 나눈다는 뜻입니다.- 이 외에도 공백, 쉼표, 등 다양하게 사용할수있습니다.
phoneNumber.split(" ");,phoneNumber.split(",");
public class Main {
public static void main(String[] args) {
String phoneNumber = "010-1234-5678";
String[] phoneNumberSplit = phoneNumber.split("-");
System.out.println(phoneNumberSplit[0]); // 010
System.out.println(phoneNumberSplit[1]); // 1234
/**
010 = 0번 Index
1234 = 1번 Index
5678 = 2번 Index
**/
}
}
실행결과
010
1234
split()하여 많이 사용합니다.hashCode()
객체의 주소값을 변환하여 생성한 고유의 정수 값이라 할수있습니다.
public class Main {
public static void main(String[] args) {
String gold = "GOLD";
String g = "G";
String goldSub1 = gold.substring(0, 1); // "G"
System.out.println(g.hashCode()); // 71
System.out.println(goldSub1.hashCode()); // 71
System.out.println(g == goldSub1); // false;
}
}
실행결과
71
71
false
- 위의 코드와 같이
hashCode가 같다고 같은 메모리(주소)가 아닙니다.- 서로 다른
String객체 문자열이 같다면hashCode가 같은것입니다.- String은
heap에 저장되고hash(해시)의 형태로 저장됩니다.
대표적으로hashMap(key, value)
(hashCode가 같다고해서 같은key값으로 저장되지는 않습니다)
배열 (Array)
동일한 타입의 데이터(값)를 그룹화 하여 묶어준다고 생각하면 될 것입니다.
장점 : 불필요한 변수사용을 줄일수있으며, 반복문을 통해 손쉽게 사용가능합니다.
public class Main {
public static void main(String[] args) {
int number1 = 1;
int number2 = 2;
int number3 = 3;
System.out.println(number1);
System.out.println(number2);
System.out.println(number3);
}
}
배열 사용시
( 0 부터 시작)
public class Main {
public static void main(String[] args) {
int[] number = new int[3]; // 배열 초기화, 크기를 3으로 정의
// 크기 지정없이 값을 바인딩해서 크기를 만듬
String[] stringArr = new String[]{"Shin", "Jae", "Won"};
// number 배열의 길이(length)만큼 반복(loop)합니다.
for (int i = 0; i < number.length; i++) {
System.out.println(number[i]);
}
for (int i = 0; i < stringArr.length; i++) {
System.out.println(stringArr[i]);
}
}
}
실행결과
0
0
0
Shin
Jae
Won
int[] number = new int[3];
- new 연산자 사용시 기본값으로 0이 할당됩니다.
int[] number = new int[3];
int size = number.length;// nunmber 배열의 길이인 3이 반환됩니다.
public class Main {
public static void main(String[] args) {
int number = 25;
// 25 -> 2진수로 변환
System.out.println(Integer.toBinaryString(number)); // 11001
System.out.println(Integer.toString(number, 2)); // 11001
// 2진수를 10진수로 변환
System.out.println(Integer.parseInt("11001", 2)); // 25
}
}
Integer.toString(number, 2);
Integer.toString(입력 값, 바꾸고싶은 진법);
String으로 반환된다.