목록전체 글 (31)
평범한 공부
응용프로그램이 시작되면 JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 Method Area, Call Stack, Heap으로 나누어진다 #Method Area 프로그램 실행 중 어떤 클래스가 사용하게 되면 JVM은 해당 클래스의 클래스 파일을 읽어서 분석하여 클래스에 대한 정보를 이곳에 저장한다 이때, 그 클래스의 클래스 변수도 이 영역에 함께 생성된다 #Call Stack or Execution Stack 호출 스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면 호출 스택에 호출된 메서드를 위한 메모리가 할당되며 이 메모리는 메서드가 작업을 수행하는 동안 지역변수들과 연산의 중간결과 등을 저장하는 데 사용된다. 그리고 메서..

#다차원 배열 메모리의 용량이 허용하는 한 차원의 제한은 없지만,, 주로 1,2,차원 배열이 사용되므로 2차원 배열만 잘 이해하면 3차원 이상의 배열도 어렵지 않게 다룰 수 있다. #선언 방법 2차원 배열을 선언하는 방법은 다음과 같다 선언방법 선언 예 타입[][] 변수이름;; int[][] score; 타입 변수이름[][] int score[][]; 타입[[] 변수이름[] int[] score[]; 2차원 배열은 주로 테이블 형태의 데이터를 담는데 주로 사용한다 만일 4행 3열의 데이터를 담기 위한 배열을 생성하려면 다음과 같이 한다 ex) int[][] score = new int[4][3]; 위는 곧 4행 3열의 배열이 생성된다.. 생성된 배열의 요소는 int타입이면 기본값인 0으로 초기화 된다....
#모듈의 개념 전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 실행코드를 의미, 자체적으로 컴파일이 가능하며 다른 프로그램에서의 재사용이 가능한 것 ex)전자계산기의 +,-,*.... , 자바의 import 한 대상들 (Scanner, Array.... 클래스 등) #공통 모듈 여러 기능 및 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미, 날짜 처리를 위한 유틸리티 모듈 등이 해당 #공통 모듈에 대한 명세기법 1) 정확성 : 실제 구현 시 필요한지의 여부를 알 수 있도록 정확하게 작성 2) 명확성 : 해당 기능에 대해 일관되게 이해되고 한가지로 해거될 수 있도록 작성 3) 완전성 : 시스템이 구현될 때 필요하고 요구되는 모든 것을 기술 4) 일관성 : 공통 기능들 간에 상호 충돌이 없도록 작성..

#String 배열의 타입이 String인 경우에도 int배열의 선언과 생성방법은 동일하다 ex) String[] name = new String[3]; 'A' = 문자 "A" = 문자열 String[] name = new String[5]의 참조형 변수의 기본값은 null이다 null 은 빈 값이라는 뜻 #향상된 for문 향상된 for문을 String 배열과 사용한다 (향상된 for문은 일부분만 사용 가능하다) 배열,컬렉션,읽기 용도이기때문에 직접적인 수정,삭제는 불가능하다 정수형 배열과 동일하게 String[] name = {}; 로 초기화가 가능하다 #char 배열과 String 배열 문자열이라는 용어는 문자를 나열하는것이기 때문에 의미 자체로는 char과 String은 비슷해보일수 있으나 문자열을..

#배열 배열이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 데이터를 연속된 공간에 나열하고 각 데이터에 인덱스를 부여하는 것 같은 타입의 데이터만 저장할 수 있다. 한번 생성된 배열은 길이를 늘리거나 줄일 수 없다. 늘릴려면 기존 배열의 값들을 새로운 배열로 복사해 주어야 한다 #배열 생성 타입[] 변수이름; 변수이름 = new 타입[저장할 값의 개수] or 타입[] 변수이름 = new 타입[저장할 값의 개수] score라는 int형을 배열로 선언하고 5칸의 공간을 준다. 여기서 주의할 점은 인덱스는 0번부터 시작이다 #배열의 길이 배열이름.length 배열은 한번 선언하고 나면 길이를 변경할 수 없다 배열의 크기를 정하는 것도 불가능하다 // ex) 배열이름.length = 15; //erro..

charAt()은 문자열에서 해당 인덱스의 문자를 읽어오는 역할을 한다 index의 시작은 0 부터이다 예로 Hello Java의 인덱스 번호는 아래와 같이 나타낼 수 있다 H e l l o 공백 J a v a [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 주민번호를 통한 성별 예측은 제어문을 통해 알 수 있다 if,swich ....case 문을 통해 만들 수 있는데 String 타입의 str 변수를 생성 후 Scanner를 통해 키보드로 입력을 받아 온다 그리고 받아온 문자열에서 index[7]의 문자가 1 또는 3이면 남자, 2 또는 4면 여자를 출력해준다 여기서 주의 할점은 문자 비교이기때문에 if에 ' '를 써주어야 한다 실행 결과 입력한 것은 숫자이지만 '-'이라는 문..

final 키워드는 클래스, 인스턴스 변수, 메소드, 메소드 내의 지역 변수 앞에 사용할 수 있다. final 클래스 : 자식 클래스를 가질 수 없는 클래스, 곧 자신이 마지막 클래스이다 final 인스턴스 변수 : 인스턴스 변수 앞에 final 키워드가 붙으면 상수라는 뜻이다. 즉 한번 지정된 값이므로 바꿀 수 없다. 또한 초기화된 final 인스턴스 변수는 생성자를 통해 변경시킬 수 없다 final 인스턴스 변수는 선언할 때 초기화 하거나 생성자에서 초기화해야 한다 모든 인스턴스가 pie의 값을 가지게 되지만 동일한 값을 가지고 코딩할 경우 static final로 하나의 변수를 만들어서 공유하게 끔 하는 것이 좋다 final 메소드는 오버 라이딩을 할 수 없는 메소드 이다 즉, 자식 클래스에서 오버..

메소드 오버 로딩은 같은 클래스 내에서 이름은 같고 매개변수가 다른 메소드의 관계이지만 오버 라이딩은 상속관계에서 이루어진다 상속관계에서 부모 클래스가 가지고 있는 메소드와 똑같은 형태를 자식 메소드가 같은 경우를 말한다 똑같은 형태란 똑같은 메소드명 똑같은 매개변수, 같은 반환 값 유형을 말한다 오버 로딩 : 한 클래스 내에서 메소드명은 같고 매개변수가 다른 것 오버 라이딩 : 자식 클래스에서 부모 클래스에 있는 메소드를 재정의하는 것 만약 부모 메소드가 호출되기를 원한다면 super키워드로 해결할 수 있다. 각 인스턴스는 자기 클래스의 메소드가 호출하는 것이 기본이다. 만약에 호출한 메소드가 자기 클래스에 없으면 부모 클래스에 있는지 보고, 있는 메소드를 호출하게 된다