Object클래스는 java.lang내 최상위 클래스이며
다른 타입들은 기본형 형태로 저장되어있다.
자바가 api를 정의한 모든 클래스와 사용자가 만든 클래스의 최상위 클래스
무든 클래슨느 이 Object를 상속받아서 사용
Object는 자동으로 import된다.
Object --- String
--- Boolean
--- StringBuffer
--- Character
--- Number --- Byte
--- Short
--- Integer
--- Long
--- Float
--- Double
public class Object01 {
public static void main(String[] args) {
String str1 = "Hi";
String str2 = new String("Hi"); // 다르다
//String str2 = "Hi";
System.out.println(str1);
System.out.println(str2);
if(str1 == str2) { // 객체에서 == 같은 객체?
System.out.println("같다");
}else {
System.out.println("다르다"); //다르다
}
if(str1.equals(str2)) {
System.out.println("같다"); //같다
}else {
System.out.println("다르다");
}
str2 = str1;
str1 = "Hello";
System.out.println(str1 == str2); //false
for (int i = 0; i < 10 ; i++) {
str1 += i + " ";
}
System.out.println(str1); //Hello0 1 2 3 4 5 6 7 8 9
System.out.println(str2); //Hi
System.out.println(str1.getBytes()); //[B@4926097b
System.out.println(str2.getBytes()); //[B@762efe5d
System.out.println(str1.getClass()); //class java.lang.String
System.out.println(str2.getClass()); //class java.lang.String
System.out.println(str1.hashCode()); //1049652869
System.out.println(str2.hashCode()); //2337
}
}
ID-PW비교 if문
import java.util.Scanner;
public class Object02 {
public static void main(String[] args) {
String id = "hong";
String pw = "01234567";
Scanner sc = new Scanner(System.in);
int cnt = 0 ;
boolean check = false;
while(cnt<5&&check==false) {
System.out.println("총 5회(현재 "+(5-cnt)+"회 남음)");
System.out.println("ID를 입력하세요.");
String inputID = sc.next();
if(id.equals(inputID)) {
System.out.println("pw를 입력하세요.");
String inputPW = sc.next();
if(pw.equals(inputPW)) {
System.out.println("로그인 되었습니다.");
check = true;
}else {
System.out.println("비밀번호가 잘못되었습니다.");
cnt++;
}
}else {
System.out.println("Id 가 다릅니다. 다시 입력하세요");
cnt++;
}
}
System.out.println("지정된 횟수를 초과하였습니다.");
}
}
String 사용 예제
String str = "Hi";
String str2 = new String("Hi");
str = str + " java";
System.out.println(str); //Hi java
byte[] byteArr = { 97, 98, 99, 100 };
String str3 = new String(byteArr);
System.out.println(str3); //abcd
String str4 = new String(byteArr, 0, 3); //abc
System.out.println(str4);
String str5 = new String(byteArr, 1,3);
System.out.println(str5); //bcd
System.out.println(str5.length()); // 3
System.out.println(str5.charAt(str5.length()-1)); // d
concat
//concat
str2 = str2.concat(" JAVA");
System.out.println(str2); //Hi JAVA
contains
//contains
System.out.println(str2.contains("Hi"));//true
System.out.println(str2.contains("hi"));//false
endWith
//endsWith
System.out.println(str2.endsWith("A")); //true A로 끝나나?
indexOf, substring
String email = "aaabbbc@naver.com";
//indexOf
System.out.println(email.indexOf('@'));//7
System.out.println(email.contains("@"));//true
//substring
System.out.println(email.substring(0, email.indexOf('@'))); //aaabbbc
System.out.println(email.substring(email.indexOf("@")+1)); //naver.com
System.out.println(email.substring(email.indexOf("@")+1, email.length())); //naver.com
Email 체크 정규식
import java.util.Scanner;
import java.util.regex.Pattern;
public class EmailCheck {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean check = false;
String id = null, server = null;
while(check==false) {
System.out.print("이메일을 입력하세요 : ");
String email = sc.next();
if(email.contains("@")||email.contains(".com")||email.contains(".co.kr")
||email.contains(".net")||email.contains(".org")) {
id = email.substring(0,email.indexOf("@"));
server = email.substring(email.indexOf("@")+1);
if(Pattern.matches("^[a-zA-Z]+\\.[a-zA-Z]+$", server)) {
check = true;
}
else {
System.out.println("잘못된 Domain 형식입니다.");
}
}
else {
System.out.println("잘못된 이메일 형식입니다.");
}
}
System.out.println("id : " + id);
System.out.println("domain : " + server);
System.out.println(Pattern.matches("^[a-zA-Z]+\\.[a-zA-Z]+$", server));
if(id.length()>=5 && id.length() <= 10) {
if(Character.isUpperCase(id.charAt(0))) {
if(Pattern.matches("^[a-zA-Z0-9]*$", id)) {
System.out.println("올바른 ID입니다.");
}else{
System.out.println("ID는 영문자와 숫자로만 구성되어야합니다.");
}
}
else {
System.out.println("id의 첫문자는 반드시 영어 대문자이어야 합니다.");
}
}
else {
System.out.println("id의 길이는 5~10자이어야 합니다.");
}
}
}
StringBuffer / StringBuilder
StringBuffer : 멀티 스레드 환경에서 사용할 수 있도록 동기화가 되어있다.
기본 생성자로 생성하면 16개 문자가 들어가도록 초기 버퍼를 세팅
StringBuilder : 단일 스레드 환경에서만 가용하도록 설계
StringBuilder(int 값); 값만큼 문자를 저장하고 초기 버퍼를 세팅
버퍼가 부족할 경우 자동으로 버퍼 크기를 늘리기 때문에
초기 버퍼가 중요하지 않다.
import java.util.Arrays;
public class String02 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
// sb = "java";
sb.append("추가");
sb.append("JAVA");
System.out.println(sb); //추가JAVA
sb.insert(2, "+");
System.out.println(sb); //추가+JAVA
sb.deleteCharAt(3);
System.out.println(sb); //추가+AVA
sb.delete(1, 4);
System.out.println(sb); //추VA
//replace(); 원하는 위치의 문자,문자열을 교체
//replace(1, 2, "SPRING"); index 2~6까지의 문자를 SPRING으로 교체
sb.replace(1, 2, "SPRING");
System.out.println(sb); //추SPRINGA
//toString
String str = sb.toString();
System.out.println(str); //추SPRINGA
char[] charArray = str.toCharArray();
//[추, S, P, R, I, N, G, A]
System.out.println(Arrays.toString(charArray));
char[] charArray02 = Arrays.copyOf(charArray, charArray.length);
//[추, S, P, R, I, N, G, A]
System.out.println(Arrays.toString(charArray02));
//Arrays.copyOfRange(원복, 시작index, 끝index);
charArray02 = Arrays.copyOfRange(charArray, 2, 4);
System.out.println(Arrays.toString(charArray02)); //[P, R]
charArray02 = charArray.clone();
System.out.println(Arrays.toString(charArray02));
//[추, S, P, R, I, N, G, A]
StringBuffer sb2 = new StringBuffer();
sb2.append("JAVA");
System.out.println(sb2); //JAVA
}
}
'프로그래밍 > Java 공부' 카테고리의 다른 글
JAVA_is a, has a, java memory, 랩퍼클래스, 오토 박싱, 언박싱, enum (0) | 2021.06.10 |
---|---|
abstract 추상화, interface 인터페이스, polymorphism 다형성 (0) | 2021.06.09 |
접근제어자(public, protected, default, private) (0) | 2021.06.03 |
인스턴스 멤버, 생성자(Constructor), 정적 멤버(static) (0) | 2021.06.03 |
객체지향프로그래밍_OOP, 자바 파라미터에 클래스 전달 (0) | 2021.06.02 |