#오류
duplicate 오류 : 클래스, 변수, 메소드 중 이름이 중복되어있는 에러이다.
ArrayIndexOutOfBoundsException오류 : 없는 위치를 작성했을 경우 나온다. 배열 생성 코드를 찾아가서 수정한다.'
Syntax으로 시작하는 오류는 문법적 에러이다.
변수 : 하나의 바구니 안에는 하나에 대한 데이터만 들어간다.
배열 : 자료형이 동일한 여러 개의 값을 연속적으로 저장할 수 있도록 하는 기억공간의 집합체(동종의 데이터를 저장할 수 있는 자료구조)
ㄴ 변수 집합체라고 생각하기
[1차원 배열 선언 및 생성 초기화 방법]
1. 선언하기 2. 메모리 생성하기 3. 초기화하기
일반적인 배열 선언과 초기화 방법:
자료형 변수명 ; <-변수 선언
변수명 = 값; <- 초기화
1. 선언하기 (구청신고)
자료형 []배열명 ; -> []는 지정 연산자이다.
2. 메모리 생성하기(건물짓기)
배열명 = new 자료형 [개수];
ㄴnew를 동적메모리할당키워드라고 한다.
ㄴ선언했던 동일한 자료형으로 입력해야함
3. 초기화하기(입주)
배열명[인덱스]=값;
-배열 인덱스 = 첨자라고 부르기도한다./ 0부터 시작한다.
/마지막 번호는 내가 지정한 수-1
- 초기화를 하지 않아도 기본값으로 초기화되어있다. (int :0 , double:0.0, boolean: false)
- 배열과 for문은 같이 사용함.
지정연산자 : 값을 넣을 수도 있지만 변수도 넣을 수 있음.
배열부터가 객체 개념이다. 배열은 레퍼런스자료형이다.
1. 선언+2. 메모리 생성, 3. 초기화
int arr [] = new int [개수];
arr [0] = 10;
1. 선언+ 2. 메모리 생성+3. 초기화
int arr [] = {1,2,3,4,5};
ㄴ 데이터가 코드에 고정된다. 데이터는 유동적이기 때문에 나중에 수정하려면 코드를 다시 작성해야 하므로 비추천.
테스트할 때 사용하면 좋다.
package day09;
public class Day09_01 {
public static void main(String[] args) {
//1. 선언 (구청 신고)
int arr[];
//2. 메모리 생성(건물짓기)
arr = new int[3];
//3. 초기화(입주)
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
System.out.println("arr[0]="+arr[0]);
System.out.println("arr[1]="+arr[1]);
System.out.println("arr[2]="+arr[2]);
System.out.println("arr의 길이="+arr.length);
//1(선언)+2(생성),3(초기화)
double arr2[] = new double[5];
arr2[0] =10.1;
arr2[1] =20.2;
arr2[2] =30.3;
System.out.println("arr2[0]="+arr2[0]);
System.out.println("arr2[1]="+arr2[1]);
// System.out.println("arr2[5]="+arr2[5]);//0부터 시작하기 때문에 5는 없다는 내용의 에러가 나온다
System.out.println("arr2[4]="+arr2[4]);//초기화를 하지 않아도 기본값들이 각 자료형의 0으로 초기화된다.
//boolean은 기본값 false로 초기화 된다.
System.out.println("arr2의 길이="+arr2.length);
/* 1+2+3(비추천) : 데이터가 고정된다. 데이터는 유동적이기 때문에 고정을 하면 코드를 다시 짜야한다.
* 이 방식은 테스트 할때 사용하면 좋다.
*/
//배열과 for문 같이 생각하기.*/
int arr3[] = {10,20,30,40,50,60,70,80,90,100};
for(int i= 0;i<arr3.length;i++) {
System.out.println(arr3[i]);
}
}
}
레퍼런스로서의 특징 1.
1. 배열이 변수이기 때문에 새로운 데이터 대입이 가능하다.
package day09;
public class Day09_02 {
public static void main(String[] args) {
int arr [] = {10,20,30,40,50,60,70};
for(int i = 0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
arr = new int[3];
// 000이 출력된다. 변수에 담긴 주소값이 새로운값이 저장된 곳으로 주소값으로 바뀌고 위에 있던 기존의 데이터들은 쓰레기가 된다.
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
/*레퍼런스로서의 특징
* 1. 배열이 변수이기 때문에 새로운 데이터 대입이 가능하다.
*/
}
}
}
레퍼런스로서의 특징 2.
2. 배열도 배열끼리의 스왑이 가능하다
(데이터의 개수에 상관없이 스왑 가능하며 속도가 차이가 없다. (빠른 속도로 스왑 가능).
package day09;
public class Day09_03 {
public static void main(String[] args) {
int x[] = {10,20,30,40,50};
for(int i = 0;i<x.length;i++) {
System.out.print(x[i]+" ");
}
System.out.println();
int y[] = {100,200,300};
for(int i=0;i<y.length;i++) {
System.out.print(y[i]+" ");
}
System.out.println();
System.out.println("----------------------------");
int temp[]=x;
x=y;
y=temp;
for(int i = 0;i<x.length;i++) {
System.out.print(x[i]+" ");
}
System.out.println();
for(int i=0;i<y.length;i++) {
System.out.print(y[i]+" ");
}
System.out.println();
/*레퍼런스로서의 특징
* 1.배열이 변수이기 때문에 새로운 데이터 대입이 가능하다.
* 2.배열도 배열끼리의 스왑이 가능하다.
*/
//데이터의 갯수에 상관없이 스왑 가능.
//속도가 차이가 없다. 빠른속도로 스왑 가능하다.
}
}
레퍼런스로서의 특징 3.
3. 주소를 복사하기 때문에 쌍둥이 변수가 생기는데 둘 다 한 데이터를 공유한다.
(한쪽에서 변경 시 쌍둥이 다른 변수에서도 변경된다.)
package day09;
public class Day09_04 {
public static void main(String[] args) {
int arr [] = {10,20,30,40,50};
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
int arr2[] = arr;
arr2[2] = 1004;
for(int i=0;i<arr2.length;i++) {
System.out.print(arr2[i]+" ");
}
System.out.println();
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
/*레퍼런스 특징
* 1.배열이 변수이기 때문에 새로운 데이터 대입이 가능하다.
* 2.배열도 배열끼리의 스왑이 가능하다.(요소의 스왑이 아닌 주소에 대한 스왑)
* 3.주소를 복사하기때문에 쌍둥이 변수가 생기는데 이때 한 데이터를 공유한다. 한쪽에서 변경시 쌍둥이 변수에서도 변경된다.
*/
}
}
레퍼런스 특징 : heap에 데이터가 저장되고 변수에는 그 데이터의 주소 값이 저장된다.
1. 새로운 데이터 대입이 가능하다.
2. 배열끼리도 스왑이 가능하다.(개수 상관없이 스왑 가능하며 속도 차이 없음)
ㄴ c언어에서는 배열의 길이가 같아야한다. 개수가 많을 수록 속도가 느리다.
3.주소값을 공유하게 되면 쌍둥이 변수가 생기고 하나의 원본데이터를 바라본다.
한쪽에서 변경 시 쌍둥이 다른 변수에서도 변경된다.
Day 09_05. 사용자로부터 6개의 점수를 입력받아 출력하는 프로그램 작성
package day09;
import java.io.*;
public class Day09_05 {
public static void main(String[] args)
throws IOException{
BufferedReader br =
new BufferedReader (new InputStreamReader(System.in));
/*
System.out.print("점수1 입력> ");
int num1 = Integer.parseInt(br.readLine());
System.out.print("점수2 입력> ");
int num2 = Integer.parseInt(br.readLine());
System.out.print("점수3 입력> ");
int num3 = Integer.parseInt(br.readLine());
System.out.print("점수4 입력> ");
int num4 = Integer.parseInt(br.readLine());
System.out.print("점수5 입력> ");
int num5 = Integer.parseInt(br.readLine());
System.out.print("점수6 입력> ");
int num6 = Integer.parseInt(br.readLine());
System.out.println();
int num [] = new int[6];
num[0] = num1;
num[1] = num2;
num[2] = num3;
num[3] = num4;
num[4] = num5;
num[5] = num6;
for(int i=0;i<num.length;i++) {
System.out.print(num[i]+" ");
}
*/
int num[] = new int[6];
for(int i=0;i<num.length;i++) {
System.out.print("점수"+(i+1)+"=");
num[i] = Integer.parseInt(br.readLine());
}
for(int i=0;i<num.length;i++) {
System.out.print("점수"+(i+1)+":"+num[i]+" ");
}
}
}
Day 09_06. 사용자로부터 4개의 점수를 입력받아 점수와 총점과 평균을 출력하는 프로그램 작성.
package day09;
import java.io.*;
public class Day09_06 {
public static void main(String[] args)
throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int num[] = new int[4];
int sum =0;
for(int i=0;i<num.length;i++) {
System.out.print("점수"+(i+1)+":");
num[i] = Integer.parseInt(br.readLine());
}
System.out.println();
for(int i=0;i<num.length;i++) {
sum +=num[i];
System.out.print("점수"+(i+1)+":"+num[i]+" ");
}
System.out.println();
int avg = sum/4;
System.out.println("총합:"+sum);
System.out.println("평균:"+avg);
}
}
Day 09_07. 사용자로부터 몇 개의 점수를 입력받을 건지 확인 후 그 개수만큼 점수를 입력받아 점수와 총점 평균 출력하기.
package day09;
import java.io.*;
public class Day09_08 {
public static void main(String[] args)
throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("몇개의 점수를 입력하시겠습니까?");
int num = Integer.parseInt(br.readLine());
int arr[]=new int[num];//값을 담고있는 변수로도 대입 가능
for(int i=0;i<num;i++){
System.out.print("점수"+(i+1)+":");
arr[i] = Integer.parseInt(br.readLine());
}
int sum = 0;
for(int i=0;i<num;i++) {
System.out.print(arr[i]+" ");
sum+=arr[i];
}
System.out.println();
int avg = sum/num;
System.out.println("총점:"+sum+"점");
System.out.println("평균:"+avg+"점");
}
}'개발자 > 백엔드 웹 개발자 과정(국비)' 카테고리의 다른 글
| 2022년 11월 16일 _ 11회차(메서드) (0) | 2022.11.16 |
|---|---|
| 2022년 11월 15일 _ 10회차(배열복습, 2차원 배열 ) (0) | 2022.11.15 |
| 2022년 11월 11일 _ 8회차(for문, while,do-while,보조 제어문(break,continue)) (0) | 2022.11.11 |
| 2022년 11월 10일 _ 7회차(다중 for문) (0) | 2022.11.10 |
| 2022년 11월 9일 _ 6회차(switch문,for문) (0) | 2022.11.09 |