자바 3

Leafy·2023년 12월 1일
0

중앙_자바

목록 보기
3/76
Scanner scanner = new Scanner(System.in);

자동완성하면 (sc만 치고 ctrl+space???)
import java,util.Scanner; 위에 알아서 뜬다.

Scanner는 참조 타입.

Reference Type

  • 배열, 열거, 클래스, 인터페이스

참조 타입의 본체(?)가 들어 있는 공간은 힙(Heap)이라고 한다.
모든 클래스들은 heap에 넣어져 있다.

기본 타입 변수와 참조 타입의 주솟값??은 스택(stack)에 들어 있다.

참조 타입 주솟값은 OxAAFF33 이런 식으로..? 16진수로 돼있다?

메모리 영역(Runtime Data Area)

메소드 영역(Method Area)은 기억해두자.

메모리 영역(Runtime Data Area)에는

  • 메소드 영역(Method Area)
  • 힙 영역(Heap Area)
  • JVM 스택(Stack)

메소드 영역

메소드 영역에는
클래스의

  • 정적 필드/상수 : 중요해서 자주 쓰고, 어디에서나 접근 가능.
  • 메소드 코드
  • 생성자 코드

자바가 꺼지기 전까지 메소드 영역은 안 꺼짐.
항상 사용하는 애들 넣어두는 곳.

FIFO : first in, first out

먼저 들어간 애가 먼저 나오는 것.
일반적이다.

근데 경우에 따라서는 이렇게 하는 게 안 좋은 경우가 있음.

FILO : first in, last out

스택... 차곡 차곡 쌓이다.
이런 거 ctrl + z 같은 데서

  • push : 스택에 집어넣는 명령어.
  • pop : 스택에서 꺼내는 명령어.

String

new를 써서 만든 String은
문자열 리터럴로 만든 거랑 다르게
== 연산 결과로 값을 비교하지 않고 객체의 주솟값을 비교한다.
원본문자열.equals(비교문자열) 일케 해라.

참조를 잃은 객체는 heap에서 사라지지 않고, 연결만 끊어진다.
heap에 남은 객체의 데이터는 쓰레기 객체로 취급되어(연결 끊긴) Garbage Collector가 메모리에서 알아서 제거함.

Array 배열

배열 선언 방법

형식1 = 타입[] 변수
형식2 = 타입 변수[]

  • 통상적으로는 형식1, 데이터타입 뒤에 [] 넣어줌.
int[] intArray;
double[] doubleArray;
String[] strArray;

배열 출력

  • 이렇게하면 메모리 주소의 해시값이 나옴.
int[] a = {1, 2, 3};

System.out.println(a); // 주소를 hash 통과 시켜서(암호화?) 보여줌.
  • 하나씩 짚어줘야 함. (인덱스 지정해서 그 값만...?)
int[] a = {1, 2, 3};

System.out.println(a[0]); // 인덱스 0번 값 보기.
  • q. 세 사람 이름을 넣고, 그 배열 출력.
// 세 사람 이름을 넣고, 그 배열 출력.
String[] students = {"홍길동", "전우치", "임꺽정"};

for (int i = 0; i < students.length; i++) {
	System.out.println(students[i]);
}	
  • 배열로 for문 (syntax)
for ( String student : students ) {
	System.out.println(student);
}		

배열 객체 먼저 생성

배열에 공간 먼저 마련해서 값 집어넣기.

int[] intArray = new int[3]; // 3은 3칸짜리 만들겠단 뜻
  • 이렇게 만들면 보통 기본값을 넣어준다. 책 p183
int[] intArray = new int[3]; // 3은 3칸짜리 만들겠단 뜻
for (int i = 0; i < intArray.length; i++) {
	System.out.println(intArray[i]);
}

// 자동완성에 forEach 치면 나오는 애.
for (int i : intArray) {
	System.out.println(i);
}

배열 복사

System.arraycopy()

배열은 한 번 생성하면 길이가 고정되어 바꿀 수 없다.

더 긴 배열을 만들어서 복붙한 뒤에 더 넣고 싶은 값을 넣는 방법밖에 없다.

-> 초기 컴퓨터는 이랬는데,
요즘 나온 언어들은... 다 알아서 바꿔 줌.

List - 길이가 변하는 배열

자바에서도 List라는 걸 만들어서 그 기능을 제공해 줌.
List ArrayList
컬렉션 프레임워크.
<> 여기다 넣을 객체 타입을 적는다.

List<String> li = new ArrayList<String>();
List<String> arrayList = new ArrayList<String>();
		
arrayList.add("홍");
arrayList.add("전");
arrayList.add("임");
arrayList.add("김"); // 배열과 달리 추가 가능.
		
for (String string : arrayList) {
	System.out.println(string);
}

0개의 댓글