String

문자열의 비교 (equals, compareTo)

==와 !=로 비교할 수도 있지만,
이것은 데이터 주소를 비교하여 동일한 객체인지 검사 하는 것이기 때문에 문자열을 비교할 때에는 equals메소드나 compareTo 메소드를 사용한다.

public class StringEx {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String a = "Hello";
		String b = "Java";
		String c = "Hello"; // a를 참조시켜버림 
        	//(똑같은 문자가 있어서 만들지않고)
		String d = new String("Hello"); // new를 썼기 땜에 a와는 다름
		String e = new String("Java");
		String f = new String("Java");
		
		System.out.println(a==c); // true
		System.out.println(a==d); //false
		System.out.println(a.equals(d)); //true
		
		System.out.println("a".equals("b")); //false
		System.out.println("a".equals("a")); //true
		System.out.println("ac".compareTo("aa")); //2 
        	//c가 a보다 뒤에있음
		System.out.println("a".compareTo("b")); //-1
		System.out.println("a".compareTo("a")); //0
	}

}

equals메소드는 위의 코드처럼 사용하며, 문자열의 내용을 비교할 때에 사용한다.
이제 compareTo 사용 예제를 보겠다.

public class CompareToEx {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String  a= "java"; // v가 s보다 뒤에있음
		String b = "jasa";
		int res = a.compareTo(b); //a를 기준으로 b를 비교함
		if(res == 0)
			System.out.println("the same");
		else if(res<0)
			System.out.println(a+"<"+b);
		else
			System.out.println(a+">"+b);
	}

}

compareTo 는 변수이름.compareTo(변수명)으로 사용할 때에 맨앞 점 앞의 변수를 기준으로 비교한다. a가 b보다 알파벳 순에서 앞이기 때문에 a를 기준으로 b를 compareTo한다면 a가 b보다 한 칸 앞에 있기 때문에 -1이 나올 것이다. 위의 코드도 출력결과가 v가 s보다 앞ㅇ ㅔ있기 때문에 java<jasa가 출력된다.

String trim() 공백제거

public class StringEx2 {

	public static void main(String[] args) {
		String a = " abcd def ";
		String b = "\txty\t";
		String c = a.trim(); // 앞뒤 tab, enter, space 같은 공백 제거
		String d = b.trim();
		System.out.println(a);
		System.out.println(b);
		System.out.println("trim 시작 =-===========");
		System.out.println(c);
		System.out.println(d);

		System.out.println("Hello".charAt(0)); //H
		System.out.println("Hello".charAt(4)); // o
		System.out.println("Hello".indexOf('1', 3)); 
        	// 3위치부터 끝까지 '1' 탐색 
		// 잇으면 인덱스 리턴, 없으면 -1리턴

		System.out.println("Hello".toLowerCase());
		System.out.println("Hello".toUpperCase());
	}

}

charAt은 변수명.charAt(인덱스번호) 로 사용하는데 변수의 인덱스 번호 번째의 문자를 출력해준다.

배열 선언과 생성

데이터타입[] 참조변수;
로 배열을 선언해줌

int[] scores; 또는 int scores[];

int[] scores = { 11,22,33,44,55 };

new 연산자로 배열을 생성한다
데이터타입[] 참조변수 = new 타입 [크기];

scores = new int[5];

배열의 크기는 scores.length로 나타낼 수 있음!

import java.util.Scanner;

public class AvgEx {

	public static void main(String[] args) {
		// 키보드에서 정수를 입력받고 평균을 구하는 프로그램 작성하기
		Scanner scan = new Scanner(System.in);
		int[] numbers= new int [5];
		int sum=0;
		
		for(int i =0; i<numbers.length; i++) {
			int num = scan.nextInt();
			numbers[i]=num;
			sum+=numbers[i];
		}
		double avg=sum/5;
		System.out.println("배열 원소의 평균은 "+avg);
	}

}

배열 복사

-배열은 한번 생성되면 크기를 변경할 수 없음
-더 많은 저장공간이 필요하다면, 새로운 배열을 생성하고 이전 배열의 원소들을 복사해야함 -> System.arraycopy() 메소드 이용

for-each문

public class PersonEx3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person[] pa;
		pa = new Person[5]; //배열 객체  생성
		
		for(int i=0; i<pa.length; i++) {
			pa[i]=new Person(); //Person 객체 생성
			pa[i].age = 30+i;
		}
		
		for(int i=0; i<pa.length; i++) {
			System.out.print(pa[i].age+" ");
		}
		
		for(Person aPerson : pa) {
        	//데이터타입 변수 aPerson에 pa가 처음부터 끝까지 대입됨
			System.out.println(aPerson.age);
		}
	}

}

for문을 개선한 방식으로 특정 원소를 나타내기 위한 인덱스를 사용하지 않음
배열이나 나열의 각 원소를 순차적으로 접근하는데 유용함
배열의 크기를 모를 때 사용하면 편리함!

profile
기록이 쌓이면 지식이 된다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN