자바의 특징 C와 달리 운영체제(windows, mac, linux 등등)에 종속적이지 않다. 객체 지향 언어 여러 플랫폼, 안드로이드, 웹 등 다양한 분야에 사용 가능 자바 vs C 각자 운영체제에 맞는 버전으로 하나하나 만들어야 함, 비효율적 스크린샷2019-06-26오후_12.27.37.png jvm - 각 운영체제에 맞에 자바 ...
자바 개발 설치와 환경설정이 궁금하다면 -> https://blog.naver.com/max9106/221571175654 이클립스에 대해 궁금하다면 -> https://blog.naver.com/max9106/221573790279 (velog로 이전하기 전의 블로그이다.) 자바 화면 출력 System.out.prinln("~"); -> 괄호 안의 쌍따...
변수 프로그램이 실행되면 메모리를 사용하여 정보를 기억시킨다. 메모리에 변수를 할당하고 필요할때마다 가져와서 사용 컴퓨터는 모든 신호를 숫자로 인지(문자라도 모두 0과1로 나타냄) -> 변수 = 변하는 수(덮어쓸 수 있다.) 스크린샷2019-08-12오후_3.12.19.png 상수 변할 수 없는 수 변수앞에 final을 붙여주면 상...
제어문의 종류 1) if문 2) switch문 Tip) =이 하나일 때는 대입 / == 일 경우에는 비교 if문 스크린샷2019-08-12오후_11.23.28.png 조건은 true 아니면 false 두가지 경우밖에 없음 == , = 등의 부등호를 통해 조건을 나타낼 수도 있고, 바로 true(1) or false(0)값(boo...
Scanner scanner는 입력을 받을 수 있게 해주는 것이다. class 변수 타입이기 때문에 상단에 import 해주어야한다. import java.util.Scanner; 기본 선언 방법 Scanner sc = new Scanner(System.in); Scanner 변수 타입의 변수 sc에 새로운 Scanner 할당하기 위해 시스템에 요청. ...
Random 랜덤하게 수를 정해주는 클래스 Random 클래스 타입을 선언하여 메모리를 확보해준다. Random random = new Random(); 정수형 랜덤 값 int r_value=random.nextInt(); 무작위의 정수 값을 r_value에 넣어준다. 음수, 양수, 엄청 큰 수 모두 나온다. 이를 방지하기 위해 nextInt의 괄호안...
반복문 코드를 자동으로 반복시켜주는 것 반복문의 종류 1) for 2) while(do while 포함) for문 int i = 0 //나를 도와주는 변수 정의 i<10 //조건 i++ //나를 도와주는 변수 업데이트 for문은 조건 검사 후 참일경우 for문 내부를 실행하고 다시 돌아와서 조건을 검사한다. 조건이 ...
배열 하나의 변수이름 안에 여러 값이 들어가 있는 것 같은 타입의 변수가 연속적으로 사용될 때 사용 실제 메모리상에 값이 들어가는 형태 예시 스크린샷2019-08-16오전_1.19.16.png 스크린샷2019-08-16오전_1.24.57.png Tip) 배열 안의 값이 어떤 것이 들어갈 지 모르는 경우 배열의 크기만...
객체지향 프로그래밍이란? 코드를 짤 때, 객체 중심으로 뭔가를 붙인다. 객체 안에 기능도 포함된다. 객체지향 프로그래밍의 특징 추상화(abstraction) 실제 세상을 프로그래밍으로 옮길 수 있게, 필요한 기능들만 가져와서 단순화 캡슐화(encapsulation) 보안적인 기능에 도움을 줌, 규칙 정의, 사용 용도 명확히. 안에 있는 값을 노출하지 않음...
상속 객체 지향의 꽃 재 사용성 코드 양이 줄어듬 부모만 수정해도 부모 기능을 상속 하는 자식 객체들의 기능도 수정 됨(유지 보수 편리) 여러명의 자식이 한 부모의 기능 상속 가능 부모가 다른 클래스를 상속하고 있는 경우, 자식 클래스도 자동으로 부모가 상속하고 있는 클래스의 기능까지 상속받는다. Tip) 부모클래스는 자식클래스의 기능 사용할 수 없다. ...
자료구조란 메모리크기는 한정적 -> 유동적으로 메모리 할당(필요할 때마다 메모리 할당) -> 비효율적인 메오리 낭비를 막을 수 있게 해줌 원하는 결과를 빠르게 ArrayList key와 value의 쌍. key값은 인덱스이고, value값은 실제 값이다. 이때 key값은 숫자만 가능하다. 기존 배열은 크기를 미리 지정하여, 메모리를 미리 할당받지만, Ar...
try catch 파일 입출력 시, try catch가 중요하다 프로그램 실행 시, 오류가 발생하면 그 오류에 대한 대처를 할 수 있게 해주는 것 에러가 발생한 정확한 위치 파악. 상세 정보 catch구문은 여러개 사용가능. Exception의 종류도 많음 try안에서 짠 구문에서 에러가 발생하면, catch안에 있는 것들이 실행되며 에러를 뿌려줌 파일 ...
쓰레드 프로그램의 하나의 흐름. 일을 처리하는 사람 프로그램이 시작되면 os가 프로그램에 허가를 주고, 쓰레드가 부여된다. 이때까지 코딩한 것들은 전부 단일쓰레드 프로그래밍이다. 스크린샷 2019-12-21 오전 10.27.21.png 단일 쓰레드 프로그래밍의 문제점 무언가를 하고 있으면 다른 것을 할 수 없다.(동시에 어떤 일을 할 수 ...
Override 자식이 부모클래스를 extends 하고 있을 때, 자식 클래스에서 부모클래스가 가지고 있는 메소드를 같은 타입과 같은 이름으로 사용할 경우, 재정의(override) 한다고 말한다. ex. 스크린샷 2019-12-23 오후 12.01.55.png Overload Overload는 메소드의 이름은 같지만, 인자의 수나, 자...
Interface 어떤 규칙을 강제하고 싶은 경우 규칙을 정의하는 방법 중 하나. 실제 기능을 구현하지는 않고, 정의만 해준다. ex. Interface를 사용하기 위해서는 사용할 클래스에서 implements 해줘야한다. implements 시, 해당 interface에 있는 메소드는 implements한 클래스에서 재정의 해주어야 함. Tip) 멀...
static 메모리 주소 값이 '정적이다'는 뜻( dynamic(메모리 주소 값이 동적이다)) 프로그램 시작 시, 메모리의 위치가 정해지는 것.(어느 패키지에 있던 찾을 수 있다.) 어느 정도의 용량을 미리 확보. Tip) 이때까지 일반적으로 사용 하던 변수는 동적으로 사용하던 것이다. ex. String a = ""; static 변수와 일반 변수 비...
instanceof 어떤 계층에 속하는지. 클래스의 등급 ex. 위와 같이 unit과 unit을 상속받은 enemy라는 class가 있을 때, unit과 enemy의 기능이 유사하다. 이 때, unit class인지 enemy class인지 구분할 때 사용하는 것이 instanceof이다. ex. Tip) 클래스가 상속 관계에 있을 시, 자식 클래스...
참조 변수도 형 변환이 가능한데, 서로 상속 관계에 있는 클래스 사이에서만 형 변환을 할 수 있다.자손타입 -> 조상타입 일 때 캐스트 연산자를 생략할 수 있는 이유는 자손타입이 조상타입보다 사용할 수 있는 멤버 수가 많기 때문에, 조상타입으로 형 변환 시 참조 변수가
상속 관계에 있는 클래스가 존재할 때, 조상 클래스와 자손 클래스의 같은 이름의 인스턴스 변수가 있는 경우, 클래스 타입에 따라 사용되는 변수가 달라진다.Child가 Parent의 자손이고 둘다 x라는 인스턴스 변수를 가지고 있는 상태에서 아래와 같이 사용하면p.x와
데이터를 다룰 때 컬렉션과 배열을 사용하는데 각 컬렉션 마다 같은 기능을 하는 메서드들이 중복 정의되어있다. 이런 문제점을 해결하기 위해 나온 것이 스트림이다.스트림은 데이터 소스(배열, 컬렉션, 파일)를 추상화하고 데이터를 다루는데 자주 사용되는 메서드들을 따로 정의
컬렉션, 배열 등 데이터 소스에 따라 Stream<T>를 생성하는 방법을 정리해둔다.stream()메서드를 호출해서 생성한다. 컬렉션의 최고 조상인 Collection에 stream()메서드가 정의되어 있으므로 모든 컬렉션 클래스들은 .stream()으로 스트림을
스트림의 일부를 잘라낸다.skip(n): 처음 n개의 요소를 건너뛴다.limit(n): 스트림의 요소를 n개로 제한.filter(): 주어진 조건에 맞지 않는 요소를 걸러낸다.distinct(): 중복된 요소를 제거한다.sorted(): 매개변수로 comparator나
만들어진 스트림의 요소를 소모하여 결과를 만들어내는 연산. 최종 연산 후에는 스트림이 닫히게된다. 값은 단일 값, 배열, 컬렉션이 될 수 있다.forEach(): 주로 스트림의 요소를 출력하는데 많이 쓰인다. allMatch(): 지정된 조건에 모든 요소가 일치하는지
(출처: https://www.inflearn.com/course/the-java-code-manipulation)자바 가상 머신의 약자이며, 바이트 코드(.class)를 OS에 맞는(OS가 이해할 수 있는) 코드로 변환해준다.OS에 맞는 코드로 변환해주기 때
메소드를 하나의 식으로 표현한 것. 익명 함수를 줄여서 쓰는 식이다.함수형 인터페이스를 구현할 때 쓰는 람다 형태의 표현식이다.(함수형 인터페이스를 인라인으로 구현한 오브젝트)위와 아래의 코드는 같은 코드이다.람다식은 매개변수, 리턴 타입, 변수로 만들 수 있다.람다식
자바에서 기본으로 제공하는 함수형 인터페이스 Function T타입의 값을 받아서 R타입의 값을 리턴하는 함수. apply 메소드만 구현하면 된다. .compose()와 .andThen()을 사용해서 함수를 조합할 수 있다. .compose(Function): 매개변
자바8에 추가된 새로운 인터페이스이다.값이 없을수도 있고, 하나의 값을 담고 있을 수도 있는 인스턴스 타입이다.Optional이 나오기 전까지는 하나하나 null 체크를 해주어야했다.하지만 null체크를 까먹을수도 있고, null을 리턴하는 것도 문제다.null을 리턴
생성 후에 내부의 값을 바꿀 수 없는 객체를 말한다.자바에서는 대표적인 불변객체로 String을 예로 들 수 있다.위의 코드는 string이라는 변수의 값이 바뀐 것 처럼 보이지만, 실제로는 "def"라는 새로운 객체가 생성되고 string변수가 "def"를 가리키게
생성자를 통해 초기화 할 때, 새로운 객체로 감싸서 복사해주는 방법이다.만약 생성자에서 유효성 검증이 필요하다고 하자. 일반적으로는 아래와 같이 넘어온 값을 검증하고 객체 내부변수에 검증된 값을 할당해주는 순서가 맞다고 생각할 수 있다. 하지만 Date같은 경우는 값이
자바 프로그램이 실행되는 동안 가장 많이 생성되는 객체String string = new String("abc"); 로 사용하지 말 것(객체 생성 비용 발생)String string = "abc";로 사용한다. 이 경우도 처음 호출된 경우 생성되지만 Java Heap안
Generic이란 클래스의 타입을 클래스 외부에서 설정해주는 것이다. 다양한 종류의 데이터를 다룰 때 데이터의 타입을 특정 타입으로 고정시켜 줄 수 있다.위의 코드는 제네릭을 사용하지 않고, 다양한 종류의 데이터를 다루고 있는 코드이다. "a"와 1 앞에 (Object
상수 객체의 모음집이며, 서로 관련있는 상수 값들을 모아서 사용할 때 유용하다.상수의 역할을 하고, 각 상수가 객체이므로 프로퍼티나 메소드를 가질 수 있다.상수의 역할을 하지만 클래스이기 때문에 생성자를 가짐(무조건 private)내부 상수객체들은 각각 메모리에 하나만
Map 인터페이스 중 key 값으로 enum의 상수 객체만 사용하도록 하는 구현체.enum은 ordinal이라는 순차적인 정수 값(enum에 명시된 순서)을 가지고 있기 때문에 해싱 작업 없이 내부 데이터를 배열에 저장한다. 해싱 작업이 없기 때문에 성능은 HashMa
checked exception(compile time exception): 확인을 해야하는 예외. 본인이 처리하든지, 부모나 클라이언트에게 다시 던져줄지 결정. 무시할 수 없음. 무시하면 컴파일 에러 발생. Exception 상속unchecked exception(r
서블릿에 대해 위키 백과에 검색해보면 아래와 같이 나온다.자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다솔직히 무슨 말인지 잘 와닿지 않는다.내가 이해한 서블릿은 클