코딩이란 무엇일까

Java/자바[7일차]-배열,문자열 거꾸로 출력 본문

국비지원수업

Java/자바[7일차]-배열,문자열 거꾸로 출력

둥구는 지굴다 2022. 10. 29. 19:41

안녕하세요 오늘 배운 배열에 대해 정리해 보겠습니다.

배열이란?

배열은 같은 탕비의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해 놓은 자료구조를 말합니다.

배열의 특징

  • 배열은 같은 타입의 데이터만 저장이 가능합니다.
    • int배열은 int값만 저장하고, double배열은 double값만 저장 가능합니다.
  • 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없습니다.
    • 3개의 값을 저장하는 배열을 생성했다고 가정해봤을 때 프로그램을 실행 도중에 5개 혹은 2개로 값을 저장하는 배열로 수정할 수 없습니다.

배열의 선언

배열의 선언은 두 가지 형식으로 작성이 가능합니다.

형식 1

int []arr1= {67,45,92,12,45,66,92};

형식 2 (new연산자를 사용하여 배열 생성)

int[]arr2=new int[7];

형식 1처럼 배열은 만든 뒤 값을 넣어줄 수 있고 new연산자를 통해 배열의 크기를 지정해 줄 수도 있습니다.

배열의 주소

배열은 참조형 타입이기 때문에 데이터 자체를 저장하는 것이 아닌 데이터의 주소를 저장한 뒤 주소를 저장합니다.

배열 사용해보기

1. 배열 두 가지 방법으로 선언

public static void main(String[] args) {
		int []arr1= {67,45,92,12,45,66,92};
		int[]arr2=new int[7];
}

2. 배열의 데이터에 접근

배열은 인덱스 번호로 값을 출력할 수 있습니다.

public static void main(String[] args) {
		System.out.println("arr[3]=?"+arr1[3]);
		System.out.println("arr2[3]=?"+arr2[3]);
}

출력 결과

arr[3]=12
arr2[3]=0

3.for문을 사용하여 배열 출력해보기

public static void main(String[] args) {
for(int i=0;i<7;i++)
			System.out.println("arr1["+i+"]="+arr1[i]);
}

출력 결과

arr1[0]=67
arr1[1]=45
arr1[2]=92
arr1[3]=12
arr1[4]=45
arr1[5]=66
arr1[6]=92

배열의 주소 값 확인해보기

다양한 타입으로 배열을 만든 뒤 주소 값을 확인해 보겠습니다.

기본형 타입으로 만든 배열

public static void main(String[] args) {
		//1.배열
		byte[]b= new byte[5];	
		short[]s= new short[5];	
		long[]l= new long[5];	
		float[]f= new float[5];	
		double[]d= new double[5];	
		char[] c = new char[5];
}

클래스로 만든 배열

	public static void main(String[] args) {
		//2.클래스로 만든 객체
		Random r= new Random();
		Scanner sc= new Scanner(System.in);
		String str="";
		String[]st= new String[5]; //문자열 5개를 참조 값 저장하는 배열
}

주소 값 출력

		public static void main(String[] args) {
       		System.out.println(b);  //@뒤의 해시코드는 32bit -> 16진수 8자리
		System.out.println(s);
		System.out.println(l);
		System.out.println(f);
		System.out.println(d);
		System.out.println(c);// 문자열 형태로 출력이 됨
		System.out.println(r); //클래스 타입 변수는 @앞에 패키지명.클래스명
		System.out.println(sc);//Scanner 클래스는 다른 정보를 추가로 제공하는 문자열로 변형된 것.
		System.out.println(str);//문자열 형태로 출력
		System.out.println(st); //[L로 시작하면 클래스 타입의 배열
        }

출력 결과

기본형 타입으로 만든 배열의 주소 값

[B@47f37ef1
[S@5a01ccaa
[J@71c7db30
[F@19bb089b
[D@4563e9ab
□□□□□

클래스로 만든 배열의 주소 값

java.util.Random@11531931
java.util.Scanner[delimiters=\\p{javaWhitespace}+]//더 있지만 생략
[Ljava.lang.String;@5e025e70

배열 응용문제

사용자에게 문자열을 입력받아 반대로 출력하는 프로그램을 짜 보겠습니다.

public static void main(String[] args) {
		//예제 : 입력한 문자열을 거꾸로 만들기
		Scanner sc= new Scanner(System.in);
		System.out.print("문자를 입력하세요:");
		String test=sc.nextLine();
		String reserve="";
		
		char [] result=new char[10];
		for(int i=0;i<test.length();i++) {
			int index=test.length()-1-i; //인덱스 값을 반대로 넣어줌
			result[i]=test.charAt(index); //반대로 넣은 인덱스 값을 result[i]에 대입
		}

		System.out.println("reverse=>"+String.valueOf(result));
				//문자열과 +로 연결될 때는 직접 문자열로 변환해야합니다.
	}

출력 결과

위의 코드가 어려우시다면 i의 값과 입력한 값을 하나하나 대입해 보면서 생각하면 좋습니다.

이상으로 글 마치겠습니다. 

글 읽어주셔서 감사합니다.

Comments