목록JAVA 문법 (40)
Super Coding Addict
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ck5TEo/btqV0E83pfG/YEpyyAfdOSwOdk5bkD2Khk/img.png)
* reduce() 연산 - 정의된 연산이 아닌, 프로그래머가 직접 지정하는 연산을 사용 - 배열의 모든 요소 합을 구하는 reduce연산 --> 연산이 간단하면 직접 구현 --> 연산이 복잡하면 BinaryOperator를 구현한 클래스를 넣으면 됨 * 예제 # ReduceTest 클래스 package ch12.stream; import java.util.Arrays; import java.util.function.BinaryOperator; class CompareString implements BinaryOperator{ @Override public String apply(String s1, String s2) { if(s1.getBytes().length >= s2.getBytes().lengt..
* 스트림 - 자료의 대상과 상관없이 동일한 연산 수행할 수 있는 기능 --> 자료의 추상화 - 배열, 컬렉션(ArrayList)에 동일한 연산이 수행되어 일관성있는 처리 가능 - 한번 생성하고 사용한 스트림 재사용 불가 --> 스트림 객체 새로 만들어야 함! ( 스트림은 원본 배열을 건드리는 게 아니라, another 메모리에서 하나씩 꺼내서 소모하는 연산이 이루어지므로 ) - 중간연산과 최종연산으로 구분되며, 최종연산이 수행되어야 모든 연산이 적용되므로 중간연산 결과를 도중 확인불가 * 스트림 연산 - 중간 연산 - filter() : 조건에 맞는 요소를 추출 ex) 문자열 길이가 5이상인 요소만 출력하기 sList.stream().filter(s-> s.length() >= 5).forEach(s ..
* 함수를 변수처럼 사용하는 람다식 - 변수 : 자료형에 기반하여 선언 / 매개변수로 전달 / 메서드의 반환값으로 사용 --> 람다식을 프로그램내에서 이러한 변수처럼 사용할 수 있다! * 예제 # TestLambda 클래스 package ch12.lambda; interface PrintString{ void showString(String str); } public class TestLamda { public static void main(String[] args) { PrintString lambdaStr = s->System.out.println(s); lambdaStr.showString("Test"); showMyString(lambdaStr); PrintString test = returnSt..
* 람다식 - 자바8부터 지원 - 자바에서 함수형 프로그래밍을 구현하는 방식 - 클래스 생성X, 함수의 호출만으로 기능 수행 * 함수형 프로그래밍 - 순수 함수를 구현, 호출 --> 외부변수 사용X ==> 매개변수만을 사용, 따라서 외부 자료에 부수적 영향(side effect) 발생X ==> 외부에 영향 미치지 않으므로 병렬처리등 가능, 안정적인 확장성 있는 프로그램 방식 * 람다식 문법 - 매개변수가 1개인 경우 괄호 생략 가능 (두 개인 경우 생략불가) str -> {System.out.println(str);} - 중괄호 안의 구현부 한 문장입면 중괄호 생략가능 str -> System.out.println(str); - 중괄호 안의 구현부가 한 문장이더라도 return문이면 중괄호 생략불가 st..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bFIq0p/btqUejsGHYh/rcIjGOtGoxMzMYmhMztrH0/img.png)
* 클래스에서 '상속' 의 의미 - 객체지향 프로그램의 특징! (C++, C#, Javascript에서 사용하는 상속의 의미와 동일) - 어떤 클래스가 있는데, 그 클래스보다 확장된 기능을 구현하겠다고 하면, 그 클래스의 기능과 속성을 상속받아 확장! - 코드 재사용되긴 하지만, 코드 재사용의 방법이라고 이해해선 안됨 - 이질적 클래스 간에는 상속을 쓰는 게 X - 상속하는 클래스 : parent class / 상속 받는 클래스 : child class (subclass) --> class B extends A - java는 상속이 1개밖에 안됨 ! (single inheritance만을 지원) cf. c++은 다중상속 가능 * 상속을 사용하는 경우 - 상위클래스 : 일반적 개념과 기능..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/1o4S7/btqT90SE5ct/C2XTsUTkW7O2uI66njKYx1/img.png)
* 다차원 배열 - 2차원 이상의 배열 - 지도, 게임, 평면, 공간 구현시 사용 arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2] - 메모리에는 일차원으로 만들어지지만! 논리적으로는 이런식으로 구성... - 예제 : 2차원 배열 [ TwoDimesion 클래스 ] package array; public class TwoDimension { public static void main(String[] args) { int[][] arr = { {1,2,3}, {4,5,6} }; System.out.println(arr.length);//2 (행의 갯수) System.out.println(arr[0].length);//3 Syste..