>  기사  >  Java  >  자바 학습 여정

자바 학습 여정

Susan Sarandon
Susan Sarandon원래의
2024-10-19 18:20:02442검색

Java Learning Journey

저는 최근 [https://exercism.org/tracks/java/exercises]의 실습을 통해 Java를 배웠습니다. 현재 진행 상황은 총 148개 실천 중 13개입니다. 제가 배운 내용을 공유하고 싶습니다.

이 게시물은 .split(), .trim(), .isDigit(), .isLetter(), Comparable, 사용자 정의 Java 예외 및 인터페이스에 대한 나의 이해를 소개합니다.

1) .분할()

정의: .split() 메서드는 구분 기호 [1]을 기준으로 문자열을 배열로 나눕니다.

구문:

public String[] split(String regex, int limit)

매개변수:

  • 정규식: (필수 필드) 구분 기호 패턴
  • 제한: ​​(선택적 필드) 반환된 배열의 최대 길이

:

public class Main{

    public void getProductPrice(String products){
        double totalPrice = 0.0;
        StringBuilder priceDetails = new StringBuilder();

        String[] singleProduct = products.split("; ");

        for(int i = 0; i < singleProduct.length; i++){
            String[] productInfo = singleProduct[i].split(", ");
            totalPrice += Double.parseDouble(productInfo[2]);

            priceDetails.append(productInfo[2]);
            if(i < singleProduct.length - 1){
                priceDetails.append(" + ");
            }
        }

        System.out.println(priceDetails + " = " + totalPrice);
    }

    public static void main(String arg[]){
        Main obj = new Main();
        obj.getProductPrice("1, dragonfruit, 12.50; 2, guava, 23.45; 3, avocado, 395.67");
    }

}

출력:

12.50 + 23.45 + 395.67 = 431.62

2) .트림()

정의: .trim() 메서드는 문자열 [2]의 양쪽 끝에서 공백을 제거합니다.

구문:

public String trim()

매개변수:

  • 매개변수 없음

:

public class Main{
    public static void main(String args[]){
        String str = "   You can do it!   ";
        System.out.println(str);
        System.out.println(str.trim());
    }
}

출력:

   You can do it!   
You can do it!

3) .isDigit()

정의: .isDigit() 메서드는 문자가 숫자인지 [3]인지 여부를 결정합니다.

구문:

public static boolean isDigit(char ch)

매개변수:

  • ch: (필수필드) 테스트할 문자값

:

public class Main{

    // return true when the given parameter has a digit
    public boolean searchDigit(String str){
        for(int i = 0; i < str.length(); i++){
            // charAt() method returns the character at the specified index in a string
            if(Character.isDigit(str.charAt(i))){
                return true;
            }
        }
        return false;
    }

    // print digit index and value
    public void digitInfo(String str){
        for(int i = 0; i < str.length(); i++){
            if(Character.isDigit(str.charAt(i))){
                System.out.println("Digit: " + str.charAt(i) + " found at index " + i);
            }
        }
    }

    public static void main(String args[]){
        Main obj = new Main();
        String[] strList = {"RT7J", "1EOW", "WBJK"};

        for(String str : strList){
            if(obj.searchDigit(str)){
                obj.digitInfo(str);
            }else{
                System.out.println("No digit");
            }
        }

    }
}

출력:

Digit: 7 found at index 2
Digit: 1 found at index 0
No digit

4) .isLetter()

정의: .isLetter() 메서드는 문자가 문자인지 아닌지를 결정합니다[4].

구문:

public static boolean isLetter(char ch)

매개변수:

  • ch: (필수필드) 테스트할 문자값

:

public class Main{

    // check whether phoneNum has letter
    public void searchLetter(String phoneNum){
        boolean hasLetter = false;

        for(int i = 0; i < phoneNum.length(); i++){
            if(Character.isLetter(phoneNum.charAt(i))){
                hasLetter = true;
                // return letter value and index
                System.out.println(phoneNum + " has letter '" + phoneNum.charAt(i) + "' at index " + i);
            }
        }

        // phone number is valid when no letter
        if(!hasLetter){
            System.out.println(phoneNum + " is valid");
        }

        System.out.println();
    }

    public static void main(String args[]){
        Main obj = new Main();
        String[] phoneNum = {"A0178967547", "0126H54786K5", "0165643484"};

        for(String item: phoneNum){
            obj.searchLetter(item);
        }
    }
}

출력:

A0178967547 has letter 'A' at index 0

0126H54786K5 has letter 'H' at index 4
0126H54786K5 has letter 'K' at index 10

0165643484 is valid

5) 비교 가능

정의: 비교 대상 인터페이스는 객체 컬렉션의 자연스러운 순서를 정의하는 데 사용되며 비교되는 객체의 클래스에서 구현되어야 합니다[5]. 유형 매개변수 T는 비교할 수 있는 객체의 유형을 나타냅니다.

