String Methods

 

1. int length()Returns the number of characters in the String.

"GeeksforGeeks".length();  // returns 13

 

2. Char charAt(int i)Returns the character at ith index.

"GeeksforGeeks".charAt(3); // returns  ‘k’

 

3. String substring (int i)Return the substring from the ith  index character to end.

"GeeksforGeeks".substring(3); // returns “ksforGeeks”

 

4. String substring (int i, int j)Returns the substring from i to j-1 index.

 "GeeksforGeeks".substring(2, 5); // returns “eks”

 

5. String concat( String str)Concatenates specified string to the end of this string. (문자열 연결)

 String s1 = ”Geeks”;
 String s2 = ”forGeeks”;
 String output = s1.concat(s2); // returns “GeeksforGeeks”

 

6. int indexOf (String s)Returns the index within the string of the first occurrence of the specified string.

 String s = ”Learn Share Learn”;
 int output = s.indexOf(“Share”); // returns 6

 

7. int indexOf (String s, int i): Returns the index within the string of the first occurrence of the specified string, starting at the specified index.

 String s = ”Learn Share Learn”;
 int output = s.indexOf("ea",3);// returns 13

 

8. Int lastIndexOf( String s): Returns the index within the string of the last occurrence of the specified string.

 String s = ”Learn Share Learn”;
 int output = s.lastIndexOf("a"); // returns 14

 

9. boolean equals( Object otherObj)Compares this string to the specified object.

 Boolean out = “Geeks”.equals(“Geeks”); // returns true
 Boolean out = “Geeks”.equals(“geeks”); // returns false

 

10. boolean  equalsIgnoreCase (String anotherString): Compares string to another string, ignoring case considerations.

 Boolean out= “Geeks”.equalsIgnoreCase(“Geeks”); // returns true
 Boolean out = “Geeks”.equalsIgnoreCase(“geeks”); // returns true

 

11.  int compareTo( String anotherString): Compares two string lexicographically.

 int out = s1.compareTo(s2);  // where s1 and s2 are
                             // strings to be compared

 This returns difference s1-s2. If :
 out < 0  // s1 comes before s2
 out = 0  // s1 and s2 are equal.
 out > 0   // s1 comes after s2.

 

11. int compareToIgnoreCase( String anotherString): Compares two string lexicographically, ignoring case considerations.

 int out = s1.compareToIgnoreCase(s2);  
// where s1 and s2 are 
// strings to be compared

 This returns difference s1-s2. If :
 out < 0  // s1 comes before s2
 out = 0   // s1 and s2 are equal.
 out > 0   // s1 comes after s2.

 Note- In this case, it will not consider case of a letter (it will ignore whether it is uppercase or lowercase).

 

 

12. String toLowerCase()Converts all the characters in the String to lower case.

String word1 = “HeLLo”;
String word3 = word1.toLowerCase(); // returns “hello"

 

13. String toUpperCase()Converts all the characters in the String to upper case.

String word1 = “HeLLo”;
String word2 = word1.toUpperCase(); // returns “HELLO”

 

14. String trim()Returns the copy of the String, by removing whitespaces at both ends. It does not affect whitespaces in the middle.

String word1 = “ Learn Share Learn “;
String word2 = word1.trim(); // returns “Learn Share Learn”

 

15. String replace (char oldChar, char newChar)Returns new string by replacing all occurrences of oldChar with newChar.

String s1 = “feeksforfeeks“;
String s2 = “feeksforfeeks”.replace(‘f’ ,’g’); // returns “geeksgorgeeks”

 

 

출처 : https://www.geeksforgeeks.org/string-class-in-java/?ref=gcse 

 

String class in Java - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

'Coding > Java' 카테고리의 다른 글

[15] JAVA 생성자 (Constructor)  (0) 2022.11.24
[14] JAVA Math 클래스 메소드  (0) 2022.11.23
[12] JAVA 예외처리  (0) 2022.11.23
[11] JAVA String, StringBuilder 클래스  (0) 2022.11.22
[10] JAVA - 필드(Field)  (0) 2022.11.22

