Study/Java 11

Java: Stream 이해하고 적용하기

Stream Java 8부터 람다 표현식(lamda expression)을 사용할 수 있게 되었고 같은 시기에 Collection의 Stream 클래스를 사용할 수 있게 되었다 Stream 동작 Collection(ArrayList, Set, Map 등), 배열, 가변 매개변수, 특정 타입 난수, 람다 표현식, 파일, 빈 스트림 등 다양한 범위의 데이터를 가공할 수 있다. Iterator과 비슷한 방식으로 동작한다. 데이터를 복사해서 가져온 뒤 사용자가 원하는 연산을 수행한다. 원본 자료 → Stream 데이터 형식으로 복사 → 내부 연산 → 출력 (데이터 소모) *이미 원본을 복사한 자료이기 때문에 최종 연산 이후 내부 자료들이 소모된다(재사용X) 즉, Stream은 복사한 원본을 이용해 사용자가 원하..

Study/Java 2021.11.12

Java: ArrayList 2차원 배열 생성

ArrayList 배열처럼 0부터 시작하지만 크기가 가변적이기에 활용도가 높다 값 추가 .add( 추가할 값 ); 값 제거 .remove( 제거할 값 ); 값 존재 확인 .contains( 확인할 값 ); ArrayList 크기 .size() (Java) 1차원 ArrayList 생성 import → 인스턴스 생성 import java.util.ArrayList; //util에서 import public class Main { public static void main(String[] args) { ArrayList arr = new ArrayList(); // ArrayList 리스트명 = new ArrayList(); }} (Java) 2차원 ArrayList 생성 import → 인스턴스 생성시 배..

Study/Java 2021.11.09

Java: String 문자열 비교에서 ==, != 아닌 equals() 메소드사용, Wrapper 클래스 값 비교(리터럴, new 연산자 생성)

String String은 int나 char 기본(Primitive type) 자료형과 근본적으로 다르다 String은 Wrapper class에 속한 객체며 참조형(Reference Type)이다 ​ String 데이터 생성하기 Wrapper class의 데이터 생성에는 2가지 방법이 있다​ 1. 리터럴 생성 public class Main { public static void main(String[] args) { String s = "문자열"; System.out.println(s); //"문자열" 출력 } } 2. new 연산자 이용 public class Main { public static void main(String[] args) { String s = new String("문자열"); S..

Study/Java 2021.11.08

Java: System.in.read(); 이해하기, 입력값을 알뜰하게 받기

System.in.read() Scanner, BufferedReader를 사용하지 않고 입력값을 받을 수 있다. 버퍼(InputStream)를 사용하기 때문에 효율적이며 IOException의 throw를 필수적으로 해주어야 한다. 문자를 하나씩만 가져올 수 있고 아스키 코드로 변환해 가져온다 예시를 통한 이해 import java.io.*; public class Main { public static void main(String[] args) throws IOException{ for(int i=0; i

Study/Java 2021.11.05

Java: 1차원, 2차원 배열 오름차순, 내림차순 정렬 요약과 이해

1차원 배열 정렬 java.util 안에 있는 Arrays 클래스를 가져온다 1차원 배열 오름차순 1차원 배열 내림차순 import java.util.Arrays; import java.util.Arrays; import java.util.Collections; Arrays.sort( 배열 ); Arrays.sort( 배열 , Collections.reverseOrder() ); int 배열 사용 가능 Wrapper Class 사용(Integer 등) *내림차순에서는 int가 아닌 Integer을 사용함에 유의한다 import java.util.Arrays; public class Main { public static void main(String[] args){ Integer[] arr = {3,5,2..

Study/Java 2021.11.01

Java: 배열의 초기값 ( String 배열의 초기값만 왜 null? )

배열의 초기값 배열을 생성할 때 선언한 데이터 타입의 default 값으로 배열이 채워집니다 int는 0, char은 '0' ... 데이터 타입 초기값 int 0 double 0.0 char '0' boolean false 하지만 String 이나 사용자가 만든 객체로 배열을 만들 때 null값이 default 값입니다. 왜 int, char 등은 null이 초기값이 아닐까요? 이들은 primitive 자료형이며 객체(Object) 유형만 null값을 지닐 수 있기 때문입니다 때문에 Wrapper class로 분류되는 String, Integer, Double 등으로 배열을 만들면 null값을 default값으로 얻을 수 있습니다 데이터 타입 초기값 String null Character Integer ..

Study/Java 2021.10.25

Java: if문을 더 짧게, 삼항 연산자

삼항 연산자: if-else의 축약형 condition ? expression1 : expression2 ; 조건(condition)이 참이면 expression1을 실행하고 조건이 거짓이면 expression2를 실행한다 실행한다는 특징 때문에 바로 조건문과 변수를 연결지을 수 있다 package ternaryOperator; public class TernaryOperator { public static void main(String[] args) { int sum = 67; String answer = sum > 70 ? "Yes" : "No"; System.out.println(answer); } }

Study/Java 2021.10.20

Java: 소수 표현, 소수 반올림 표기 - format, DecimalFormat

소수의 표기법 0.000 : 소수 마지막 자리에 0 있는 경우 표기하지 않는다 ex) 1.23450 → 1.2345 #.### : 모두 표기한다 ex) 1.23450 → 1.23450 String.Format [내부 메소드] String s = String.format( "%.3f" , double ); String 내부에 format이라는 메소드가 있다. double 형인 변수를 문자로 표현하면서 제한해주는 것이다. 소수 몇 번 자리까지 표기할 것인지 " " 안에 적어준다 DecimalFormat [클래스] DecimalFormat df = new DecimalFormat("0.0000"); String s = df.format( number ); 인스턴스를 만들어주고 내부의 format 메소드를 통해..

Study/Java 2021.10.14

Java: BufferedReader / Writer와 StringTokenizer의 개념과 이해

버퍼(Buffer) 일종의 데이터를 담아둘 수 있는 큐이다. 원래 사용자가 키보드에서 값을 입력할 때마다 입력값을 하나씩 전송하는데 이것은 효율이 낮다. 메모리 영역인 버퍼를 통해 데이터를 모아두고 일시적으로 보냄으로 효율을 높힌다. 문자열 데이터로 이동하며 Input와 Output의 버퍼가 각각 다르다. Stream 방식(단방향, blocking)으로 작동하고 입력은 InputStream, 출력은 OutputStream을 사용한다. 사용을 끝내고 닫아주지 않으면 메모리 누수가 발생한다. 입력(I): BufferedReader 사용자의 입력값(input)을 한번에 모아 전송한다. I/O와 관련한 IOException예외 사용이 필수다. 입력시 사용하는 Stream은 InputStream이며 시스템에서 입..

Study/Java 2021.10.10

Java: 아스키코드, Char, String 변환과 응용

아스키코드 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다. 아스키는 컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있다. A: 65번 / a: 97번 아스키 코드의 활용 아스키 코드는 개념 정도만 짚고 넘어가고 이 포스팅에서는 변환을 다룬다 1) String은 Char로 쪼갤 수 있고 각각의 Char은 아스키 코드로 변환 가능하다 2) 아스키 코드를 반복문 등에 넣어 문자를 이용한 조건문을 만들 수 있다 1) String의 Char 변환 (String to Char) 굳이 String에서 C..

Study/Java 2021.10.10