목록전체 글 (85)
개발새발
static 키워드는 주로 멤버 변수와 메서드에 사용된다. package static1; public class Data3 { public String name; public static int count; //static public Data3(String name) { this.name = name; count++; } } package static1; public class DataCountMain3 { public static void main(String[] args) { Data3 data1 = new Data3("A"); System.out.println("A count=" + Data3.count); Data3 data2 = new Data3("B"); System.out.println("..
1(넣기) → 2(넣기) → 3(넣기) → 3(빼기) → 2(빼기)- > 1(빼기) 후입 선출(LIFO, Last In First Out) 여기서 가장 마지막에 넣은 3번이 가장 먼저 나온다. 이렇게 나중에 넣은 것이 가장 먼저 나오는 것을 후입 선출이라 하 고, 이런 자료 구조를 스택이라 한다. package memory; public class JavaMemoryMain1 { public static void main(String[] args) { System.out.println("main start"); method1(10); System.out.println("main end"); } static void method1(int m1) { System.out.println("method1 star..
메서드 영역 : 클래스 정보를 보관한다. 이 클래스 정보가 붕어빵 틀이다. 스택 영역 : 실제 프로그램이 실행되는 영역이다. 메서드를 실행할 때 마다 하나씩 쌓인다. 힙 영역 : 객체(인스턴스)가 생성되는 영역이다. new 명령어를 사용하면 이 영역을 사용한다. 쉽게 이야기해서 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간이다. 참고로 배열도 이 영역에 생성된다. 메서드 영역(Method Area) : 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은프로그램의 모든 영역에서 공유한다. 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다. static 영역: static 변수들을 보관한다. 뒤에서 자세히 설명한다. 런타임 ..
접근 제어자의 종류 private : 모든 외부 호출을 막는다. default (package-private): 같은 패키지안에서 호출은 허용한다. protected : 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다. public : 모든 외부 호출을 허용한다. 순서대로 private 이 가장 많이 차단하고, public 이 가장 많이 허용한다. private -> default -> protected -> public package-private 접근 제어자를 명시하지 않으면 같은 패키지 안에서 호출을 허용하는 default 접근 제어자가 적용된다. default 라는 용어는 해당 접근 제어자가 기본값으로 사용되기 때문에 붙여진 이름이지만, 실제로는 package-pr..
this initMember(String name...) 의 코드를 보면 메서드의 매개변수에 정의한 String name 과 Member 의 멤버 변수의 이름이 String name 으로 둘다 똑같다. 나머지 변수 이름도 name , age , grade 로 모두 같다 멤버 변수보다 매개변수가 코드 블럭의 더 안쪽에 있기 때문에 매개변수가 우선순위를 가진다. 따라서initMember(String name,...) 메서드 안에서 name 이라고 적으면 매개변수에 접근하게 된다. 멤버 변수에 접근하려면 앞에 this. 이라고 해주면 된다. 여기서 this 는 인스턴스 자신의 참조값을 가리킨다. this.name = name; //1. 오른쪽의 name은 매개변수에 접근 this.name = "user"; /..
절차 지향 프로그래밍 절차 지향 프로그래밍은 이름 그대로 절차를 지향한다. 쉽게 이야기해서 실행 순서를 중요하게 생각하는 방식이다. 절차 지향 프로그래밍은 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 즉, "어떻게"를 중심으로 프로그래밍 한다. 객체 지향 프로그래밍 객체 지향 프로그래밍은 이름 그대로 객체를 지향한다. 쉽게 이야기해서 객체를 중요하게 생각하는 방식이다. 객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식이다. 즉, "무엇을" 중심으로 프로그래밍 한다. 둘의 중요한 차이 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. 반면 객체 지향에서는 데이터와 그 데이터에 대한 행동(메서드)이 하..
택배를 보낼 때 제품은 준비가 되었지만, 보낼 주소지가 아직 결정되지 않아서, 주소지가 결정될 때 까지는 주소지를 비 워두어야 할 수 있다. Null 참조형 변수에서 아직 가리키는 대상이 없다면 null 이라는 특별한 값을 넣어둘 수 있다. null 은 값이 존재하지 않는, 없다는 뜻이다. public class NullMain1 { public static void main(String[] args) { Data data = null; System.out.println("1. data = " + data); data = new Data(); System.out.println("2. data = " + data); data = null; System.out.println("3. data = " + dat..
클래스 - Class 클래스는 객체를 생성하기 위한 '틀' 또는 '설계도'이다. 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의한다. 예를 들어 학생이라는 클래스는 속성으로 name , age , grade 를 가진다. 틀: 붕어빵 틀을 생각해보자. 붕어빵 틀은 붕어빵이 아니다! 이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐이다. 실제 먹을 수 있는 것이 아니다. 실제 먹을 수 있는 팥 붕어빵을 객체 또는 인스턴스라 한다. 설계도: 자동차 설계도를 생각해보자. 자동차 설계도는 자동차가 아니다! 설계도는 실제 존재하는 것이 아니라 개념으로만 있는 것이다. 설계도를 통해 생산한 실제 존재하는 흰색 테슬라 모델 Y 자동차를 객체 또는 인스턴스라한다. 객체 - Object 객체는 클래스에..
메서드 사용의 장점 코드 재사용: 메서드는 특정 기능을 캡슐화하므로, 필요할 때마다 그 기능을 다시 작성할 필요 없이 해당 메서드를호출함으로써 코드를 재사용할 수 있다. 코드의 가독성: 이름이 부여된 메서드는 코드가 수행하는 작업을 명확하게 나타내므로, 코드를 읽는 사람에게 추가적인 문맥을 제공한다. 모듈성: 큰 프로그램을 작은, 관리 가능한 부분으로 나눌 수 있다. 이는 코드의 가독성을 향상시키고 디버깅을 쉽게 만든다. 코드 유지 관리: 메서드를 사용하면, 코드의 특정 부분에서 문제가 발생하거나 업데이트가 필요한 경우 해당 메서드만 수정하면 된다. 이렇게 하면 전체 코드 베이스에 영향을 주지 않고 변경 사항을 적용할 수 있다. 재사용성과 확장성: 잘 설계된 메서드는 다른 프로그램이나 프로젝트에서도 재사..
변수 이름은 일반적으로 명사를 사용한다. 한편 메서드는 무언가 동작하는데 사용하기 때문에 일반적으로 동사로 시작 한다. 이런 차이점 외에는 변수 이름과 메서드 이름에 대한 규칙은 둘다 같다. 변수명 예): customerName , totalSum , employeeCount , isAvailable 메서드명 예): printReport() , calculateSum() , addCustomer() , getEmployeeCount() ,setEmployeeName()