JDK, JRE, JVM 정리
객체는 설계도로 만든다. 자바에서 설계도는 클래스(class)이다. 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다. 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다. 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.
OOP는 객체를 기준으로 코드를 나누어 구현한다. 자바의 경우 그 구성 부분 단위가 클래스이다. 자세히 말하면 클래스는 설계도고 구현체는 인스턴스이다. OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행된다.특징을 살펴보도록 하자. 캡슐화, 정보은닉, 추상화,
인스턴스 자신의 메모리를 가리킴↳객체를 new하면 heap에 생성이 되는데 이 주소값을 갖는 얘를 참조변수라고 하는데 그 값 자체를 참조값,레퍼런스 value라고 하는데 그 변수자체는 인스턴스 외부에 해당되고 그 변수가 인스턴스를 가리키게되는데 인스턴스 자체 내부에서
Company는 외부에서 생성할 수도 없고 내부에서 private으로 생성되어있고getInstance메서드만 제공되기 때문에 이 메서드로 return으로 instance만 사용할 수 있다. -> 유일한 객체를 제공할 때 싱글톤 패턴을 쓴다. (static을 사용해 쓸
하나의 JAVA 파일은 크게 필드(field), 생성자(constructor), 메소드(method)로 구성된다. 그중 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(static이 붙은 자료형) Static 영역에 데이터를 저장한다. Static 영역의
public static void main(String[] args) { Student std1 = new Student(100,"Lee"); Student std2 = new Student(100,"Lee"); System.out.println(std1 == std2); System.out.println(std1.equals(std...
자료형이란 데이터 타입(type)을 의미하며, 크게 2가지로 분류할 수 있다. \- 원시 타입은 쉽게 말해, 정수, 실수, 문자, 논리 리터럴등의 실제 데이터 값을 저장하는 타입이고, \- 참조 타입은 객체(Object)의 번지를 참조(주소를 저장)하는 타입으로 메
제네릭 타입(class , interface ) 제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말함클래스, 인터페이스 이름 뒤에 <> 부호가 붙고, 사이에 타입 파라미터가 위치함 Object 타입을 사용하면 모든 객체를 저장할 수 있는 장점이 있지만
rrayList list = new ArrayList <>();List list = new ArrayList <>(); 2가지 모두 같은 결과를 도출합니다. 하지만 List를 사용해 ArrayList를 생성하는 것은 유연성에서 효과를 볼 수 있습니다.여
toString()과 String.valueOf()는 Object 값을 String 형으로 변환할 때 주로 사용하는 메소드이다.두 메소드는 String의 형태로 값을 변환해주는 비슷한 점이 있지만, 변경하고자 하는 값이 null이라면 차이가 있다.두 메소드의 차이점은
List는 저장 순서를 유지하지만, Set은 저장 순서가 유지되지 않는다객체의 중복저장 불가 -> 동일 값, 동등 객체의 중복 저장 x하나의 null은 저장 가능순서가 유지되지 않기 때문에 인덱스로 꺼내올 수 없음. 그래서 사용하는 것이 이터레이터!Set은 인덱스로
outputBufferedReader 를 사용하여 readLine 으로 한줄 씩 읽고,StringTokenizer 로 문자열을 쪼개서 가공하여 출력할 수 있다.
split 함수는 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열(Array) 에 저장하여 리턴합니다. 위와 같은 휴대폰 번호가 있다고 가정하고 이를 split("-") 했을 경우 "010", "1234", "5678" 로 나누어져 배열에 저장됩니다
결과 I@762efe5d위와 같이 그냥 배열 변수(arr)를 출력하면 알수 없는 값이 출력됩니다. 여기서 출력된 값은 arr라는 변수가 가리키고 있는, 1, 2, 3, 4, 5 값이 들어있는 메모리의 주소값이기 때문입니다.배열을 출력하기 위해서는 반복문을 사용하거나,
Java에서 객체를 복사하는 유형으로 깊은 복사와 얕은 복사가 있습니다.깊은 복사(Deep Copy) 경우, 객체의 실제값을 새로운 객체로 복사하는 것이고,얕은 복사(Shallow Copy)는 여러 객체가 같은 주소를 참조하기 때문에 하나의 값을 변경해버리면, 다른
프로세스는 실행중인 프로그램이다. 즉, 메모리에 올라간 상태이다. 우리가 웹 서핑을 하기 위해 크롬 아이콘을 더블 클릭하는 순간 하나의 프로세스가 동작되는 것이다. 멀티태스킹은 여러 개의 프로그램을 동시에 띄우는 것을 의미한다. 우리는 컴퓨터로 음악(프로세스)을 들으
final은 클래스 상속과 많이 연관성을 가지고 있습니다.왜냐하면 이 "final" 이라는 예약어가 붙은 클래스와 메소드는 상속과 오버라이드가 막히게 되기 때문입니다. 이 "final" 클래스는 상속을 금지 시킵니다. 자기가 만든 클래스를 다른 프로그래머가 상속
정적(static)은 고정된이란 의미를 가지고 있다.static이라는 키워드를 사용하여 static변수와 static메소드를 만들 수 있는 데 다른말로 정적필드와 정적메소드라고도 하며, 이 둘을 합쳐 정적 멤버(= 클래스 멤버)라고 한다. 정적필드와 정적메소드는 객체
클래스 상속새로운 클래스를 정의할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현함이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할 때 기존 클래스를 상속함상속을 구현하는 경우상위 클래스는 하위 클
인터페이스란?모든 메서드가 추상 메서드로 선언됨 public abstract모든 변수는 상수로 선언됨 public static final인터페이스의 역할인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다.개발 코드가 직접 객체의 메소드를 호출하면 간단한데,
중첩 클래스와 중첩 인터페이스란? 객체 지향 프로그램에서 클래스들은 서로 긴밀한 관계를 맺고 상호작용을 한다. 어떤 클래스는 여러 클래스와 관계를 맺지만 어떤 클래스는 특정 클래스와 관계를 맺는다. 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이
Java 버전 변경 시 발생하는 오류로, JVM 버전 명시하는 부분들을 찾아서 확인 및 변경하면 된다File > Project StructureProject > SDKProject > Language levelModule > Sources > Language level
API (Application Programming Interface)는 라이브러리라고 부르기도 합니다. 바로 프로그래밍 개발에 사용되는 클래스 및 인터페이스의 모음을 말합니다. JAVA API 도큐먼트는 이러한 클래스와 인터페이스를 쉽개 찾아 이용할 수 있도록 문서화
배열에는 몇가지 불편한 점이 있었는데 그 중의 하나가 한번 정해진 배열의 크기를 변경할 수 없다는 점이다. 이러한 불편함을 컬렉션즈 프래임워크를 사용하면 줄어든다.아래의 예를 보자.아래 코드처럼 배열은 그 크기를 한번 지정하면 크기보다 많은 수의 값을 저장할 수 없다.
객체 해시코드란 객체를 식별할 하나의 정수값을 말한다. Object의 hashCode() 메소드는 객체의 메모리 번지를 이용해서 해시코드를 만들어 리턴하기 때문에 객체마다 다른 값을 가지고 있다. 논리적 동등 비교 시 hashCode()를 오버라이딩할 필요성이 있는데
동기화(syncronous) 한 자원에 동시에 접근하는 것을 제한하는 방식이다.(순서를 지키겠다는 말이다) 동시접근이 불가능하기 때문에 순차적으로 접근하여 작업을 진행하게 된다. 다음에 실행될 명령은 현재 실행 중인 명령 종료 시 까지 대기 (대기시간 버퍼링 발생) 서