JVM(Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체 CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행 시켜주는 역할 Class Loader 자바에서 소스를 작성 -> Item.java처럼 .java 파일이 생성 .java 소스코드를 자바 컴파일러가 컴파일 -> Item.class 같은 .class파일(바이트코드)가 생성 생성된 클래스 파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리영역인 Runtime Data Area로 적재하는 역할을 Class Loader가 수행 Execution Engine Class Loader에 의해 메모리에 적재되 ..
자바 설치 아래의 URL에서 필요한 JAVA 버전 다운로드 https://www.oracle.com/java/technologies/javase-downloads.html\ 자바 환경 변수 설정 내 PC 우 클릭> 속성 > 고급 시스템 설정 > 환경 변수로 이동 시스템 변수 새로 만들기 변수 이름 : JAVA_HOME, 변수 값 : 다운로드받은 Open-JDK 경로 입력 후 확인버튼 클릭 ( ex : C:\Program Files\Java\jdk1.8.0_202 ) 변수 이름 : CLASSPATH, 변수 값 : %JAVA_HOME%\bin Path 시스템 변수 편집 새로만들기 > %JAVA_HOME%\bin 입력 > 확인 버튼 클릭 환경 변수창의 확인 버튼을 누른 후 시스템 창을 닫는다. 자바 버전 변경..
컬렉션 프레임워크 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 자바에서 제공하는 Collection은 크게 3가지 인터페이스로 나뉘어짐, List(리스트), Queue(큐), Set(집합) 아래의 그림에는 없지만 Map(맵) 인터페이스도 제공하고있다 List(리스트) 대표적인 선형 자료구조 주로 순서가 있는 데이터를 목록으로 이용할 수 있도록 만들어진 인터페이스 같은 요소의 중복 저장을 허용 List Interface를 구현하는 클래스 ArrayList LinkedList Vector Stack List Interface에 선언된 대표적인 메소드 Queue(큐)..
람다식 Java SE 8에서 새로 도입 함수를 하나의 식(expression)으로 표현한 것 익명 함수(Anonymous functions)를 지칭하는 용어 익명함수(Anonymous Function)란 함수의 이름이 없는 함수로, 익명함수들은 모두 일급 객체 기존의 불필요한 코드를 최소화하고 가독성을 높인다. 기존 메소드 생성 반환티입 메소드명 (매개변수, ...) { 실행문 } int multiply(int x, int y){ return x * y; } (x,y) -> x * y 람다식 생성 (매개변수, ... ) -> { 실행문 ... } (x,y) -> x * y 람다식 장단점 장점 코드의 간결성 - 람다를 사용하면 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현 지연연산 수행 - ..
ex) FileExample5 package kr.ac.daegu.bsy; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayOutStreamTest { public static void main(String[] args) { System.out.println("FileExample5"); // p.487 ~ p.488 String msg = "ByteArrayOuter test"; ByteArrayOutputStream bao = null; try{ bao = new ByteArrayOutputStream(); bao.write(msg.getBytes()); System.out.println("b..
File 자바에서 파일이나 디렉터리를 다룰 수 있도록 제공해주는 클래스 File 클래스에서 제공되는 주요 생성자,메소드는 p470 ~ p471 참고 ex) FileExample 이 예제를 실행하기 위해 C: 아래에 data 디렉터리를 생성해야한다 package kr.ac.daegu.bsy; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.Scanner; public class FileTest1 { // 확장자가 ".jpg"로 끝나는 파일 이름을 필터링해주는 클래스 public static class ImageNameFilter implements FilenameFilter{ @Ov..
main.java package kr.ac.daegu.bsy; import java.time.LocalDate; import java.time.LocalDateTime; public class Main { public static void main(String[] args) { System.out.println("DateTimePractice"); // 현재 날짜 출력 LocalDate currentDate = LocalDate.now(); System.out.println(currentDate); // 날짜를 직접 지정해서 출력 LocalDate targetDate = LocalDate.of(2021,8,11); System.out.println(targetDate); // 현재 시간 출력 LocalD..
인터페이스 특정 형태의 클래스들이 사용할 수 있는 메소드 명세를 정의하는 단위 추상 클래스와 비슷한 기능을 제공 추상 클래스 : 일반 변수, 일반 메소드 정의 가능 인터페이스 : 오직 상수나 추상 메소드만 정의 가능 Business.java package kr.ac.daegu.bsy; class OracleConnector implements Connector{ @Override public void connect(){ System.out.println("Oracle 연결됨"); } } class MySQLConnector implements Connector { @Override public void connect() { System.out.println("mySQL 연결됨"); } } class Co..
생성자 this() 자기 자신 클래스의 다른 생성자를 호출하기 위해 사용되는 생성자 코드의 간결성(중복코드 제거를 위해 사용) House.java package kr.ac.daegu.bsy; class House { int price; String dong; int size; String kind; public House(){ //System.out.println(this보다 앞에서 실행"); this(100,32,"상계동","아파트"); } public House(int price){ this(price,32,"상계동","아파트"); } public House(int price,int size){ this(price,size,"상계동","아파트"); } public House(int price,int ..