문법/기본 문법
자바 기본 문법, 배열
코딩 화이팅
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]