String클래스

new라는 연산자를 통해 객체를 생성해야하지만 생략가능

String은 문자열 개체이다.

아래의 n1은 "hello"문자열을 가지고 있는 도구이다.

n1을 통해 String클래스가 가지고있는 도구들을 사용할 수있다.

String n = new String("hello"); //String클래스 객체를만든것, 문자를 조작할수있는 기능들을갖고있다.
String n1 = "hello"; //객체화됨, 문자열을 담고있는도구 /

 

객체 n1을 통해 indexOf(),substring(),length,toUpperCase(),compareTo 등 메소드들을 사용 할 수있다.

문자열비교

		String n1 = "홍길동";
		String n2 = "홍길동";

		String n3 = new String("홍길동");
		String n4 = new String("홍길동"); //객체비교
		
		System.out.println(n1 == n2); //참 new연산자
		System.out.println(n1.equals(n2)); //참 *자주사용함
		System.out.println(n3 == n4); //거짓
		System.out.println(n3.equals(n4)); //참

n1과 n2는 new를 이용해서 객체를 생성하지 않으면 컴파일러가 해준다. 같은 문자열을 갖고있으면 같은곳에 위치한다.(같은객체참조)

n1==n2비교하면 객체비교,(주소값 비교)이며, 이라고 나온다.

 

n1.equals(n2)는 대상의 내용자체를 비교한다. 결과는 참이다.

 

n3 == n4 는 각각 다른 주소값을 갖으므로 거짓이 나온다.

n3.equals(n4)는 같은 내용을 갖고있으므로 참이 나온다.

equals참조

 

length()

String fileName = "photo.jpg";
String test = fileName.substring(3);//to.jpg
System.out.println(test.length());//6

fileName.substring(3) : fileName의 인덱스3부터 끝까지 문자열을 반환한다. 

test.length() : test의 문자열 길이를 반환한다.

 

 

indexOf() / substring()

		String fileName = "photo.jpg";
		System.out.println(fileName.length()); // 9
		System.out.println(fileName.indexOf(".")); //"."가 포함되었는지? 5
        System.out.println(fileName.indexOf(".",6)); 
        //-1 "."가 6번째부터 포함되어있는지?없다면-1
		System.out.println(fileName.substring(3)); //to.jpg
		System.out.println(fileName.substring(3,2)); // 에러 
		System.out.println(fileName.substring(3,5)); // 인덱스3~4까지 to 

fileName.length() : fileName의 문자열 갯수. 총 9개를 반환한다.

fileName.indexOf(".") : fileName의 문자열 중 "."위치를  찾아준다. "."의 위치 5가 반환된다.

fileName.indexOf(".",5) : fileName의 문자열 중 "."를 인덱스6부터 찾는다.없다면 -1반환한다.

fileName.substring(3,5) : fileName의 인덱스3부터 인덱스4까지 반환 

 

 

String.substring(start,end)

		String fileName = "photo.jpg";
		//위의 파일명에서 .이있는곳까지의 문자열을 출력(단.제외)
		int pos = fileName.indexOf(".");//위치파악
		System.out.println(fileName.substring(0,pos)); //photo
		System.out.println(fileName.substring(pos)); //.jpg

String.substring(start,end): start부터 end전까지 문자열출력

fileName.indexOf(".") : fileName의 특정문자열위치(숫자로 반환)를 갖고있는 객체생성.

fileName.substring(0,pos) : 0부터 pos전까지 문자열출력

fileName.substring(pos) : pos부터 끝까지 문자열출력

 

 

String.compareTo()

		int a = fileName.indexOf(".");//위치파악
		System.out.println(fileName.compareTo("aphoto.jpg")); // 15  결과가0 보다크다면 앞이크다
		System.out.println(fileName.compareTo("photo.jpg")); // 0 문자열 같을때 0을 반환
		System.out.println(fileName.compareTo("qphoto.jpg")); // -1
		System.out.println(fileName.compareTo("rphoto.jpg") > 0); // -2 0보다작으면 괄호

String.compareTo("A") : String의 문자열과 "A"문자열의 순서를 비교

첫번째글자가 같으면 다음 두번째글자를 비교한다. 

String의 문자열이 사전편찬순서상 뒤에있다면 0보다큰 양수 값이 반환된다.(a,b,c,d,...,z순서)

fileName > "aphoto.jpg" 보다 크다면 15가 반환(f가 a보다 순서가 뒤에있으므로 f가 크다)

fileName과 "aphoto.jpg"의 알파벳순서가 같다면 0이 반환

String.compare("A")결과 값이 0이라면 String값이 "A"값보다 더 크다.(조건문의 조건으로사용가능)

fileName > ("aphoto.jpg") 0 보다 크면 fileName이 크다. 음수이면 "aphoto.jpg"이크다.

 

 

