주석을 통해 코드에 대한 정보를 전달하기 위한 목적으로 만들어진 문법요소임에너테이션은 다른 프로그램에게 정보를 전달한다.소스코드가 컴퍼일되거나 실행될 대 컴파일러 및 다른 프로그램에게 필요한 정보를 전달하는 문법요소와 같이 interface를 먼저 지정해준 다음. 새로
함수형 프로그래밍 기법을 지원하는 자바의 문법요소임메서드를 하나의 식 으로 표현한 것코드를 매우 간결하면서 명확하게 표현할 수 있다.기본적으로 반환타입과 이름을 생략할 수 있음. 따라서 람다함수를 익명함수(anonymous function)라고도 함.ex실행문이 2개
자바8부터 도입된 문법으로배열 및 컬렉션의 저장요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 하는 반복자데이터의 흐름을 의미한다. 각 데이터를 흐름에 따라 우리가 원하는 결과로 가공하고 처리하는 일련의 과정원래는 위와 같이 표현되어야 함. 하지만 스트림을 이용하면
프로세스 : 실행중인 애플리케이션 즉, 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 만큼의 메모리를 할당받는다.프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.프로세스 구성데이터, 컴퓨터 자원, 스레드스레드는
스레드 join 예제처음에 맨아래 run()메서드에 있는 try { Thread.sleep(1000); } catch (Exception error) {}을 없이 진행했었다. 그랬더니 처리속도가 너무빨리서 원했던 결과가 안나왔다.(run()메서드가 복잡했으면 아마 원하
자바라는 언어가 있기전 C++이 주된 언어였다.문제가 있었다면 운영체제로부터 독립적이지 못한 점이있었다.Windows를 위해 만든 프로그램은 Windows에서만 작동이 가능했다.Mac OS에서 그 프로그램을 실행시키려면 Mac OS에 맞게 새로 프로그램을 만들고 컴파일
한번 생성된 String 클래스의 인스턴스는 여러개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야한다.String은 변경 불가능한 문자열을 생성한다.이렇게되면 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지컬렉터로 들어가게 된다
String 클래스의 인스턴스는 한 번 생성되면 그 값을 변경 할 수 없다StringBuffer 클래스의 인스턴스는 변경할 수 도 있고, 추가할 수 도있다.이를 위해 StringBuffer 클래스는 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가진다.버퍼 크
char에 대한 이해 char는 문자타입이다. 따라서 ''안에 단 하나의 문자만 할당할 수 있다. 이 타입은 유니코드로 문자를 저장한다. 유니코드는 각 문자에 숫자 코드 번호를 부여한 것인데, 와 같이 문자형 리터럴을 문자형 변수에 할당하면 에는 a의 유니코드 숫자값인
지시자는 값을 어떤 형식으로 출력할지를 지정하기 위해 사용한다.다음의 지시자들은 string.format()에도 이용가능하다.ex)
데이터를 입력받는 기능을 작은 프로그램으로 만든 것이 Scanner이다.scanner에는 nextLine()이라는 메서드가 존재한다이 메서드는 콘솔을 통해 문자열 데이터를 입력받는 기능을 수행함.입력받은 문자열은 inputValue에 할당되어 저장됨.
결과배열 안에 있는 배열을 가리키는 주소값이 차례로 출력제대로 출력되지 않는다.결과결과
객체는 다음과 같이 생성할 수 있다.(클래스명) (참조변수명) = new (생성자)();참조변수명에는 실제 데이터가 위치해 있는 힙 메모리의 주소가 저장된다.new 키워드는 힙 메모리에 저장하라는 것을 뜻한다.따라서 생성자로 객체를 출력하고 new키워드를 통해 힙메모리
구성요소 클래스는 4가지 구성요소로 이루어 진다. 필드, 메서드, 생성자, 이너클래스이다. > - 필드 : 클래스의 속성 메서드 : 클래스의 기능 생성자 : 클래스의 객체를 생성하는 역할 이너클래스 : 클래스 내부의 클래스 필드 클래스의 필드에는 3가지가 있다. 클
자바를 공부하다보면 public String toString()을 자주 마주치게 된다.이 것을 응용해서 사용하는방법과 용법에 대해서 이해한 바를 나타내고자 한다.다음과 같은 클래스가 있다고 하자.위의 Americano 클래스는 Coffee 클래스를 상속받고있다.그렇기
인터페이스는 애초에 미완성인 메서드를 가지고있기 때문에 동일한 이름의 필드 또는 메서드를 이용할 수 있다는 장점이있다.즉, 역할과 구현을 분리시켜 놓았기때문에 동일한 역할이어도 구현을 다르게 할 수 있게된다.따라서 인터페이스는 역할만을 가지고 있으며 그것에 의존하는 객
생성자는 어떨때 쓰는 것일까?기본적으로 생성자는 인스턴스를 생성할때 쓰지만, 다형성에도 주로 이용한다.(1)에 보면 super(4000);으로 상위클래스 Coffee의 생성자를 호출하고 있다.Coffee 클래스의 필드값 price는 설계상 하위클래스에의해 계속해서 그
다음과 같은 코드가 있다고하자카페 오너 입장에서 보면 CafeCustomer(A~Z)가 늘어날때마다 giveItem이라는 메서드를 새로 만들어 줘야할 것이다.만약이게 수천개라면? ---> 답이없다.그래서 인터페이스를 이용하여 CafeOwner랑 묶어주고 CafeCust
주로 몇 가지로 한정된 변하지 않는 데이터를 다루는데 사용여러상수들을 보다 편리하게 선언하고 관리할 수 있다상수명의 중복을 피할 수있다.타입에 대한 안정성 보장상수의 이름이 중복되어 컴파일에러 발생! 하지만,인터페이스로 해결은 가능하다위의 코드에서 Seasons.SPR
자바의 제네릭에서 와일드카드는 어떠한 타입으로든 대체될 수 있는 타입 파라미터를 말하며, 기호 ? 로 사용할 수 있다.일반적인 사용법은 extends와 super를 이용한다.위 클래스의 상속계층도는 다음과 같다faceId : 애플의 안면 인식 보안 기능으로, 아이폰만
에러 발생시점에 따라서 나뉜다. 세미콜론 생략, 오탈자, 잘못된 자료형, 잘못된 포맷 등 문법적인 문제신택스에러자바컴파일러가 오류를 감지하여 알려준다.컴퓨터가 수행할 수 없는 특정한 작업을 요청할 때 발생함런타임에러는 자바가상머신에 의해 감지됨.자바의 모든 에러와 예외