:

// file: Employee.java
public class Employee implements Comparable<Employee>{
    private String email;
    private String name;
    private int age;

    public Employee(String email, String name, int age){
        this.email = email;
        this.name = name;
        this.age = age;
    }

    // The Comparable interface has a method called compareTo(T obj). 
    // This method helps decide how to order objects, so they can be sorted in a list
    @Override
    public int compareTo(Employee emp){
        // compare age: 
        // return this.age - emp.age;
        // (this.age - emp.age) = negative value means this.age before emp.age; 
        // (this.age - emp.age) = positive means this.age after emp.age

        // compare email:
        return this.email.compareTo(emp.email);
    }

    @Override
    public String toString(){
        return "[email=" + this.email + ", name=" + this.name + ", age=" + this.age +"]";
    }
}
// file: Main.java
import java.util.Arrays;

public class Main {
    public static void main(String args[]){
        Employee[] empInfo = new Employee[3];
        empInfo[0] = new Employee("joseph@gmail.com", "Joseph", 27);
        empInfo[1] = new Employee("alicia@gmail.com", "Alicia", 30);
        empInfo[2] = new Employee("john@gmail.com", "John", 24);

        Arrays.sort(empInfo);
        System.out.println("After sorting:\n" + Arrays.toString(empInfo));
    }
}

출력:

After sorting:
[[email=alicia@gmail.com, name=Alicia, age=30], [email=john@gmail.com, name=John, age=24], [email=joseph@gmail.com, name=Joseph, age=27]]

6) 사용자 정의 Java 예외

정의: 사용자 정의 Java 예외는 개발자가 특정 오류 조건을 처리하기 위해 생성하는 사용자 정의 예외입니다[6].

:

public String[] split(String regex, int limit)
public class Main{

    public void getProductPrice(String products){
        double totalPrice = 0.0;
        StringBuilder priceDetails = new StringBuilder();

        String[] singleProduct = products.split("; ");

        for(int i = 0; i < singleProduct.length; i++){
            String[] productInfo = singleProduct[i].split(", ");
            totalPrice += Double.parseDouble(productInfo[2]);

            priceDetails.append(productInfo[2]);
            if(i < singleProduct.length - 1){
                priceDetails.append(" + ");
            }
        }

        System.out.println(priceDetails + " = " + totalPrice);
    }

    public static void main(String arg[]){
        Main obj = new Main();
        obj.getProductPrice("1, dragonfruit, 12.50; 2, guava, 23.45; 3, avocado, 395.67");
    }

}

출력:

12.50 + 23.45 + 395.67 = 431.62

7) 인터페이스

Java의 인터페이스를 통해 사용자는 각각 고유한 논리를 구현하는 다양한 클래스에서 동일한 메서드를 호출할 수 있습니다[7]. 아래 예에서는 CalculatePrice() 메서드가 Fruit 및 DiscountFruit와 같은 다양한 클래스에서 호출되며 각 클래스는 고유한 계산 논리를 적용합니다.

:

public String trim()
public class Main{
    public static void main(String args[]){
        String str = "   You can do it!   ";
        System.out.println(str);
        System.out.println(str.trim());
    }
}
   You can do it!   
You can do it!
public static boolean isDigit(char ch)

출력:

public class Main{

    // return true when the given parameter has a digit
    public boolean searchDigit(String str){
        for(int i = 0; i < str.length(); i++){
            // charAt() method returns the character at the specified index in a string
            if(Character.isDigit(str.charAt(i))){
                return true;
            }
        }
        return false;
    }

    // print digit index and value
    public void digitInfo(String str){
        for(int i = 0; i < str.length(); i++){
            if(Character.isDigit(str.charAt(i))){
                System.out.println("Digit: " + str.charAt(i) + " found at index " + i);
            }
        }
    }

    public static void main(String args[]){
        Main obj = new Main();
        String[] strList = {"RT7J", "1EOW", "WBJK"};

        for(String str : strList){
            if(obj.searchDigit(str)){
                obj.digitInfo(str);
            }else{
                System.out.println("No digit");
            }
        }

    }
}

참조

[1] JavaRush, Java의 분할 메서드: 문자열을 여러 부분으로 분할, 2023년 8월 8일

[2] W3Schools, Java String Trim() 메소드

[3] GeeksforGeeks, Java의 Character isDigit() 메소드(예제 포함), 2020년 5월 17일

[4] tutorialspoint, Java - 문자 isLetter() 메소드

[5] DigitalOcean, Java 예제의 비교 가능 및 비교기, 2022년 8월 4일

[6] Shiksha, Java의 사용자 정의 예외 이해, 2024년 4월 25일

[7] Scienttech Easy, Java에서 인터페이스 사용 예시, 2024년 7월 9일

위 내용은 자바 학습 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:중첩된 try 블록다음 기사:중첩된 try 블록