지역변수들은 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
9
---------------------------------------------------------------------------------------------
/// ////////////////사용설명서 만들기
-locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8
---------------------------------------------------
생성자는 특수메서드이다.(객체가 생성될 때 자동 호출되는 특수 메서드.)
직접 호출은 안되고 객체가 생성될 때만 자동 호출된다.
생성자는 클래스 이름하고 이름이 같고, 일반 메서드와 다르게 리턴 타입이 없다.
소스코드에 생성자가 없을 때 디폴트 생성자가 만들어진다. (아무때나 디폴트 생성자가 만들어지는 게 아님)
'JAVA 수업 > java 수업 기록' 카테고리의 다른 글
0524 수업 내용 (2) | 2023.05.24 |
---|---|
0523 수업내용 (0) | 2023.05.23 |
[자바의 정석] Arrays (0) | 2023.05.21 |
[자바의 정석] Array로 배열 다루기 (0) | 2023.05.21 |
[자바의 정석] printf를 이용한 출력, 화면으로부터 입력받기 (0) | 2023.05.21 |