JAVA 기초

JAVA 7-1

Vanillwa 2023. 8. 22. 12:06

String

package ex1_api;

public class Ex1_String {
	public static void main(String[] args) {
		//자바로 만들어진 모든 프로그램은 클래스로 이루어져있다
		//문자열을 저장하기 위한 String또한 저장되어있는 클래스
		
		//String 클래스는 두 가지 특징이 있다
		//1, 객체 생성방법이 두 가지(암시적, 명시적)
		//2, 한번 생성된 문자열의 내용은 불변
		
		String s1 = "abc"; //암시적 객체 생성
		String s2 = "abc"; //앞에 같은 문자열로 생성된 암시적 객체가 있다면 주소를 재사용한다
		String s3 = new String("abc"); //명시적 객체 생성
		String s4 = new String("abc"); 
		
		//== 연산자는 기본자료형을 비교할 때 값을 비교하지만 객체끼리 비교할 시 주소가 같은지 비교
		if(s1==s2)
			System.out.println("주소 같음");
		else
			System.out.println("주소 다름");

		if(s1==s3)
			System.out.println("주소 같음");
		else
			System.out.println("주소 다름");
		
		if(s1.equals(s3)) //주소가 아닌 값을 비교
			System.out.println("값이 같음");
		else
			System.out.println("같이 다름");
		
		//불변의 법칙
		String greet = "안녕";
		greet += "하세요"; //greet는 "안녕"주소를 버리고 새로운 주소를 할당받음
		System.out.println(greet);
	}
}

 

StringBuilder

package ex1_api;

public class Ex2_StringBuilder {
	public static void main(String[] args) {
		//String 객체는 문자열 연산이 많은 경우 메모리를 많이 잡아먹음
		//사용이 간단하고 내부 데이터를 자유롭게 공유 가능
		
		//StringBuffer, StringBuilder
		//문자열 연산으로 기존 객체 공간이 부족하게 될 경우 버퍼 크기를 늘리며 유연하게 동작
		
		//멀티 쓰레드 환경이면 동기화 보장을 위해 StringBuffer
		//싱글 쓰레드 환경이면 StringBuilder <- 문자열 연산이 많은 경우 유리
		
		StringBuilder stringBuilder = new StringBuilder("안녕"); //객체 생성, 초기화 가능
		
		stringBuilder.append("하세요"); //문자열을 뒤에 추가
		System.out.println(stringBuilder);
		
		stringBuilder.reverse(); //문자열 뒤집기
		System.out.println(stringBuilder);
		
		stringBuilder.insert(2, "홍길동");
		System.out.println(stringBuilder);
		
		stringBuilder.toString();
		System.out.println(stringBuilder);
	}
}

 

String Method

package ex1_api;

public class Ex3_StringMethod {
	public static void main(String[] args) {
		//Method란 어떤 작업을 수행하기 위한 명령문의 집합
		//반복적으로 사용되는 코드를 줄이기 위해서 사용하며 필요할 때 호출하여 사용
		
		String str = "Kim Mal Ddong";
		
		//문자열의 길이
		System.out.println("문자열 str 길이 : "+str.length());
		
		//글자의 위치
		System.out.println("문자 d의 위치 : "+str.indexOf('d'));
		
		//인덱스 번호로 글자 찾기
		System.out.println("추출한 문자 : "+str.charAt(4));
		
		//문자열 잘라내기
		System.out.println("0번부터 4번까지 잘라내기 : "+str.substring(0,5));
		
		//문자열 분리 저장
		String arr[] = str.split(" ");
		for(int i=0;i<arr.length;i++)
			System.out.println(arr[i]);
		
		//숫자 형태의 문자열을 정수형으로 바꾸기
		String number = "55";
		int num = Integer.parseInt(number);
		System.out.println(num+1);
		
		//숫자를 문자열로 바꾸기
		int n = 1;
		String s1 = Integer.toString(n);
		System.out.println(s1+1);
	}
}

 

예제1

package ex1_api;

import java.util.Scanner;

public class Ex4_work {
	public static void main(String[] args) {
		//키보드에서 알파벳을 무작위로 입력 받고 소문자 a가 몇개 있는지 판별
		
		Scanner sc = new Scanner(System.in);
		System.out.printf("문자열을 입력해주세요 : ");
		String str = sc.nextLine();
		int count=0;
		
		for(int i=0;i<str.length();i++){
			if(str.charAt(i)=='a')
				count++;
		}
		
		System.out.printf("a의 개수 : %d\n",count);
		
		sc.close();
	}
}

 

예제2

package ex1_api;

import java.util.Scanner;

public class Ex5_work {
	public static void main(String[] args) {
		//회문 구하기 / 회문 : 앞으로 또는 뒤로 읽어도 똑같이 읽히는 문장
		//키보드에서 세글자 이상의 문장을 입력받은 뒤 해당 문장이 회문인지 회문이 아닌지 판단
		
		Scanner sc = new Scanner(System.in);
		System.out.printf("문자열을 입력해주세요 : ");
		String str = sc.next();
		
		String rev ="";
		
		for(int i = str.length()-1;i>=0;i--) {
			rev+=str.charAt(i);
		}
		if(str.equals(rev))
			System.out.println("회문입니다.");
		else
			System.out.println("회문이 아닙니다.");
	}
}

'JAVA 기초' 카테고리의 다른 글

JAVA 8  (0) 2023.08.23
JAVA 7-2  (0) 2023.08.22
JAVA 6-2  (0) 2023.08.21
JAVA 6-1  (0) 2023.08.21
JAVA 5-3  (0) 2023.08.18