본문 바로가기

Study/Java

[java] String, StringBuffer 실습

String 클래스 실습

public static void main(String[] args) {
  String str = "자바 커피";
  int len = str.length();
  
  for(int i=0; i<len; i++)
  {
   char ch = str.charAt(i);

//문자 하나 지정 
   System.out.println(ch);
  }
 } 
public static void main(String[] args) {
  String str1 = new String("Java");
  String str2 = new String("java");
  
  if(str1.equalsIgnoreCase(str2)) {

//대소문자 무시하고 비교, 대소문자 달라도 같은 것으로 취급
   System.out.println("일치합니다.");
  } else {
   System.out.println("불일치합니다.");
  }
 } 
public static void main(String[] args) {
  String str1 = new String("Java Study");
  String str2 = new String("Java");
  
  if(str1.startsWith(str2)) {

//str1이 str2로 시작하면 같은 것으로 취급.

//str1의 첫 부분이 str2를 포함하면 됨
   System.out.println("일치합니다.");
  } else {
   System.out.println("불일치합니다.");
  }
 } 

 

 

String str = "abcdefghijk";
System.out.println(str.substring(3));

System.out.println(str.substring(3, 7));

//인덱스 인자를 하나만 주면 그 인자부터 끝까지 출력

//인덱스 인자를 두개 주면 두번째 인자 전까지 출력

 

System.out.println(str.toUpperCase());

//대문자로 변환
System.out.println(str.toLowerCase());

//소문자로 변환

 

System.out.println(str.replaceAll(str, "zzz"));
//str에 저장되어 있는 모든 문자를 zzz로 변환시킨다.
System.out.println(str);
  
String str1 = "aaabbbccc";
System.out.println(str1.replace("b", "B"));
//특정 문자를 변환시켜준다.
System.out.println(str1);

 

String str2 = "   aaa bbb ccc ddd   ";
String str3 = str2.trim();

//공백있는 문자열을 공백없이 출력해준다.

 

 

StringBuffer 클래스 실습

public static void main(String[] args) {
  GregorianCalendar gc = new GregorianCalendar();
  final char[] KOR_WEEK = { '일', '월', '화', '수', '목', '금', '토' };
  
  for(int i =2009; i<=2019;i++)
  {
   gc.set(i, Calendar.FEBRUARY, 17);
   char c = KOR_WEEK[gc.get(Calendar.DAY_OF_WEEK)-1];
   System.out.println(i + " 년의 생일은 " +c+ " 요일 입니다.");
  }
   
  String now = gc.get(Calendar.YEAR) + "년" 
   + (gc.get(Calendar.MONTH)+1) + "월 "
   + (gc.get(Calendar.DATE)) + "일"
   + (gc.get(Calendar.HOUR)) + "시"
   + (gc.get(Calendar.MINUTE)) + "분"
   + (gc.get(Calendar.SECOND));
  System.out.println("현재 시각 : " + now + " 입니다.");
  
  gc.add(Calendar.DATE, 1000);
  String future = gc.get(Calendar.YEAR) + "년"
   + (gc.get(Calendar.MONTH)+1) + "월"
   + gc.get(Calendar.DATE) + "일";
  System.out.println("미래 시각 : " +future+ " 입니다.");
 }

 


 

과제1>문자열 "abcdefg"를 이용하여 실행결과와 같이 만들어보자.

결과>  abcdEFG
           AbCdEfG
           gfedcba

public class String_Exam {
 public static void main(String[] args) {
  String str1 = "abcdefg";
  String str2 = str1.substring(4 , 7);
  String str3 = str1.substring(0, 4);
  System.out.println(str3.concat(str2.toUpperCase()));
  String str4, str5;
  char str6[] = str1.toCharArray();
  for(int i = 0; i < str1.length(); i++)
  {
   if (i%2 == 0)
   {
    str4 = str1.substring(i, i+1).toUpperCase();
    System.out.print(str4);
   }
   else
   {
    str5 = str1.substring(i, i+1).toLowerCase();
       System.out.print(str5);
   }
  }
  System.out.println();
   for(int i=(str1.length()-1);i>=0;i--)
   {
      System.out.print(str6[i]);
   }
 } 
}

과제2>문자열를 이용하여 실행결과와 같이 만들어보자.

