문법/기본 문법

자바 기본 문법, 배열

코딩 화이팅 2023. 1. 17. 00:40

대소문자 변환

public class swea2047 {
	public static void main(String[] args) {
		String sentense="The_headline_is_the_text_indicating_the_nature_of_the_article_below_it.";
		System.out.println(sentense.toUpperCase());
		//toUpperCase() -> 소문자를 대문자로
		//toLowerCase() -> 대문자를 소문자로
	}
}

배열

  • 같은 종류의 데이터를 저장하기 위한 자료구조
  • 크기가 고정되어 있음.(한번 생성된 배열은 크기를 바꿀 수 없음)
  • 배열을 객체로 취급(참조형)
  • index 번호는 0부터 시작
  • 배열이름 .length를 통해 배열의 길이 조회 가능(.->멤버 연산자)
  • 배열의 길이는 임의로 변경 불가
  • 길이 변경 필요시 새로운 배열을 생성 후 내용을 옮긴다.

배열의 선언

public class test01 {
	public static void main(String[] args) {
		
		int[] arr;// 배열 변수(주소값을 담을 수 있는)의 선언
		int[] arr3 = new int[5];// int형의 경우 0으로 초기화, 나눠 쓸 수 있음
		int[] arr4 = new int[] { 1, 2, 3, 4, 5 }; // 원하는 값으로 초기화할 때, 나눠 쓸 수 있음
		int[] arr5 = { 1, 3, 5, 7 };// 반드시 한 줄에 써줘야됨.
		int[] arr6;
		arr6=new int[7];
		// arr6= {1,2,3,4,5};//나눠 쓰면 에러
		arr6=new int[] {1,2,3,4,5};
		
	}
}
  • 타입[]변수-> int[] arr; (권장!)
  • 타입 변수[]-> int arr [];
  • 자료형[] 배열이름=new 자료형[길이]; -> int[] arr=new int[5];
  • 자료형[] 배열이름=new 자료형[] {값1,값2,값3};
  • 자료형[] 배열이름={값1, 값2, 값3};
public class test02_여러자료형의배열 {
	public static void main(String[] args) {
		boolean[] barr=new boolean[5];
		char[] carr=new char[5];
		float[] farr=new float[5];
		double[] darr=new double[5];
		String[] sarr=new String[5];
		
		System.out.println(barr[0]);//false
		System.out.println(carr[0]);//공백문자->\u0000
		System.out.println(farr[0]);//0.0
		System.out.println(darr[0]);//0.0
		System.out.println(sarr[0]);//null
	}
}
//
false
보이지 않지만 '\u0000'라는 공백문자가 있다.
0.0
0.0
null

배열과 반복문

import java.util.Arrays;
import java.util.Scanner;

public class test03_배열과반복문 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int[] scores=new int[5];
		for (int i = 0; i < 5; i++) {
			scores[i]=sc.nextInt();
		}
		
		//전통적 for문
//		for (int i = 0; i < 5; i++) {
//			System.out.println(i+"번째 점수는 :"+scores[i]);
//		}
		
		//for-each문
//		for (int num:scores) {
//			System.out.println("점수는 :"+num);
//		}
		
		//Arrays.toString을 이용한 배열 출력
//		System.out.println(Arrays.toString(scores));
		
		//평균
		int sum=0;
		for(int num:scores) {
			sum=sum+num;//sum+=num;
		}
		System.out.println(sum/5);
		
	}
}

배열의 복사

import java.util.Arrays;

public class 배열의복사 {
	public static void main(String[] args) {
		int[] scores=new int[] {29, 45, 67, 84, 92};//scores[0]~scores[4]
		
		int[] newScores=new int[10];
		for (int i = 0; i < 5; i++) {
			newScores[i]=scores[i];
		}
		System.out.println(Arrays.toString(newScores));
		
		int[] newScores2=Arrays.copyOf(scores, 10);
		System.out.println(Arrays.toString(newScores2));

		
	}
}
//
[29, 45, 67, 84, 92, 0, 0, 0, 0, 0]
[29, 45, 67, 84, 92, 0, 0, 0, 0, 0]

다차원 배열

  • 2차원 이상의 배열을 의미
  • 배열 요소로 또 다른 배열을 가지는 배열
  • 2차원 배열은 배열 요소로 1차원 배열의 참조를 가지는 배열
  • 3차원 배열은 배열 요소로 2차원 배열의 참조를 가지는 배열

2차원 배열 선언

	package 연습;

import java.util.Arrays;
import java.util.Scanner;