예외 클래스

에러(error) : 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것

예외(exception) :

  • 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
  • 예외가 발생하면 프로그램이 곧바로 종료된다는 점에서 에러와 비슷
  • 그러나 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지된다는 점에서 에러와 차이가 있다.

예외 클래스 : 자바에서는 예외를 클래스로 관린한다. 모든 예외 클래스는 java.lang.Exception 클래스를 상속받는다.

 

< 예외의 두가지 종류 >

일반 예외 (exception) : 컴파일러 체크 예외. 자바 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. 만약 예외 처리 코드가 없다면 컴파일 오류가 발생함

실행 예외 (runtime exception) : 컴파일러 넌체크 예외. 실행 시 예측할 수 없이 갑자기 발생. 따라서 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않는다.

 

실행 예외

  • 오로지 개발자의 경험에 의해서 예외처리 코드를 작성해야 한다.
  • 프로그램에서 예외가 발생하면 예외 메시지가 콘솔뷰에 출력된다.
  • 콘솔뷰에서는 어떤 예외가 어떤 소스의 몇 번째 코드에서 발생했는지 알 수 있다.

NullPointerException : 객체 참조가 없는 상태

 예를 들어, String s = null; 인데 s.toString() 메소드를 호출하는 경우

ArrayIndexOutOfBoundsException : 배열에서 인덱스 범위를 초과할 경우 발생.

예를 들어, int[ ] arr = new int [3] 배열에 arr[3] 의 값을 넣으려고 하는 경우

NumberFormatException : 숫자로 변환될 수 없는 문자를 숫자로 변환하려 할 때 발생

  • String to int : Integer.parseInt(String s)
  • String to double : Double.parseDouble(String s)

예를 들어, String s = "a100"; 이라는 문자열을 숫자로 변환하려고 하는 경우

 

ClassCastException : 상위 클래스와 하위 클래스간 타입 변환시 발생하는 오류. 타입 변환 전에 변환이 가능한지 instanceof 연산자로 확인하는 것 이 좋다. 

 

Animal animal = new Dog();
Dog dog = (Dog) animal;
  • 위와 같은 경우 Animal 타입 변수에 대입된 객체가 Dog이므로 다시 Dog로 변환하는 것은 아무런 문제가 없다.
  • 그러나 다시 Cat 클래스로 타입변환을 한 경우 대입된 객체가 아닌 다른 클래스 타입으로 변환되었기 때문에 예외가 발생한다.

 

예외 처리 코드

예외 처리 : 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 것

 

try - catch - finally 블록 : 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다.

 

https://tutorial.eyehunts.com/java/try-catch-finally-java-blocks-exception-handling-examples/

  • try 블록에 예외 발생 가능 코드가 위치한다.
  • try 블록의 코드가 정상 실행 된다면 바로 finally  블록의 코드를 실행하고, 만약 예외가 발생한다면 바로 실행을 멈추고 catch 블록으로 이동하여 예외 처리 코드를 실행한다. 그리고 finally 블록의 코드를 실행한다.
  • finally블록은 생략 가능하다. 예외 발생 여부와 관계없이 항상 실행할 내용이 있을 경우에만 작성해주면 된다.

 

다중 catch 블록 

  • try 블록 안에 다양한 예외가 발생할 수 있다.
  • try 블록에서 특정 타입의 예외가 발생하면 catch 블록에서도 그 타입에 맞는 예외 처리가 실행된다.
  • try 블록에서 예외가 발생했을 때, 예외를 처리해 줄 catch블록은 위에서부터 차례대로 검색된다.
  • 따라서, catch 블록이 여러 개라 할지라도 해당되는 단 하나의 catch 블록만 실행된다.
  • 주의할 점은, 상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 한다는 것 (아래 사진 참조)

  • 위의 왼쪽 사진에서 ArrayIndexOutBoundsException은 Exception을 상속받기 때문에 첫 번째 catch 블록만 선택되어 실행이 된다. 따라서 두 번째 catch 블록은 어떤 경우라도 실행되지 않는 문제가 있다. 올바르게 사용한 예시는 오른쪽이라고 할 수 있다.

