String substring 명령어
public static void main(String[] args) {
String email = "0123456@naver.com";
System.out.println(email.indexOf("@"));
// 해당 글자의 위치를 알려주는 명령어
System.out.println(email.substring(3));
// substring(), 3번 인덱스부터 문자열 끝까지 리턴하는 명령어
System.out.println(email.substring(0,email.indexOf("@")));
// 0번 인덱스부터 "@" 가 위치한 인덱스 이전까지 리턴
System.out.println(email.substring(email.indexOf("@")));
// "@" 부터 문자열 끝까지 리턴, @naver.com
System.out.println(email.substring(email.indexOf("@") + 1));
// "@" 문자 다음부터 문자열 끝까지 리턴, naver.com
// 위 명령어를 단계적으로 나누어 보는 예시
int index = email.indexOf("@");
String subString = email.substring(index + 1);
System.out.println(subString); // naver.com
}
이를 활용한 이메일 확인하기
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("이메일을 입력해주세요.");
String email = sc.nextLine();
if (email.contains("@")) {
System.out.println("올바른 이메일입니다.");
System.out.println("당신의 ID : " + email.substring(0, email.indexOf("@")));
System.out.println("당신의 이메일 서버 : " + email.substring(email.indexOf("@") + 1));
} else {
System.out.println("올바르지 않은 이메일입니다.");
}
System.out.println(email);
}
String, StringBuilder, StringBuffer
public static void main(String[] args) {
// String : 변경되지 않는 객체는 간단하게 사용 가능하고, 동기화에 대해 신경 안씀
// StringBuffer : 각 메소드 별 Synchronuzed Keyword 가 존재하여 멀티스레드 환경에서도 동기화를 지원
// StringBuilder : 스레드에 안전한지 여부가 전혀 관계 없는 프로그램을 개발할 때 사용
// 단순히 성능만 놓고 보았을 때 연산이 많은 경우
// StrungBuilder > StringBuffer >>> String
StringBuilder sb = new StringBuilder();
// append 를 이용하여 값 추가
sb.append("가나다라");
sb.append("마바사");
sb.append("아자차카타파하");
System.out.println(sb); // 가나다라마바사아자차카타파하
String text = sb.toString();
System.out.println(text); // 가나다라마바사아자차카타파하
System.out.println(text.equals(sb)); // false
System.out.println(text.equals(sb.toString())); // true
sb.insert(0, "하"); // 0 번 index 에 "하" 추가
System.out.println(sb); // 하가나다라마바사아자차카타파하
sb.insert(sb.length() - 1, "가");
System.out.println(sb); // 하가나다라마바사아자차카타파가하
sb.delete(0, 3); // 0 번 index 부터 3 번 index 전까지 삭제
System.out.println(sb); // 다라마바사아자차카타파가하
sb.replace(0,3,"아"); // 0 번 index 부터 3 번 index 전까지 "아" 로 교체
System.out.println(sb); // 아바사아자차카타파가하
sb.reverse(); // 문자열을 거꾸로 뒤집음
System.out.println(sb); // 하가파타카차자아사바아
// subSequence(시작 위치, 끝 위치), 시작 index 부터, 끝 index 전까지 리턴
System.out.println(sb.subSequence(0, 3));
// 현재 StringBuilder 문자열의 저장 공간 확인
System.out.println(sb.capacity()); // 16, 문자열이 길어질수록 공간 추가
}
오늘부터 객체지향 공부
만약 자동차를 만든다고 하면 자동차 설계도와 자동차를 만드는 공정이 필요
자동차 설계도 : 클래스
자동차를 만드는 공정 : 메소드
자동차 : 인스턴스 (객체)
클래스를 만드는 방법
public class 클래스 이름 { // public class 는 반드시 소문자
}
class Tire { // 일반적으로 소스파일 당 1개의 클래스를 선언하지만 2개 이상의 클래스 선언도 가능
}
2개 이상의 클래스를 선언 후 컴파일하면 바이트 코드 파일(.class)은 클래스를 선언한 만큼 생김
소스 파일은 클래스 선언을 담고 있는 저장 단위일 뿐, 클래스 자체가 아님
※ public 접근 제한자는 파일 이름과 동일한 이름의 클래스 선언에만 붙일 수 있음
클래스로부터 객체를 생성하기 위해서는 new 연산자를 사용해야 함
new 클래스();
// new 연산자는 힙 영역에 객체를 생성시킨 후 객체의 주소를 리턴
클래스 변수;
변수 = new 클래스(); // 변수에는 객체의 주소가 대입
클래스 변수 = new 클래스();
클래스는 멤버를 가질 수 있다
멤버 변수, 멤버 변수는 값을 설정하지 않아도 된다. = 초기화를 해주지 않음
설정을 하지 않은 멤버 변수는 '0', 혹은 'null' 로 초기화된다.
멤버 = 변수 = 필드 = 멤버 필드 = 클래스 필드
// 예시로 자동차의 필드를 정의
String company; // 자동차 브랜드
String model; // 자동차 모델
String color; // 자동차 색상
int maxSpeed; // 차량 최고 속도
메소드 = 기능 = 코드의 집합
// 자동차의 기능
public void run () {} // 자동차가 달리는 기능
public void stop () {} // 자동차가 멈추는 기능
등 다양한 기능을 메소드로 구현 가능
Car 클래스 생성
class Car {
String company;
String model;
String color;
int maxSpeed;
public void run () {
}
public void stop () {
}
}
Car 클래스를 이용하여 car 객체 생성
Car car = new Car();
// 여기서 Car() 는 Car 클래스의 생성자, 인스턴스를 만들어 줌
필드 값 입력하기
car.company = "현대";
car.model = "그랜져";
car.color = "검정";
car.maxSpeed = "200";
처럼 Car 클래스의 필드를 설정 가능
클래스 생성하여 객체 만들어보기
class Cat {
String name;
int age;
String gender;
public Cat (String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
}
public class Study01 {
public static void main(String[] args) {
Cat cat = new Cat("야옹이", 3, "수컷");
System.out.println(cat.name); // 야옹이
System.out.println(cat.age); // 3
System.out.println(cat.gender); // 수컷
cat.name = "호랑이"; // 생성 후에도 값 변경 가능
System.out.println(cat.name); // 호랑이
Cat cat2 = new Cat("이양이", 5, "암컷");
cat2 = cat; // cat2 는 cat 의 주소 참조하여 생성할 때 넣은 값은 사라짐
System.out.println(cat2.name); // 호랑이
System.out.println(cat2.age); // 3
System.out.println(cat2.gender); // 수컷
// 다시 cat2 가 참조하는 객체 만들기
cat2 = new Cat("이양이", 5, "암컷");
System.out.println(cat2.name); // 이양이
System.out.println(cat2.age); // 5
System.out.println(cat2.gender); // 암컷
}
}
'JAVA' 카테고리의 다른 글
231215 Java 객체지향 (0) | 2023.12.15 |
---|---|
231214 Java 객체지향 (2) | 2023.12.14 |
231212 Java (0) | 2023.12.12 |
231211 Java (2) | 2023.12.11 |
231208 Java (0) | 2023.12.08 |