StringBuffer sb = new StringBuffer("abcdefg");

결과> AbCdEfG
          GfEdCbA
          GFEDCBA

public class String_Buffer {

 public static void main(String[] args) {
  StringBuffer sb = new StringBuffer("abcdefg");
  String str1, str2,str3;
  for(int i=0;i<7;i++)
  {
   if (i%2 == 0)
   {
    str1 = sb.substring(i, i+1).toUpperCase();
    System.out.print(str1);
    sb.append(str1);
   }
   else
   {
    str2 = sb.substring(i, i+1).toLowerCase();
       System.out.print(str2);
       sb.append(str2);
   }
  }
  System.out.println();
  sb.delete(0, 7);
  sb.reverse();
  System.out.println(sb); 
  
  str3 = sb.substring(0,7).toUpperCase();
  sb.append(str3);
  sb.delete(0, 7);
  System.out.println(sb); 
 }
}

과제3>StringBuffer 클래스를 이용하여 문자 스택을 구현해보자.

class CharStack{
  private StringBuffer stack;
  public CharStack(){
    stack = new StringBuffer();
  }
  public CharStack(int capacity){
    stack = new StringBuffer(capacity);
  }
  public void push(char c){ //append
    //내용
  }
  public int pop(){ //length -1 ->delete
   //내용
  }
  public char[] list(){
    //내용
  }
  public String toString(){
    //내용
  }
}

public class StringBufferExam{
  public static void main(String[] args){
    CharStack cs = new CharStack();
    cs.push('A'); cs.push('B'); cs.push('C'); cs.push('D');
    
    System.out.println((char)cs.pop());
    System.out.println((char)cs.pop());
    System.out.println((char)cs.pop());
    System.out.println((char)cs.pop());
  }
}

결과>  D
         C 
         B 
         A

class CharStack{
   private StringBuffer stack;
   public CharStack(){
     stack = new StringBuffer();
   }
   public CharStack(int capacity){
     stack = new StringBuffer(capacity);
   }
   public void push(char c){
     stack = stack.append(c);
   }
   public char pop() {

    //삭제 전 마지막 데이터를 리턴한다.
    char ch = stack.charAt(stack.length()-1);
    stack = stack.deleteCharAt(stack.length()-1);
    return ch;
   }
   public char[] list(){ //현재 담겨져 stack을 보여준다.
    char ch[] = stack.substring(0).toCharArray();
    return ch;
   }
   public String toString(){ //출력 부분
    return this.stack.toString();
   }
}
 public class StringBufferExam{
   public static void main(String[] args) {
     CharStack cs = new CharStack();
     cs.push('A'); cs.push('B'); cs.push('C'); cs.push('D');
     
     cs.list();
     
     System.out.println(cs.list());
     System.out.println((char)cs.pop());
     System.out.println((char)cs.pop());
     System.out.println((char)cs.pop());
     System.out.println((char)cs.pop());
   }
 }

과제4> 특정 월의 달력 출력

public class Calendar_Test {

 public static void main(String[] args) {
  GregorianCalendar gc = new GregorianCalendar();
  //특정 년, 월 입력
  int year = 2009;
  int month = 7;
  
  //시작하는 날 앞에 공백을 주기 위해서
  gc.set(year, month-1, 1);
  int w = gc.get(Calendar.DAY_OF_WEEK);
  System.out.println(" <"+year+"년 "+month+"월>");
  System.out.println(" 일 월 화 수 목 금 토");
  for(int i=1;i<w;i++)
  {
   System.out.print("    ");
  }
  //지정하는 달의 날들의 최대치까지
  for(int i=1;i<=gc.getActualMaximum(Calendar.DATE);i++) {
   //공백설정
   if (i < 10)
    System.out.print(" "+i+" ");
   else
    System.out.print(" "+i+"");
   //7일씩 구문 나누기
   if ((i-8+w)%7==0)
    System.out.println();
  }
  System.out.println("\n");
 }
}

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

[java] 클래스와 자료구조 실습  (0) 2019.05.15
[java] 클래스와 자료구조  (0) 2019.05.15
[java] 참조값, instead of, 클래스  (0) 2019.05.15
[java] 예외처리, 정적필드  (0) 2019.05.15
[java] 상속, 인터페이스 실습  (0) 2019.05.15