③ 예외 떠넘기기 - throws

  • 메소드 내부에서 예외 처리를 할 때 try - catch 블록으로 처리하는 것이 기본이지만,
  • 경우에 따라 메소드를 호출한 곳으로 예외를 떠넘길 수도 있다.
  • throws 키워드는 메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할을 한다.
  • 그러면 메소드를 호출하는 곳에서 try-catch 블록을 사용해 예외 처리를 해줘야 한다.
  • main()메소드에선 throws Exception을 사용하는 것이 바람직하지 않기 때문에, try-catch 예외를 최종 처리해주는 것이 좋다.

예외 떠넘기기 참고 블로그 :

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=heartflow89&logNo=220985722731 

 

[JAVA/자바] 예외 던지기/떠넘기기 - throws

 이번 포스팅은 예외를 처리하는 두 번째 방법에 대해서 알아보려고 한다. 이전에 알아본 예외가 발생...

blog.naver.com

 

String과 StringBuilder의 구분

 

String 클래스와 StringBuilder는 용도가 다르다.

 

String StringBuilder
문자를 이용해서 활용을 해야 할 때 사용하는 클래스.
문자를 변경, 검색, 반복, 대소문자 변환, 비교, 분리
"문자 특성"을 이용하기 위해 사용하는 클래스
문자열을 배열처럼 관리
추가, 삭제, 삽입, 뒤집기 등을 용이하게 하기 위해 사용
"배열 index"를 이용하여 문자를 관리하는 클래스
문자 특성을 이용한 작업을 처리할 때 변경이 빈번한 문자들을 배열처럼 관리하고 싶을 때
 String 클래스는 함수를 사용하면 반환 값을 사용해야 하므로 대입 연산자를 이용해야 한다.
ex) str = str.trim();
StringBuilder는 내부적으로 추가, 삭제, 삽입, 변경을 처리하기 때문에 반환 값을 사용할 필요가 없다.
ex) sb.append(var);

 

 

자주 사용하는 String과 StringBuilder의 공통 함수

 

  • length() : 문자열의 총길이를 반환한다.
  • charAt(index) : index 위치에 해당하는 문자를 반환한다.
  • indexOf(String) : 문자열이 위치하는 index를 반환한다. (String에서는 char도 가능하다.)
  • substring(from, to) : from부터 to까지 해당되는 문자열을 반환한다. (to index는 포함하지 않는다.)

 

자주 사용하는 String 클래스 함수

 

비교

  • compareTo(String) : String과 비교 후 String보다 문자가 작다면 1, 크다면 -1, 같다면 0을 반환한다.
  • compareToIgnoreCase(String) : 대소문자 차이를 무시하고 비교한다.
  • equals(Object) : Object와 비교 후 같다면 true, 다르면 false를 반환한다. String 클래스는 문자열을 비교한다.

 

검색

 

  • contains(CharSequence) : CharSequence가 포함되어있는지 확인한 후 포함하면 true, 포함하지 않으면 false를 반환한다.
  • startWith(String) : String으로 시작하면 true, 아니면 false를 반환한다.
  • endWith(String) : String으로 끝나면 true, 아니면 false를 반환한다.

 

 

변환

 

  • concat(String) : String과 합친 후 합친 문자열을 반환한다.
  • repeat(int count) : count만큼 반복 후 반환한다.
  • replace(char or CharSequence, char or CharSequence) : char, CahrSequence 둘 다 가능하며 앞 인자를 뒷 인자로 변경한다.
  • toLowerCase() : 소문자로 변환 후 반환한다.
  • toUpperCase() : 대문자로 변환 후 반환한다.
  • trim() : 문자열의 양쪽 공백을 제거 후 반환한다.
  • toCharArray() : char 배열 자료형으로 반환한다.

 

 

