[멀캠|Java] 2일차 수업
KB IT’s Your Life 4기 - Java 2일차
배열
package day_02;
public class ArrayExam {
public static void main(String[] args) {
int[] arr; //선언
//int arr[]와 같음
arr = new int[3]; //대입 > 빈 배열을 만듦
arr[0] = 100;
arr[1] = 200;
arr[2] = 300;
System.out.println(arr); //[I@3d012ddd => [ 배열, I int, @ 구분자, 3d012ddd 참조값
/**배열 바로 초기화하기*/
//변수 선언할 때, 배열 대입 *** static 공간에 배열을 만듦
int arr2[] = {100, 200, 300}; //선언, 대입 한번에
//arr2 = {100, 200, 300}; 오류가 남. 초기화하는 코드 내에서만 배열 대입 가능
System.out.println(arr2[2]);
//변수 대입할 때, 배열 대입 *** heap 공간에 배열을 만듦. => Stack에 arr3에서 heap에 배열을 가리킨다.
//이 방법이 메모리 공간을 효율적으로 관리하는 데 있어서 도움이 된다.
int arr3[] = new int[]{100, 200, 300}; //선언, 대입 한번에
arr3 = new int[] {100,400,300}; //가능. 상단의 배열은 Garbage값이 된다.
//CPU가 놀고 있을 때(사용자 입력을 기다리는 상황), 가비지 컬렉션을 검사할 수 있다.(무조건은 X VM이 알아서 메모리 관리)
System.out.println(arr3[1]);
}
}
String 메모리 공간
package day_02;
public class StringExam {
public static void main(String[] args) {
/**문자열 생성*/
// new 연산자 없이 만들어지는 경우, Method 영역에 만들어진다.
String s = "Kim";
//new 연산자를 통한 생성자들은 모두 heap공간에 만들어진다.
String s2 = new String("Kim2");
//***기본 데이터 타입 변수 값은 stack영역 안에 값이 들어간다.heap영역을 따로 잡아서 가리키지 않음.
int i = 50;
System.out.println(s2);
}
}
다차원 배열
배열 복사
package day_02;
public class ArrayExam3 {
public static void main(String[] args) {
int[] oldArr = { 10, 20, 30 };
int[] newArr = new int[5];
//oldArr에 0번째부터, newArr에 0번째부터 3개를 복사함
System.arraycopy(oldArr, 0, newArr, 0, 3);
//foreach로 배열의 내부값 담음.
for (int i : newArr) {
System.out.println(i);
}
}
}
Scanner
package day_02;
//다음동작까지 무한히 대기 - BLOKING
import java.util.Scanner;
public class ScannerExam {
public static void main(String[] args) {
//하나만 만들어야한다. System이 키보드를 가리키기 때문.
Scanner scanner = new Scanner(System.in);
//next? 공백문자(space,enter,tab)를 기준으로 분리, 입력을 의미한다. Blocking method
int a = scanner.nextInt();
scanner.nextBigDecimal(); //bigDecimal이란? long은 900경을 표현할 수 있다. long형보다 큰 정수형 데이터 타입을 처리한다.
String b = scanner.next(); //글자 한개 단어씩 추출
String c = scanner.nextLine(); //한줄씩 추축
System.out.println(a + b + c);
}
}
코테
import java.util.Scanner;
import java.util.StringTokenizer;
/**
*
1부터 10까지의 정수를 입력받다가 입력된 정수가 범위를 벗어나면 그 때까지 1번 이상 입력된 각 숫자의 개수를 작은 수부터 출력하는 프로그램을 작성하시오.
: 줄바꿈, : 공백
예제
5 6 10 9 3 5 3 5 0
3 : 2개
5 : 3개
6 : 1개
9 : 1개
10 : 1개
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//문자열 나누기 기능: StringTokenizer
String line = sc.nextLine();//한줄읽기
//숫자갯수 알아내기. StringTokenizer
StringTokenizer st = new StringTokenizer(line);
// System.out.println(st.countTokens());
//추출할 토큰이 존재하는동안 반복
while(st.hasMoreTokens()) {
String s = st.nextToken();//토큰 추출
//String -> int변환
int i = Integer.parseInt(s);
System.out.println( i );
}//end while
}
}