2차원 배열
: 배열 안에 배열
1차원 배열을 여러 개 선언할 때 관리하기 힘들기 때문에
2차원 배열을 한 번 선언한다.
*100 칸중 첫번째 주솟값은 들어갈수 있으니까 , 전체 넣는게 아니라 첫번째 주솟값만 넣는것
* 2차원 배열부터는 메모리 낭비가 심함으로 선호하지 않는다.
2차원 배열 선언
자료형[][] 배열명 = {{값1,값2,값3},{값4,값5,값6}}
자료형[][] 배열명 = new 자료형[행][열];
자료형[][] 배열명 = null;
배열명 = new 자료형[행][열];
int[][] arrData = new int[2][3];
arrData = 행의주소가 들어있음
arrData.length = 행의길이
arrData[행].length = 열의길이
*무조건 행부터 접근한다.
*null 과 "" 차이
null = 아리에서 대입연산자 사용 , 다른값으로 대채할때
"" = 아래에서 다른 문자열과 연결할 때 다른 값이 누적 연결될 때
package arrayTest;
public class ArrTest {
public static void main(String[] args) {
int[][] arrData = {{4,5,6},{8,9,1,4},{1,5,6,7}};
int length = 0;
System.out.println(arrData.length); //행의길이
System.out.println(arrData[0].length);//열의 길이
for(int i=0; i< arrData.length; i++) {
length += arrData[i].length;
}
for(int i=0; i<length; i++) {
System.out.println(arrData[i/4][i%4]);
if((i+1)%4==0) {
System.out.println();
}
}
}
}
[i/4] = 정수 나누기 정수임으로 잘려서 i=0~3 일때는 0이 나온다.
[i%4] 0~3 까지는 0,1,2,3 이 나온다.
메소드
이름 뒤에 소괄호.
단, 키워드(ex if) 뒤에 소괄호는 메소드가 아니다.
f (x) = 2x+1
메소드 이름 매개변수 리턴값
*f 함수와 변수 x 를 연결수켜 줘서 '매개' 변수라 한다.
메소드 선언
(1)리턴타입 (2)메소드명(자료형 (3)매개변수명, ...)
(4)실행문장;
(5)return 리턴값;
(1) 리턴값의 타입을 작성한다 , 리턴값 없으면 void 작성
(2) 동사로 작성한다. (연필(x)을 쓴다(함수이름))
(3) 외부에서 전달받을 값이 있다면, 자료형과 순서에 맞게 선언해준다.
(4) 생략이 가능하다. 메소드의 기능을 구현하는 로직을 작성한다.
(5) 생략이 가능하다. 리턴값이 있다면 , 사용한 부분 통채로를 리턴값으로 봐야한다.
메소드 선언 순서
문제) 두 정수의 덧셈 메소드 선언
1. 메소드 이름 생각
add{}
2. 매개변수 생각
add(int num1, int num2){}
3. 실행할 문장 생각
add(int num1, int num2){
int result = num1 + num2;}
4. 리턴값 작성
add(int num1, int num2){
int result = num1 + num2;
return result;
}
5. 리턴타입 결정
int add(int num1, int num2){
int result = num1 + num2;
return result;
}
package methodTest;
public class MethodTest {
static int f(int x){
return 2*x+1;
}
// 두 정수의 덧셈 메소드
int add(int number1 , int number2) {
return number1 + number2;
}
//메소드 사용법
//1. 메소드 선언시 static 을 붙여준다.
//2. 사용하고자 하는 메소드의 소속을 알려준다.
public static void main(String[] args) {
MethodTest mt = new MethodTest();
System.out.println(mt.f(10));
}
}
new 를 통해 만들어준 클레스를 heap 메모리에 올려준다.
이후 클레스 안에 있는 메서드를 사용.
*static 영역(메모리)에 할당된 메서드는 모든 객체가 공유 , 인스턴스 생성하지 않아도 호출 가능
class 가 메모리에 올라갈때 자동으로 메모리에 올라감 , 안에서 멤버변수 사용불가 , static 만 사용가능
'웹개발 기초 > java기초' 카테고리의 다른 글
자바 class 문제 예시 (1) | 2024.01.21 |
---|---|
자바 메소드 특징 (1) | 2024.01.21 |
자바 배열 (0) | 2024.01.19 |
자바 연산자,반복문,조건문 (3) | 2024.01.19 |
자바 기본입출력,자료형과 형변환 (0) | 2024.01.19 |