목록분류 전체보기 (413)
오답노트
예외 처리 예외 처리를 통해 프로그램의 비정상 종료를 피하여 시스템이 원할이 실행되도록한다. 그리고 log를 남겨 추후 log 분석을 통해 그 원인을 파악하여 bug를 수정하는 것이 중요하다. try - catch - finally import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileExceptionHandling { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("a.txt"); System.out.println("re..
스트림 자료의 대상과 관계없이 동일한 연산을 수행하고, 배열, 컬렉션을 대상으로 연산을 수행한다. 단, 한번 생성하고 사용한 스트림은 재사용 할 수 없다. 중간 연산 : 중간 연산은 여러 개의 연산이 적용될 수 있다. 하지만 그 결과는 최종 연산이 호출 후에 적용된다. 이를 지연 연산이라고 한다. (ex. filter, map,sorted 등) 최종 연산 : 마지막 한 번만 적용된다. (ex. sum, count, forEach) import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class ArrayListStreamTest { public static void main(String[] args..
함수형 프로그래밍 함수형 프로그래밍은 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향을 끼치지 않도록 구현하는 방식이다. 즉, 함수 내부에서 함수 외부에 있는 변수를 사용하지 않아 함수가 수행되더라도 외부에는 영향을 주지 않는다. 외부 자료를 사용하지 않기 때문에 병렬처리가 가능하다. 함수형 프로그래밍은 함수의 기능이 자료에 독립적임을 보장한다. 이를 동일한 자료에 대해 동일한 결과를 보장하고, 다양한 자료에 대해 같은 기능을 수행할 수 있다. 람다식 표현 public interface Add { public int add(int x, int y); } // Add.Java public interface Print { public void print(String str); } // Print...
지역 내부 클래스 말 그래도 클래스 안에 있는 클래스를 의미한다. 주의 해야할 점은 지역 내부 클래스는 스택 메모리에 잡히게 된다. 이때 지역 내부 클래스가 쓰레드 같은 경우에 지역 내부 클래스의 멤버 변수를 변경하려고 하면 에러가 발생한다. 그 이유는 스택 메모리에 생성된 변수가 사라지기 때문이다. 그래서 메서드 호출 이후에도 사용해야하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 매서드의 지역 변수나 매개 변수는 final로 선언된다. class Outer2{ int outNum = 100; static int sNum = 200; Runnable getRunnalbe(int i) { int Num = 10; class myRunnalbe implements Runnable { int l..
추상화 정의되지 않은 함수나 클래스를 의미한다. 추상화 클래스는 자식 클래스가 상속 받아 사용할 수 있다. 추상 클래스 선언 public abstract class Car { public abstract void drive(); public abstract void stop(); public void startCar() { System.out.println("시동을 켭니다"); } public void turnOff() { System.out.println("시동을 끕니다"); } final public void run() { startCar(); drive(); stop(); turnOff(); } } 추상 클래스 상속 public class AICar extends Car{ @Override publ..
인터페이스 인터페이스란 서로 다른 것을 소통할 수 있게 해주는 일종의 도구다. 우리는 컴퓨터와 소통하기 위해 키보드를 사용하고, TV와 소통하기 위해 리모컨을 사용한다. 이처럼 Java는 소통할 수 있는 도구를 만들 수 있는 인터페이스라는 것이 있다. 인터페이스는 함수를 가상화하여 가지고 있고, 구체적인 수행 내용은 클래스가 받아 정의를하게 된다. 그리고 Java는 다중상속이 불가능하지만 인터페이스를 통해 이 한계를 극복했다. 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공한다. 인터페이스 사용 인터페이스 생성 public interface Calc { double PI = 3.14; int ERROR = -99999999; int add(int num1, int num2); int subs..
static 변수 static 변수는 데이터 영역에 위치하게 되어 어디서든 호출 가능한 변수이다. 이를 이용해 디자인 패턴 중 하나인 싱글턴 패턴을 사용할 수 있다. 싱글턴 싱글턴 패턴은 단 한개의 인스턴스를 생성하여 사용하는 것을 의미한다. 논리적인 예를 들면 기업 같은 경우 절대 중복일 수 없다. (삼성전자가 두 개가 아닌 것처럼) 이때 기업을 싱글턴으로 만들어야 한다. 이 때 인스턴스를 static 변수로 만들어 전역으로 사용할 수 있도록 해야한다. 하지만 일반적으로 인스턴스를 생성하는 것처럼 사용할 수 없다. 아래 코드를 보며 싱글턴 패턴을 살펴보자. public class CarFactory { private static CarFactory instance = new CarFactory(); p..
유형 변수나 함수가 선언되는 위치에 따라 그 유형이 달라지게 된다. Local 일정 구역에서만 사용할 수 있는 변수, 함수는 스택 메모리를 사용하게 된다. 호출과 동시에 스택 메모리에 할당되며 지역을 벗어나면 스택 메모리에서 사라지게 된다. public class LocalTest{ void func(int n){ n += 1; System.out.println("func : " + n); } public static main(String[] args){ int n = 0; func(n); System.out.println("main : " + n); } } Member 클래스 내부에서 생성된 변수, 함수는 힙 메모리를 사용하게 된다. 힙 메모리는 동적 메모리로 나중에 가비지 콜렉터가 수거하기 때문에 따..

구글 맵 API Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 위 링크로 들어가서 본인 구글 계정을 API를 사용할 수 있도록 활성화 하고 프로젝트를 만든다. key 생성 및 제한 추가 좌측 탭에서 '사용자 인증 정보' 클릭 후 상단에 '사용자 인증 정보 만들기'를 클릭 해 API 키를 생성한다. 사진에는 API키가 생성되어 있지만 처음 접속한다면 없는 것이 정상. 생성된 API 클릭 위 사진처럼 세팅한다. 하지만 웹사이트 추가의 웹사이트의 주소는 자신의 환경에 맞게 설정하자. (나는 포트포워딩으로 외부에서 접속할 수 있도록 만들어 놨다. 그래서 공인IP와 열어 놓은 포트로 웹사이트를 설정했다.) API 키를 복사한다. (나중에 flutter..
Dart 시작하기 – 노마드 코더 Nomad Coders Flutter 앱 개발을 위한 Dart 배우기 nomadcoders.co 함수 정의 void sayHello(String name){ print("Hello $name nice to meet you"); } String sayHellopotato(String potato){ return "Hello $potato nice to meet you"; } String sayHellopotato_fatarrow(String potato) => "Hello $potato nice to meet you"; num plus(num a, num b) => a + b; void main() { print(sayHellopotato('ksw')); } 보통의 언어들..