문자열

찜와와·2024년 1월 7일
0

algorithm

목록 보기
3/25
post-thumbnail

자바로 프로그램 작성하기

프로그램 실행단계는 다음과 같다.
Hello.java --(javac.exe:컴파일)--> Hello.class 생성 --(java.exe:실행)--> "hellow world" 출력

  • 모든 코드는 반드시 class 안에 존재한다.
  • 서로 관련된 코드들을 그룹으로 나누어 별도의 클래스를 구성하고 이 클래스들이 모여 하나의 java 어플리케이션을 이룬다.
class 클래스 이름{
}

메인 메소드의 선언부는 프로그램을 실행할때 java.exe에 의해 호출될 수 있도록 미리 약속된 부분으로 항상 똑같이 적어주어야 한다.

class 클래스이름{
	public static void main(String[] args){
    }
}

Java 어플리케이션은 main 메서드의 호출로 시작해서 main 메서드의 첫문장부터 마지막 문장까지 수행을 마치면 종료된다. 모든 클래스가 main 메서드를 가지고 있어야 하는 것은 아니지만 하나의 Java 어플리케이션에는 main 메서드를 포함한 클래스가 반드시 하나는 있어야 한다. main 메서드는 java 어플리케이션의 시작점이라 main 메서드 없이는 java 어플리케이션을 실행할 수 없다.

하나의 소스파일에 하나의 클래스만을 정의하는 것이 일반적이지만 하나의 소스파일에 둘 이상의 클래스를 정의하는 것도 가능하다. 이때 주의해야하는 점은 '소스파일의 이름은 public class의 이름과 동일해야 한다는 것이다.' 만약 소스파일 내에 public class가 없으면 소스 파일내의 어떤 클래스의 이름으로 해도 상관없다.

문자열?

  • 순서를 가진 문자들의 집합이다
  • "쌍따옴표" 를 이용하여 나타낼 수 있다
  • 글자, 단어, 문장, 문서 등 문자로 구성된 자료형이다.

문자열의 코드 구분

문자열이 아니라 각각 다음의 변수를 의미한다.
1) 정수
2) 실수
3) 문자
4) boolean

int var_integer = 10;
double var_real = 3.141592;
char var_character = 'A';
boolean var_bool = true;

문자열이라면

String string_empty = "";
String string_word = "Hello";

자주 발생할 수 있는 실수들

// compile error

  1. 문자열인데 "쌍따옴표"를 하지 않은 경우
String str = 'String';
  1. 문자인데 "쌍따옴표"를 한 경우
char var_char = "A";
  1. 여러 줄에 걸친 문자열인 경우
\n

을 사용함으로써 new line 한줄뛰기가 가능하다.

문자열의 특징

  • Java.lang 패키지로 제공되는 Java 문자열 클래스
  • 별도의 import 없이 사용할 수 있음
  • 문자열 작업에 유용한 메소드를 제공함
    아래 두가지 모두 가능하다.
String str_literal = "Hello";
String str_object = new String("Hello");
  • 한번 인스턴스가 생성되면 중간에 수정할 수 없다.
    배열인 경우 중간에 index 수정이 가능함
char[] char_arr = {'A', 'B', 'C'};
char_arr[2] = 'E';
System.out.println(char_arr);

출력값: ABE
문자열인 경우 중간 index로 접근하면 compile err 발생
대신 중간 문자로 접근하는 메소드가 있긴하다.

String str = "ABCDEF";
system.out.println(str.charAt(4));

출력값: E

메소드가 있긴해도 값변경은 불가능하다.

  • 만약 값을 변경하고 싶으면 새로운 String을 만들어 바꿀 순 있다.
    기존 문자열에 덮어씌운다.
String str = "ABCDEFG";
str = "ABCDEEF";
System.out.println(str);

출력값: ABCDEEF
문자열을 배열로 수정하여 원하는 값 수정한 이후 문자열 출력

String str = "ABCDFFG";
char[] temp_arr = str.toCharArray();
temp_arr[4] = 'E';
str = new String(temp_arr);
System.out.println(str);

출력값: ABCDEFG
substring() 메소드로 문자열과 문자를 이어줌으로써 출력

String str = "ABCDFFG";
str = str.substring(0,4) + 'E' + str.substring(5,7);
System.out.println(str);

출력값: ABCDEFG
StringBuilder() 메서드를 이용하여 출력

  • 서로 같은 두 문자열에 대해 주소값이 다를 수 있다.
    literal로 생성한 문자열인 경우
    기존의 constant literal stream이 있는지 확인하고 있으면 동일한 stream을 가리킴
String str_literal = "test";

힙으로 생성한 문자열인 경우
new로 새로 생성할때마다 새로운 객체를 가리킴

String str_object = new String("test");

  • 두 문자열의 값이 동일한지를 비교하려면 equals를 사용한다.
System.out.println(str_literal.equals(str_object));
  • 이외에도 여러가지 자주 사용하는 메서드를 확인할 수 있다.

문자열 포맷 방법

0개의 댓글