분리, 결합

  • split(String regex) : regex를 기준으로 자른 후 String []로 반환한다.
  • String.join("str" ,String[]) : str을 사이에 넣어주며 String [] 배열을 합친다.

 

* CharSequence => String, StringBuilder, StringBuffer 등

 

자주 사용하는 StringBuilder 클래스 함수

 

추가

  • append() : StringBuilder에 추가한다.

 

삭제

  • delete(from, to) : from부터 to까지 해당되는 index들을 제거한다. (to는 제외)
  • deleteCharAt(index) : index에 해당하는 문자 하나를 제거한다.

 

삽입

  • insert(index, Object) : index위치에 Object를 추가한다.

 

변경

  • replace(from, to, String) : from, to 부분을 String으로 변경한다. (to는 제외)
  • setLength(len) : len만큼 길이를 변경한다. (len을 0으로 설정하면 내부가 비워지는 효과를 볼 수 있다.)
  • setChar(index, char) : 해당 index를 char로 변경한다.
  • reverse() : 문자열을 뒤집는다.

 

주의: StringBuilder는 equals()가 주소 비교를 한다.  toString()을 해야 한다.

 

 

 

 

출처 : https://komas.tistory.com/

'Coding > Java' 카테고리의 다른 글

[13] JAVA String 클래스 메소드 정리  (0) 2022.11.23
[12] JAVA 예외처리  (0) 2022.11.23
[10] JAVA - 필드(Field)  (0) 2022.11.22
[09] Java 클래스 - 객체 지향 프로그래밍  (2) 2022.11.22
[08] Java 열거 타입  (0) 2022.11.12

필드(Field) ?

객체 고유 데이터, 객체가 가져야 할 부품, 객체의 혀재 상태 데이터를 저장하는 곳.

 

① 필드 선언 

  • 필드 선언은 클래스 중괄호 {} 어디서든 존재할 수 있다.
  • 생성자 선언과 메소드 앞 뒤 어떤 곳에서도 필드 선언이 가능하지만, 생성자와 메소드 {} 중괄호 블록 내부에서는 선언될 수 없다.
  • 생성자와 메소드 중괄호 내부에 선언된 것은 모두 로컬 변수이다.
  • 필드에서 선언된 변수는 로컬변수와는 다르게 값을 할당하지 않아도 자동으로 초기값을 갖는다.

https://m.blog.naver.com/heartflow89/220956313502

 

② 필드 사용

  • 필드를 사용한다는 것 = 필드값을 읽고 변경하는 작업
  • 클래스 내부의 생성자와 메소드에서 바로 사용이 가능하지만 클래스 외부에서 사용할 경우에는 반드시 객체를 생성하고 참조변수를 통해 사용해야 한다.
  • 변수는 자신이 선언된 생성자 또는 메소드 블록 내부에서만 사용할 수 있는 반면 필드는 생성자와 모든 메소드에서 사용 가능하다는 차이점이 있다.

'Coding > Java' 카테고리의 다른 글

[12] JAVA 예외처리  (0) 2022.11.23
[11] JAVA String, StringBuilder 클래스  (0) 2022.11.22
[09] Java 클래스 - 객체 지향 프로그래밍  (2) 2022.11.22
[08] Java 열거 타입  (0) 2022.11.12
[07] Java 배열  (0) 2022.11.11

[오늘 공부한 부분]

 

