본문 바로가기

JAVA

231213 Java

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