생각기록
2023-03-02 java 표준 배열 본문
저번시간 복습
1. 개발환경 구축
- JDK(Java Development Kit) 17 버전 설치 ** jvm을 설치하기 위해 이 것을 설치해야 한다.
- Eclipse
2. 기본 문법
- 식별자 원칙 : js랑 비슷
- 데이터 타입 : 자바는 강한 언어라서
1) 기본 타입
2) 레퍼런스 타입 : 값이 담겨있는 메모리 주소 참조
> String
.equals("") ***==을 쓰면 안됨
- 연산자
3. 조건문 반복문 메소드
if else / for / while / do while (do 부분을 무조건 한 번 실행)
클레스 내에서 쓰는 함수를 메소드라고 한다.
public static void 함수명() => 반환값이 xxx
public static 데이터타입 함수명() => 반환값이 있을 경우 데이터 타입 지정
4. 배열
표준 배열 사용해서 1차원 배열 만들기
배열
• 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

배열 출력
• for문 활용

• Arrays 클래스의 toString 메소드 활용
• Arrays 클래스는 배열을 다루기 위한 다양한 메소드가 포함되어 있음.

• for-each 문
• 배열의 각 원소에 순차적으로 접근하는데 유용한 for 문

2차원 배열

1차원배열과 선언은 똑같지만, 뒤에 괄호 하나가 더 추가 된다.

package java_first_project;
public class Main {
public static void main(String[] args) {
// 0 1 2
// 3 4 5 ㄴ 으로 읽으면 된다 2, 3 // 자바에서는 중괄호 사용!
int [][] arr1 = {{0, 1, 2}, {3, 4, 5}};
int [][] arr2 = new int [2][3];
// for-each
for (int[] arr : arr1) {
for (int value : arr) {
System.out.print(value + " ");
}
System.out.println(" ");
}
}
}
이번에는 arr2에 값을 넣어 보도록 한다

현재 값이 없다
package java_first_project;
public class Main {
public static void main(String[] args) {
// 0 1 2
// 3 4 5 ㄴ 으로 읽으면 된다 2, 3 // 자바에서는 중괄호 사용!
int [][] arr1 = {{0, 1, 2}, {3, 4, 5}};
int [][] arr2 = new int [2][3];
// for-each
for (int[] arr : arr1) {
for (int value : arr) {
System.out.print(value + " ");
}
System.out.println(" ");
}
int num = 0;
for ( int i = 0; i<arr2.length; i++) {
for (int j=0; j<arr2[i].length; j++) {
arr2[i][j] = num;
num++;
}
}
for (int[] arr : arr2) {
for (int value : arr) {
System.out.print(value + " ");
}
System.out.println(" ");
}
}
}
2차원 배열은 [ ]가 하나더 있고,
요소에 접근할때는 2중 for문으로 접근

표준배열의 단점....
배열을 사용하기 전에 크리를 미리 지정해줘야 한다고 했는데, 모든 상황에서 배열의 길이를 아는게 아니다.
그럴때 사용하는 것이 arraylist를 사용한다.
ArrayList 클래스
• 표준 배열보다 조금 느릴 수 있지만, 배열에서 많은 조작이 필요할 때 유용 하게 사용되는 클래스
• 크기를 미리 정하지 않아도 되는 배열