예외처리에 대한 예제를 공부하다가 Class.forName() 메서드를 보게되었는데, 이것이 어떻게 동작하는 지에 대해 찾아보게 되었다.다음 예제는 main메서드에서 throws 키워드를 이용하여 예외를 넘기는 것이다.이경우 자바 JVM이 최종적으로 예외의 내용을 콘솔

주로 인터페이스로 List, Set, Map 을 제공한다.여러데이터의 집합인 컬렉션을 다루기 위해 편리한 메서드들을 정의해놓은것데이터의 순서가 유지되며, 중복저장이 가능하다.객체가 인덱스로 관리된다.객체를 추가하면 자동으로 저장용량이 늘어난다.데이터가 연속적으로 존재한
JRE(Java Runtime Environment) 가 설치되어 모든 운영체제에서 독립적이다.객체지향 언어임, 유지보수가 쉽고 확장성이 놓다.함수형 프로그래밍을 지원하므로 컬렉션의 요소를 필터링, 매핑, 집계 처리하기 쉬워지고 코드가 간결해진다.가비지 컬렉터를 이용하
스트림을 공부하다보니 배열에 들어갈 각 요소들을 리스트에 담을때 2가지 방법으로 선언하는 것을 알 수 있었다.자바에서 Array를 List로 반환하기 위해서는 Arrays.asList(array)를 사용한다. 근데 List.of(array)도 같은 기능을 한다. 둘의