오늘은 자바의 기본형 타입과 참조형 타입 그리고 배열에 대해서 배웠다
우선 기본형 타입의 종류는
int, double,boolean,float,byte,char 등 변수에 선언한 값을 실제 가지고 있다
참조형 타입에는
String: 직접 선언한 Class 타입
Wrapper Class 타입 : Integer,Double,Boolean,Long 등 이 있다
선언한 변수에 해당값을 저장한 주소값을 가지고 있고 주소값을 가지고 실제 값을 찾아간다고 해서 참조영 타입이라고 한다
그리고 기본형 타입은 == 을 사용하고 참조형 타입은 equals() 라는 메서드를 사용해야 한다
equals() 의 리턴 타입(반환 타입)은 boolean 이다
예문을 보면
<예문>
package ch08_String;
public class Ex01_String {
public static void main(String[] args) {
String str1 = "안녕";
String str2 = "안녕";
String str3 = new String("안녕");
//str1 , str2 같은지
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str1.equals(str3));
}
}
str1 에 "안녕" 과 str2 에 "안녕" 은 동일한 String 객체에 저장이 되지만
str 3 의경우 new 라는 새로운 객체를 만드는 연산자를 사용하요 직접 String 객체를 생성한것이다
<예제1>
package ch08_String;
import java.util.Scanner;
public class Ex02_String {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("메세지를 입력하세요");
System.out.println("프로그램을 종료 하려면 '종료' 를 입력하세요");
boolean run = true;
String text = "";
String end = "종료";
while (run) {
text = scanner.nextLine();
System.out.println(text);
if (text.equals(end)){
run = false;
}
}
}
}
예제 1의 경우는 스케너를 사용하여 String 객채를 넣어주고 "종료"라는 단어가 입력이 되면 작동을 중지하는 코드 이다
String text 라는 변수는 공백으로 두어서 입력을 할때마다 바뀔수 있도록 하였고
end 라는 변수값을 종료 로 지정하여 "종료"가 입력되면 작동을 중지한다
-배열-
배열이란
동일한 타입의 데이터를 여러 개 사용하는 경우에 활용
배열은 크기를 가지고 있으며, 해당 크기만큼의 데이터를 가지고 있음
정수형 배열의 크기가 5라면 5개의 서로 다른 정수를 가지고 있는 공간이 존재
각각의 데이터에 접근 하려면 index(인덱스)를 사용 하여 접근
<배열 선언 및 활용>
a.
// 정수 값을 담는 크기가 3인 numbers1 이라는 이름의 배열 선언
int [] numbers1 = new int[3]
// numbers1에 값을 담기
numbers1[0] = 10;
numbers1[1] = 20;
numbers1[2] = 30;
//2번 인덱스에 들어있는 값을 출력
System.out.println(numbers1[2]);
// String 을 담는 크기가 5인 strings1 이라는 이름의 배열 선언
String[]strings1 = new String[5]
strings1[0] = "안녕";
b. 배열을 하면서 값도 같이
int[] numbers2 = {1 , 2 , 3, 4};
numbers[3] = 10;
String[] strings2 = {"aa" , "bb", "cc", "dd", "ee"}
c.배열의 타입, 이름만 미리 선언하고 나중에 배열 객체로 만드는 방법
int[] numbers3 = null;
//여기서는 number3는 배열이 아닌 상태
numbers3 = new int[10]
//여기서 부터 진짜 배열로 활용 가능
int [] numbers4 = null;
int size = 100;
// 배열의 크기 지정하는 부분에 정수형 변수도 사용 가능
numbers4 = new int [size];
<예문2>
package ch09_array;
public class Ex01_ArrayBasic {
public static void main(String[] args) {
// 크기가 5인 정수형 배열 numbers1
int[] numbers1 = new int[5];
System.out.println("numbers1 = " + numbers1[0]);
numbers1[0]=100;
System.out.println("numbers1[0] = " + numbers1[0]);
// 배열의 크기 확인
System.out.println(numbers1.length);
// 크기가 3인 String 배열 strings1
String[] strings1 = new String[3];
System.out.println("strings1 = " + strings1[0]);
// 크기가 10인 실수형 배열 doubles1
double[] doubles1 = new double[10];
System.out.println("doubles1 = " + doubles1[0]);
//정수형 배열 numbers2 이름만 선언 하고 다음 줄에 크기 8을 지정하여 선언
int[] numbers2 = null;
numbers2 = new int[8];
System.out.println("numbers2 = " + numbers2[0]);
//10,20,30,40 이 들어 있는 numbers3 배열 선언
int[] numbers3 = {10 , 20 , 30 , 40};
//"가" "나" "다" "라" 가 들어 있는 strings2 선배열 선언
String[] strings2 = {"가","나","다","라"};
}
}
<각각의 코드는 주석을 확인>
<배열 데이터 출력>
package ch09_array;
public class Ex02_ArrayBasic {
public static void main(String[] args) {
int[] numbers1 ={10,20,30,40,50};
// 배열 데이터 출력
System.out.println("numbers1[0] = " + numbers1[0]);
System.out.println("numbers1[1] = " + numbers1[1]);
System.out.println("numbers1[2] = " + numbers1[2]);
System.out.println("numbers1[3] = " + numbers1[3]);
System.out.println("numbers1[4] = " + numbers1[4]);
위의 값을보면 각각 인덱스값을 확인을 하는것인데 만약 그 수가 비약적으로 늘어나게 된다면 하나하나 찍어줄수가 없기때문에 for문을 사용하여 데이터를 출력을 해주어야한다
//for 문을 이용해서 배열 데이터 출력
for (int i= 0; i< numbers1.length; i++ ){
System.out.println("numbers1 = " + numbers1[i]);
}
// numbers1 에 저장된 모든 데이터 의 총합, 평균 계산
int sum = 0;
for (int i= 0; i< numbers1.length; i++){
sum+=numbers1[i];
}
System.out.println("sum =" + sum);
System.out.println("sum = " + sum/ numbers1.length);
}
}
<예제2>
package ch09_array;
import java.util.Scanner;
public class Ex03_ArrayEx {
public static void main(String[] args) {
/**
* 크기가 3인 정수형 배열을 선언 하고
* 실행 했을 때 스캐너 로 정수 값 을 입력 받아 배열에 저장
* 배열에 저장된 값의 총 합, 평균 계산
*/
Scanner scanner = new Scanner(System.in);
int[] numbers1 = new int[3];
int i = 0;
int sum = 0;
for (i = 0; i < numbers1.length; i++) {
numbers1[i] = scanner.nextInt();
sum+=numbers1[i];
}
System.out.println(sum);
System.out.println(sum/ numbers1.length);
}
}
스케너를 사용하여 배열에 정수값을 넣고 배열에 저장된 값의 총합과 평균을 계산 해주었다
우선 크기가 3인 배열을 지정해주고
범위가 될 i 값 배열에 저장된 값을 더해줄 sum 을 정해두고
for문 안에서 정수를 입력해주고 그 저장된 값을 더한값과 평균값을 출력해 주었다
해석을 해보자면
numbers1[0] = 10
numbers1[1] =10
numbers1[2] =10
10 +10 +10 = 30
30/3 = 10 이된다
<예제3>
import java.util.Scanner;
public class Ex04_ArrayEx {
public static void main(String[] args) {
int num[] = {5, 2, 1, 3, 4, 7, 6, 9, 10, 8};
/**
* 위와 같은 배열이 있을 떄 1~10 사이의 숫자 중에서 하나를
* 입력했을 때 그 숫자가 몇 번 인덱스에 있는지 출력
*/
Scanner scanner = new Scanner(System.in);
System.out.print("숫자: ");
int number = scanner.nextInt();
int i = 0;
for (i = 0; i < num.length; i++) {
if (number == num[i]) {
System.out.println(number + "는" + i + " 번 인덱스에 있습니다");
}
}
}
}
다음은 배열안에 수를 미리 지정을 해주고 그 수를 입력했을때 몇번 인덱스에 있는지 출력하는 예제이다
우선 배열안에 있는 수를 넣어줄 스케너를 만들어주고
for문에서 만들어 주어야 하기떄문에 범위가 되어줄 변수 i 를 만들어 준다
그리고 if 문에서 내가 입력한 숫자와 배열 안에 숫자가 같을경우 그 범위와 같은 곳을 출력을 해주게 된다
'개발일지' 카테고리의 다른 글
개발일지 12일차 -객체 지향 프로그래밍- (1) | 2023.12.11 |
---|---|
개발 일지 11일차 -배열 응용- (0) | 2023.12.09 |
개발 일지 9일차 -While문 , Random 메서드- (2) | 2023.12.06 |
개발일지 8일차 -for문의 응용- (2) | 2023.12.05 |
개발일지 7일차 -Switch case & for반복문- (0) | 2023.12.04 |