1. Java 클래스 - 객체 지향 프로그래밍

 

 키워드 정리

  • 클래스 : 객체를 만들기 위한 설계도
  • 객체 : 클래스로부터 생성되면 'new 클래스()'로 생성
  • new 연산자 : 객체 생성 연산자. 생성자를 호출하고 객체 생성 번지를 리턴
  • 클래스 변수 : 클래스로 선언한 변수를 의미. 해당 클래스의 객체 번지가 저장된다.
  • 인스턴스 : 객에는 클래스의 인스턴스
  • 클래스 멤버 : 클래스에 선언되는 멤버는 필드, 생성자, 메소드가 있다.

객체의 상호작용

객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용 하면서 동작한다.

 

① 메소드 : 객체들 사이의 상호작용 수단

② 메소드 호출

int result = Calculator.add(10,20);
  • 객체에 도트(.)연산자를 붙이고 메소드 이름을 기술한다. 여기서 객체는 Calculator, 사용된 메소드는 add()이다.
  • 매개값은 메소드를 실행하기 위해 필요한 데이터이다. 여기선 10,20 이 매개값이다.
  • int result 부분이 리턴값이라고 할 수 있다.

③ 객체 간의 관계

  • 집합 관계 : 객체 하나는 부품이고 하나는 완성품에 해당
  • 사용 관계 : 객체 간의 상호작용. 객체는 다른 객체의 메소드를 호출하여 원하는 결과를 얻는다.
  • 상속 관계 : 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계

 

객체와 클래스

객체 지향 프로그래밍 개발의 세단계

  1. 클래스를 설계한다.
  2. 설계된 클래스를 가지고 사용할 객체를 생성한다.
  3. 생성된 객체를 이용한다.

 

클래스 선언

① 클래스 이름 짓기

  • 클래스 이름은 보통 영어로 작성한다. - 첫 글자는 대문자로, 나머지 문자는 소문자로 작성하되 단어가 혼합되어 있다면 각 단어의 첫글자는 대문자로 한다. ex ) Car, ChatServer, Web_Browser
  • 자바 식별자 작성 규칙 
    1. 하나 이상의 문자로 이루어 져야 한다.
    2. 첫 글자에는 숫자가 올 수 없다.
    3. $, _ 이외의 특수 문자는 사용할 수 없다.
    4. 자바 키워드는 사용할 수 없다. 

② 클래스이름.java 로 소스파일 생성

  • 소스파일 이름 역시 클래스 이름과 같아야 한다.
  • 소스파일 하나당 하나의 클래스를 선언한다.
  • 2개 이상 클래스가 서넌되 소스파일을 컴파일 하면 바이트 코드 파일(.class)는 선언한 클래스 개수만큼 생성된다.

 

객체 생성과 클래스 변수

클래스를 선언하고 컴파일 했다면 이제 객체를 생성할 차례이다.

 

① 객체 생성은 다음과 같이 new 연산자를 사용하면 된다.

클래스 변수;
변수 = new 클래스();

혹은

클래스 변수 = new 클래스();

② 클래스의 두 가지 용도

  • 라이브러리 클래스 ; 다른 클래스에서 이용할 목적으로 설계
  • 실행 클래스 : 프로그램의 실행 진입점인 main() 메소드를 제공하는 역할
  • 라이브러리인 동시에 실행 클래스로 만들 수도 있지만 대부분의 프로그램은 분리가 되어있다.

 

클래스의 구성 멤버

① 필드(Field) : 객체의 데이터가 저장되는 곳

② 생성자(Constructor) : 객체 생성 시 초기화 역할 담당

③ 메소드 (Method) : 객체의 동작에 해당하는 실행 블록

 

https://www.javaguides.net/2018/11/what-is-class-in-java-with-programming-examples.html

 

 

 

 

 

 

'Coding > Java' 카테고리의 다른 글

[11] JAVA String, StringBuilder 클래스  (0) 2022.11.22
[10] JAVA - 필드(Field)  (0) 2022.11.22
[08] Java 열거 타입  (0) 2022.11.12
[07] Java 배열  (0) 2022.11.11
[06] Java 참조 타입  (0) 2022.11.11

+ Recent posts