본문 바로가기
JAVA 수업/java 수업 기록

0522 수업 내용

by 예림220 2023. 5. 22.

지역변수들은 stack 영역에 쌓인다. 메서드가 끝나면 스택영역에 쌓여있던 변수들이 사라진다. 

 

매개변수, 지역변수는 스택영역에 쌓인다.

멤버변수는 heap 영역에 할당된다. (new - 힙영역에 할당) 

 

멤버변수는 객체 생성 시에 자동 초기화가 되지만, 지역변수와 매개변수는 자동 초기화가 되지 않는다. 

 

String 타입 변수들은 참조형이다. 

 

new 연산자는 새로운 객체를 만드는 연산자로 객체 생성 연산자라고도 한다. 

 

// 소스코드(1) -------------------------------------

String fileName = "a.txt";

parseName(fileName);

}

 

static void parseName(String fileName) {

//todo 파일의 확장자를 구분한다

//ex) a.txt파일인 경우 "확장자는 txt입니다"를 출력한다

int index = fileName.lastIndexOf(".");//1

System.out.println(fileName.substring(index+1));

}

----------------------------------------------------------------------------------

 

책 [이것이 자바다]

[5.6] 문자열 타입 String 

 

- 문자열 비교

== , equals 다른 점 알기 

 

- 문자추출 

charAt() 

(예시) 

String subject = "자바 프로그래밍";

char charValue = subject.charAt(3); // sop [프]

 

- 문자열 길이

length()

(예시)

String subject = "자바 프로그래밍";

int length = subject.length(); // sop [8]

 

- 문자열 대체 

replace()

(예시)

String old = "자바 프로그래밍";

String new = old.replace("자바", "JAVA") // sop new [JAVA 프로그래밍]

 

- 문자열 잘라내기

substring() 

(예시)

String ssn = "880815-1234567";

String firstNum = ssn.substring(0, 6); //sop [880815]

String secondNum = ssn.substring(7); //sop [1234567]

 

- 문자열 찾기

indexOf()

(예시) 

String subject = "자바 프로그래밍";

int index= subject.indexOf("프로그래밍"); // sop [3]

* 만약 주어진 문자열이 포함되어 있지 않으면 indexOf() 메소드는 -1을 리턴한다. 

 

- 문자열 분리 

split()

String board = "번호, 제목, 내용, 성명"; 

String [] arr = board.split(","); // arr[0] "번호" arr[1] "제목"  arr[2] "내용"  arr[3] "성명" 

 

- 배열타입

(배열: 동일 자료형의 데이터 묶음)

변수는 하나의 값만 저장할 수 있다. 따라서저장해야 할 값의 수가 많아지면 그만큼 많은 변수가 필요한다. 이럴때 사용하기 좋은 것이 배열 타입이다. 

배열은 연속된 공간에 값을 나열시키고, 각 값에 인덱스를 부여해 놓은 자료구조이다.

 

- 배열의 특징

배열은 같은 타입의 값만 관리한다

배열의 길이는 늘리거나 줄일 수 없다. (배열은 생성과 동시에 길이가 결정되고, 한 번 결정된 배열의 길이는 늘리거나 줄일 수가 없다) 

 

- 배열 변수 선언 

타입 [ ] 변수 ; / 타입 변수 [ ] ;

 

- 값 목록으로 배열 생성

타입 [ ] 변수 = {값0, 값1, 값2, 값3 ...};

 

- 배열 변수를 미리 선언한 후에는 값 목록을 변수에 대입할 수 없기 때문에 

배열 변수를 선언한 시점과 값 목록이 대입되는 시점이 다르다면 new 타입 [ ] 을 중괄호 앞에 붙여주면 된다.

변수 = new 타입 [ ] {값0, 값1 ...}; 

 

 - new 연산자로 배열 생성 

타입 [ ] 변수 = new 타입 [길이]; 

new 연산자로 배열을 처음 생성하면 배열 항목은 기본값으로 초기화된다. 

 

 - 배열 길이 

.length (배열의 length 필드는 읽기만 가능하다) 

 

- 다차원 배열 

 

==------------------여기부터 다시 

 

- 메서드 오버로드

// 소스코드 (2) 

 

class R{ //사각형

 

double area;

 

void make(double w) {

area = w * w;

}

void make(double w, double h) {

area = w * h;

}

void print() {

System.out.println("사각형의 면적은" + area + "입니다");

}

}

public class OverloadTest {

public static void main(String[] args) {

R r1 = new R();

r1.make(3,4);

// int 3, int 4 > double 타입으로 자동형변환

R r2 = new R();

r2.make(5.0);

 

r1.print();

r2.print();

 

}

 

}

 

[출력값]

사각형의 면적은12.0입니다

사각형의 면적은25.0입니다

=======================================================================

 

// 소스코드  3 

 

public class CallByTest {

 

public static void m(int i) {

i = 9;

}

public static void m(int[]arr) {

arr[0] = 9;

}

public static void main(String[] args) {

int i=0;

m(i);

System.out.println(i);//0

 

int[]arr = {0,1,2,3,4};

m(arr);

System.out.println(arr[0]);//9

 

}

}

 

[출력값]

0

---------------------------------------------------------------------------------------------

PrintStream (Java SE 11 & JDK 11 ) (oracle.com)

 

PrintStream (Java SE 11 & JDK 11 )

Appends a subsequence of the specified character sequence to this output stream. An invocation of this method of the form out.append(csq, start, end) when csq is not null, behaves in exactly the same way as the invocation out.print(csq.subSequence(start, e

docs.oracle.com

 

PrintStream (Java SE 11 & JDK 11 )

Appends a subsequence of the specified character sequence to this output stream. An invocation of this method of the form out.append(csq, start, end) when csq is not null, behaves in exactly the same way as the invocation out.print(csq.subSequence(start, e

docs.oracle.com

 

 

/// ////////////////사용설명서 만들기 

 

-locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8

 

---------------------------------------------------

생성자는 특수메서드이다.(객체가 생성될 때 자동 호출되는 특수 메서드.)

직접 호출은 안되고 객체가 생성될 때만 자동 호출된다. 

생성자는 클래스 이름하고 이름이 같고, 일반 메서드와 다르게 리턴 타입이 없다. 

소스코드에 생성자가 없을 때 디폴트 생성자가 만들어진다. (아무때나 디폴트 생성자가 만들어지는 게 아님)