public class 연습 {
			public static void main(String[] args) {
				int[][] arr = new int[3][4];
//				int[] arr2[] = new int[3][4];
				
				int[][] raggedArr = new int[3][];//행만 선언하고 줄은 정해주지 않음
				raggedArr[0] = new int[4];//0행은 4줄
				raggedArr[1] = new int[3];//1행은 3줄
				raggedArr[2] = new int[5];//2행은 5줄
				
				// arr.length : 3
				// arr[0].length : 4
				// arr.length * arr[0].length
				
				// new int[행][열]
				// 행: 2차원 배열의 크기 = 길이
				// 열: 1차원 배열의 크기 = 길이
				// arr[r][c] : r행 c열의 원소, (r번째 1차원 배열의 c번째)
				for(int r=0; r<3; r++) {
					for(int c=0; c<4; c++) {
						System.out.printf("%4d", arr[r][c]);
					}
					System.out.println();
				}
			}
	}
  • int[][] Arr
  • int[][] Arr=new 배열유형 [1차원 배열개수][1차원 배열의 크기]; 
  • int[3][4] scores={{90,80,85,100},
                              {100,80,75,60},
                              {50,90,100,100}};
	package 연습;

import java.util.Arrays;
import java.util.Scanner;

public class 연습 {
			public static void main(String[] args) {

				int[][] arr = new int[4][4];
				int cnt = 1;
				for(int r=0; r<4; r++) {
					for(int c=0; c<4; c++) {
						arr[r][c] = cnt++;
					}
				}				
				
				for(int r=0; r<4; r++) {
					for(int c=0; c<4; c++) {
						System.out.printf("%4d", arr[r][c]);
					}
					System.out.println();
				}
			}
	}
//
   1   2   3   4
   5   6   7   8
   9  10  11  12
  13  14  15  16
  ==========================================================================
  int[][] arr = new int[4][4];
				int cnt = 1;
				for(int r=3; r>=0; r--) {
					for(int c=0; c<4; c++) {
						arr[r][c] = cnt++;
					}
				}				
				
				for(int r=0; r<4; r++) {
					for(int c=0; c<4; c++) {
						System.out.printf("%4d", arr[r][c]);
					}
					System.out.println();
				}
               //
   13  14  15  16
   9  10  11  12
   5   6   7   8
   1   2   3   4
     ==========================================================================
   int[][] arr = new int[4][4];
				int cnt = 1;
				for(int r=3; r>=0; r--) {
					for(int c=3; c>=0; c--) {
						arr[r][c] = cnt++;
					}
				}				
				
				for(int r=0; r<4; r++) {
					for(int c=0; c<4; c++) {
						System.out.printf("%4d", arr[r][c]);
					}
					System.out.println();
				}
                //
  16  15  14  13
  12  11  10   9
   8   7   6   5
   4   3   2   1
     ==========================================================================
   int[][] arr = new int[4][4];
				int cnt = 1;
				for(int r=3; r>=0; r--) {
					for(int c=r; c>=0; c--) {
						arr[r][c] = cnt++;
					}
				}				
				
				for(int r=0; r<4; r++) {
					for(int c=0; c<4; c++) {
						System.out.printf("%4d", arr[r][c]);
					}
					System.out.println();
				}
                //
   10   0   0   0
   9   8   0   0
   7   6   5   0
   4   3   2   1

최대 최소값 구하기

public class 최대최소값구하기 {
	public static void main(String[] args) {
		int[] intArray= {3, 27, 13, 8, 235, 7, 22, 9, 435, 31, 54};
		
		int min=Integer.MAX_VALUE;//int값중에 가장 큰 값->2147483647
		int max=Integer.MIN_VALUE;//int값중에 가장 작은 값->-2147483648
		
		for(int num:intArray) {
			min=Math.min(min, num);
			max=Math.max(max, num);
		}
		System.out.printf("min=%d, max=%d", min, max);
				
	}
}

빈도수 구하기

	package 연습;

import java.util.Arrays;
import java.util.Scanner;

public class 연습 {
			public static void main(String[] args) {

				// 0부터 9까지 숫자
				int[] arr= {0, 0,2, 1,0,3,6,2,5,7,8,5,2,5,3, 20};
				// 카운팅 배열
				int[] count= new int[21]; // 0부터 9까지의 인덱스가 필요하므로 크기가 10인
				// count[num] : num의 빈도수
				// count[index] : index가 num인 숫자의 빈도수
				System.out.println(Arrays.toString(count));
				
				for (int i=0; i<arr.length; i++) {
					count[arr[i]]++;
				}
				
				System.out.println(Arrays.toString(count));
			
			}
	}
//
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[3, 1, 3, 2, 0, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]