문자열배열의 인덱스섞기

		String[] names = new String[] {"강호동","유재석","하하","김지호","김현준","김태희","박민정"};

		Random rand = new Random();
		
		for(int i=0; i<100;i++) {
			int idx1 = rand.nextInt(7); //0~6
			int idx2 = rand.nextInt(7); //0~6
//			System.out.printf("idx1 :%d, idx2:%d\n",idx1,idx2); //랜덤값을 확인한다.
						
			String temp; //데이터형이달라져도 똑같다.
			temp = names[idx1]; //랜덤값끼리 섞어준다
			names[idx1] = names[idx2];
			names[idx2] = temp;			
		}

배열 인덱스 섞기는 자료형이 달라져도 방식은 똑같다.

배열의 인덱스 숫자만큼 랜덤숫자를뽑는다.

임시변수만 String타입으로 선언해준다.

 

 

문자열비교 String.compareTo("A")

		for(int j=0;j<7-1;j++) 		
			for(int i=0;i<7-1-j;i++) 
				if(names[i].compareTo(names[i+1]) > 0){
					String temp;
					temp = names[i];
					names[i] = names[i+1];
					names[i+1] = temp;
					}			
				

String.compareTo()메소드를 통해 두 문자열을 비교할 수있다.

b.compareTo(a) > 0 이라면 b가 a보다 크다. 둘의 위치를 바꾸면 사전편찬순으로 정렬된다.

총7개의 인덱스를 6번반복하면 가장 마지막 문자열 1개가 나오고(작은for문) 이 반복을 6번반복하면 전체정렬이된다.

 

 

String클래스를 통해 만들어진 객체.하면 String클래스에 포함된 메소드들이 뜬다.

 

package ex3.array.test2;

import java.util.Random;

public class Program2 {

	public static void main(String[] args) {
		

		
//		String n = new String("hello"); //String클래스 객체를만든것, 문자를 조작할수있는 기능들을갖고있다.
//		String n1 = "hello"; //객체화됨, 문자열을 담고있는도구 /
		
		
		String n1 = "홍길동";
		String n2 = "홍길동";

		String n3 = new String("홍길동");
		String n4 = new String("홍길동"); //객채비교
		
		System.out.println(n1 == n2); //참 new연산자
		System.out.println(n1.equals(n2)); //참 *자주사용함
		System.out.println(n3 == n4); //거짓
		System.out.println(n3.equals(n4)); //참

		
//		
		String fileName = "photo.jpg";
		System.out.println(fileName.length()); // 9
		System.out.println(fileName.indexOf(".")); //"."가 포함되었는지? 5
		System.out.println(fileName.substring(3)); //to.jpg
//		System.out.println(fileName.substring(3,2)); // 에러 
		System.out.println(fileName.substring(3,5)); // 인덱스3~4까지 to 
//		
		//위의 파일명에서 .이있는곳까지의 문자열을 출력(단.제외)
		int a = fileName.indexOf(".");//위치파악
		System.out.println(fileName.substring(0,a)); //-1이상이면 0부터있다는걸로파악.
		System.out.println(fileName.substring(a,8)); //-1이상이면 0부터있다는걸로파악.

		System.out.println(fileName.compareTo("aphoto.jpg")); // 15 > 0 보다크다면 
		System.out.println(fileName.compareTo("photo.jpg")); // 문자열 같을때 0을 반환
		System.out.println(fileName.compareTo("qphoto.jpg")); // -1
		System.out.println(fileName.compareTo("rphoto.jpg") > 0); // -2 0보다작으면 괄호
		//fileName 이 크면 양수, fileName이 괄호()보다 작으면 음수
		
	
		//"912"(문자열은 1 2 라고읽는다) "9" 문자열의크기 앞글자의 비교
		
		
		String[] names = new String[] {"강호동","유재석","하하","김지호","김현준","김태희","박민정"};

		Random rand = new Random();
		
		for(int i=0; i<100;i++) {
			int idx1 = rand.nextInt(7); //0~6
			int idx2 = rand.nextInt(7); //0~6
//			System.out.printf("idx1 :%d, idx2:%d\n",idx1,idx2); //랜덤값을 확인한다.
						
			String temp; //데이터형이달라져도 똑같다.
			temp = names[idx1]; //랜덤값끼리 섞어준다
			names[idx1] = names[idx2];
			names[idx2] = temp;			
		}
		
		for(int i=0;i<7;i++) {
			System.out.printf("\"%s\"",names[i]);
			if(i<7-1)
				System.out.print(",");		
		}		
		//정렬

						
		for(int j=0;j<7-1;j++) 		
			for(int i=0;i<7-1-j;i++) 
				if(names[i].compareTo(names[i+1]) > 0){
					String temp;
					temp = names[i];
					names[i] = names[i+1];
					names[i+1] = temp;
					}			
			
	}
}


package ex3.array.test2;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;

public class Program3 {

	public static void main(String[] args) throws IOException {
		
		FileInputStream fis = new FileInputStream("res/names.txt");
		Scanner fscan = new Scanner(fis);

		String line = fscan.nextLine();
		
		String[] names = line.split(",");//쉼표기반으로 잘라줌
		
//		System.out.println(names[1].trim());	//문자열앞뒤빈공백없애줌
		
		String names1 = names[1].trim();
		
		System.out.println(names[1].trim());		
		
				
		fscan.close();
		fis.close();

	}
}

+ Recent posts