사용하려면 클래스를 가져와주고,
생성할때는 위와 같은 형태로 생성
ArrayList <타입지정>객체명 = new ArrayList <>();
<> 제내릭스? > 타입을 지정하는 곳
ArrayList 메소드
• add( element ) : ArrayList 맨 뒤에 element 추가
• add( index, element ) : index 위치에 element 삽입
• addAll( ArrayList ) : ArrayList 뒤에 ArrayList추가
• size() : ArrayList의 길이 리턴
• get( index ) : index에 해당하는 요소 리턴
• indexOf( params ) : params와 같은 첫 번째 요소의 index 리턴, 없 으면 -1 리턴
• remove( index ) : index의 요소 삭제
• clear() : 모든 요소 삭제.
package java_first_project;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// arr1 이라는 정수형 ArrayList 생성
ArrayList<Integer> arr1 = new ArrayList<>();
ArrayList<Integer> arr2 = new ArrayList<>();
// ArrayList 뒤에 ArrayList 를 추가하는 방법
for ( int i=1; i<6; i++) {
arr2.add(i);
}
// arr1 리스트 맨 뒤에 2가 추가 된다.
arr1.add(2);
// 0번째 인덱스에 1 추가
arr1.add(0, 1);
// arr1 요소 뒤에 arr2 추가
arr1.addAll(arr2);
// 1번째 인덱스 요소 제거
arr1.remove(1);
// 요소 모두 제거
arr1.clear();
for (int value : arr1 ) {
System.out.print(value + " ");
}
// .length x > .size()
// arr1[i] x > arr1.get(i)
System.out.println(""); // 줄 바꿈
for (int i=0; i<arr1.size(); i++) {
System.out.print(arr1.get(i) + " ");
}
// 요소의 인덱스 반환 indexOf
System.out.println("");
System.out.println("index of 2: " + arr1.indexOf(2));
System.out.println("index of 2: " + arr1.indexOf(6));
}
}
배열은 직접 인덱스로 접근하지만,
어레이리스트는 제공하는 메소드를 사용해서 조작하면 된다.
실습1

입력 정수로 받고 결과는 실수로 변환해줘야 하는데
강제형 변환이라고 해서

package java_first_project;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 배열 준비
int[] intArray = new int[5];
int sum = 0;
// 숫자 5개 입력받기
System.out.println("5개의 정수를 입력해 주세요.");
for ( int i = 0; i < intArray.length; i++) {
intArray[i] = scanner.nextInt();
sum += intArray[i]; // 합 계산
}
System.out.println("평균은 :" + (double)sum/5);
}
}
선생님 답안
package java_first_project;
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[5];
int sum = 0;
System.out.println("5개의 정수를 입력하세요");
// 입력된 5개의 값이 arr에 저장됨
for (int i=0; i<5; i++) {
arr[i] = scanner.nextInt();
sum += arr[i];
}
// 이렇게 하면, 1 2 3 4 7 > 3.0이 출력된다 sum / arr.length 먼저 실행되서 3을 double로 저장하는거라.. 그냥 3.0이 된다.
// 똑같이 sum 앞에 더블을 한다.
// double result = (double)sum / arr.length;
System.out.println("평균은 " + (double) sum/arr.length);
}
}
실습 2

exit값을 입력받을 때까지 문자열을 계속 받는다.
반복문을 for문같은 경우 횟수를 알고있을 경우 사용하고,
while은 입력을 얼마나 받을지는 모르겟지만, 원하는 조건이 올때까지 입력받을거라 while이 좋습니다
while은 조건을 잘 모를때 사용한다 무한으로 돌린다 그냥.. true!
브레이크로 탈출!
package java_first_project;
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// str1 이라는 정수형 ArrayList 생성
ArrayList<String> str1 = new ArrayList<>();
while ( true ) {
System.out.println("문자를 입력해주세요: ");
String temp = scanner.nextLine();
if(temp.equals("exit")) {
break;
}
str1.add(temp);
}
for (int i = 0; i < str1.size(); i++) {
System.out.println(str1.get(i));
}
}
}
선생님 코드
package java_first_project;
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// str1 이라는 정수형 ArrayList 생성
ArrayList<String> arr = new ArrayList<>();
// true로 하면 무한 돈다.
while(true) {
System.out.println("문자열을 입력해주세요.");
// 문자열을 받을 객체 생성
String str = scanner.nextLine();
// exit면, 브레이크 아니면? 문자를 더해준다.
if(str.equals("exit")) {
break;
}
arr.add(str);
}
// while문 밖에서 출력
for (String str : arr ) {
System.out.println(str);
}
}
}
'SeSAC 풀스택 > JAVA &Spring boot' 카테고리의 다른 글
| 2023-03-04 java / 클래스의 상속 / 오버라이딩 (0) | 2023.03.04 |
|---|---|
| 2023-03-02 java 클래스 / 객체지향 프로그래밍 / getter, setter / static (1) | 2023.03.02 |
| 2023-03-02 java 예외 처리 / try-catch-finally (0) | 2023.03.02 |
| 2023-02-28 java 배열, 배열 출력 (0) | 2023.02.28 |
| 2023-02-28 JAVA / 환경설정 / 데이터타입 / 입출력 / 메소드 선언 (0) | 2023.02.28 |