Java
모던 자바 인 액션 reduce
모던 자바 인 액션 reduce
2022.06.06stream 과 parallel stream 차이 (Java 8) - A parallel stream has a much higher overhead to a sequential one. https://stackoverflow.com/questions/20375176/should-i-always-use-a-parallel-stream-when-possible?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa Should I always use a parallel stream when possible? With Java 8 and lambdas it's easy to iterate over collections as strea..
백기선 자바 스터디 1 - 과제
백기선 자바 스터디 1 - 과제
2022.02.14JVM이란 무엇인가 Java Virtual Machine에 약어이다. JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는것을 의미한다. 컴파일 하는 방법 개발자가 자바 소스코드(.java)를 작성한다. 자바 컴파일러가 자바 소스파일을 컴파일 한다. 이때 나오는 자바 바이트 코드(.class) 파일은 아직 컴퓨터가 읽을 수 없다. 컴파일한 바이트 코드를 JVM 클래스 로더에게 전달한다. 클래스 로더는 동적로딩을 통해서 필요한 클래스를 로딩 및 링크 해서 JVM의 메모리 영역에 올린다. 실행엔진이 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행한다. 실행하는 방법 java -jar [file-name].jar 로 실행한다. 바이트코드란 무..
Codeforces 풀이를 위한 JAVA 문법 정리-3
Codeforces 풀이를 위한 JAVA 문법 정리-3
2021.06.13시작 마지막으로 Java에서 활용할 수 있는 자료구조들과 정렬 방법에 대해 알아보겠습니다. Stack Stack의 가장 큰 특징인 Last In First Out 을 기억하고 있으면 해당 자료구조의 동작이 쉽게 이해될 것이라 생각합니다. 즉, 먼저 들어간 자료가 나중에 나오는 구조입니다. Stack에 가장 기본적인 문제로 boj.kr/10828 문제가 있습니다. 이 문제는 Stack에 대해 이해하고 제공하고 있는 함수에 대해 활용할 수 있는지 확인하는 문제입니다. ArrayList Java에서 ArrayList는 List 인터페이스를 상속받은 클래스로 일반 배열과는 달리 가변적으로 데이터를 저장할 수 있는 선형리스트 입니다. 즉, 배열과 달리 ArrayList 객체들이 추가되어 저장 용량을 초과하면 자동..
Codeforces 풀이를 위한 JAVA 문법 정리-2
Codeforces 풀이를 위한 JAVA 문법 정리-2
2021.06.13시작 앞 1에 이어서 static, final 구조 및 public, private 구조에 대해 살펴보겠습니다. 또, 배열 선언 방법과 자바에서 지역변수, 전역변수의 경우 초기화하지 않으면 발생하는 문제에 대해 알아보겠습니다. 수식자 수식자의 경우 클래스, 메서드, 필드에 대해 제약을 걸어주는 것입니다. 이 경우 public 과 private는 단어자체에서 알 수 있듯이 public의 경우 접근 제한이 없고, private는 자기 자신의 클래스 내에서만 접근이 가능한 경우입니다. 그래서 보통의 경우 public으로 수식어를 붙여 사용합니다. 함수를 생성할 때 수식자를 작성해주지 않으면 default로 public으로 선언됩니다. 이 다음으로는 static, final에 대해 알아보겠습니다. final 수..
Codeforces 풀이를 위한 JAVA 문법 정리-1
Codeforces 풀이를 위한 JAVA 문법 정리-1
2021.06.13시작 Codeforces를 위해 간단히 몇가지 사항들을 정리해봅니다. 1에서 알아볼 건 기본 입출력, 자료형, 반복문, Call By Value ❌ Call By Reference 입니다. 입출력 Java 입출력에는 BufferedReader 버퍼를 이용해서 쓰는 함수를 활용합니다. 이외에도 Scanner를 사용하기도 하지만 속도가 상대적으로 빠르기 때문에 BufferedReader를 사용합니다. 특히, 공식문서에서 입력 스트림에서 문자를 읽을때 효율적으로 읽기 위해 문자를 버퍼에 저장하는것을 권하고 있습니다. 관련해서는 하기 링크를 참조 부탁드립니다. https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html BufferedReader ..
Java07 :: Map - keySet(), ContainsKey
Java07 :: Map - keySet(), ContainsKey
2020.02.08오늘 문제를 풀다가 위 두 핵심적인 함수를 몰라서 정리해두려고 합니다. keySet() 은 HashMap 에서 key 를 알 수 있게 도와주는 함수 입니다. ContainsKey('key') = true/false 로 key 값이 있다면 true 그렇지 않다면 false를 return 합니다. 1 2 3 4 5 6 7 8 9 10 map.put('sonic', 1); //map 을 하나 put 받았을 때 for(String key : map.keySet()) String value = map.get(key) //위 for 문을 통해서 value는 실제 sonic 에 담겨져 있는 1의 값을 //key는 sonic 값을 받아 옵니다. Colored by Color Scripter cs
Java06 :: [윤열프]실행 흐름의 컨트롤
Java06 :: [윤열프]실행 흐름의 컨트롤
2019.03.01* if문과 if~else 문 조건을 나타내는 것이다. * 자바는 if , else if, else if, else 이런식으로 쓴다. * > ? : 이런 조건연산자가 있는데 굉장히 유용하다. 12int bbig;bbig = ( num1 > num2 ) ? num1 : num2cs조건이 맞으면 num1이 아니면 nun2가 저장된다. * switch 와 break123456789101112switch(n){ case 1: case 2: ... default : }//중간마다 break; 는 반드시 넣어야 한다. 그렇지 않으면 다음 case도 실행되서 결국에는 //default도 실행된다. Colored by Color Scriptercs특히, n에 따라서 case 앞에 1,2,3, 이 결정되는거라면 / 나 ..
Java05 :: [윤열프] Operators
Java05 :: [윤열프] Operators
2019.02.28본 내용은 윤성우의 열혈 프로그래밍 관련 책에서 학습한 내용을 정리한 것입니다. * 연산자 순위 * / % 모두 같은 순위다. => 진행 방향이다. 그외는 모두 찾아보면 된다. * 나눗셈과 나머지 나눗셈과 나머지는 큰 수에 한 자리씩 catch 할때도 유용하고 여러모로 쓰이는 곳이 많다. % 나머지 / 몫 * 복합 대입 연산자 쉽게 한문장으로 쓸 수 있다. 예를 들면, a = a+b 를 a+=b 로 쓸 수 있다. * 관계 연산자 = 익히면 될듯 하다. * 논리 연산자 && , ||, ! * Short - Circuit Evaluation &&, || 연산자를 쓰면 발생하는 문제로 (num2 -= 10) && (num2+=29) >0 앞에서 이미 false 이면 뒤에는 나가게 된다. 또, (num1+=20..
Java04 :: [윤열프]제네릭1-2
Java04 :: [윤열프]제네릭1-2
2019.02.28* 제네릭 클래스의 타입 인자 제한하기특정 클래스에서 인스턴스를 참조하게 되면 어떤 클래스 인스턴스를 참조하는것인지 알 수 없다. 그래서 인터페이스로 제한하는 방식이 있다.1234567891011interface function{ public String fun();} class Bo{ T ob; public T get(){ System.out.println(ob.fun); //가능하다. }}Colored by Color Scriptercs* 제네릭 메소드의 정의메소드 뿐만 아니라 클래스 에서도 제네릭 메소드를 정의하는것이 가능하다. 핵심은 타입 매개변수를 표시해주는 것인데1public static Bo makeBox(T o) //는 T가 타입 매개변수임을 알린다.cs12Bo sBo = BoFa.makB..
Java03 :: [윤열프]제네릭1
Java03 :: [윤열프]제네릭1
2019.02.25제네릭, 나는 템플릿이란 용어가 더 익숙하다. 일반화란 의미로, 지정해 두면 사용하고자 하는 데이터타입으로 변환시킬 수 있다. 그렇다면 왜 제네릭이 등장한 것일까? 제네릭은 일종에 불편함을 해소하기 위함이다. 가령 이런 생각을 해보자. 특정 인스턴스를 받는 클래스내 메소드가 있다고 하자. 클래스내 메소드는 인스턴스를 담지만 인스턴스화된 메소드에 접근하기 위해서는 각각 다른 인스턴스를 선언하고 알맞게 형변환 해주어야 한다. 그런데, 이때 만일에 문자열을 담는다 하더라도 큰 문제가 발생하지 않는다. 역으로 이를 출력하고자 할때 형변환이 이루어지는데 여기서 ERROR가 발생하게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class boy{ ... "남자아이" } class girl..
Java02 :: [윤열프]자바의 기본 클래스
Java02 :: [윤열프]자바의 기본 클래스
2019.02.22Chapter 20에서 처음으로 알아볼 것은 Wrapper 클래스 이다. 1. 기능에 포커스를 맞춰봐야 하는데, Boxing 과 Unboxing 이다. Boxing은 일종에 인스턴스를 생성할때 그리고 값을 변수에 넣을때의 과정이라 이해하면 좋고, Unboxing은 인스턴스에서 생성한 값을 꺼내오거나 변수에 저장된 값을 다른 변수에 저장하는 과정으로 보면 될것 이다. 1 2 3 4 Integer iObjj = new Integer(10); //Boxing int nnum1 = iObjj.intValue(); //Unboxing //출력값 10 Colored by Color Scripter cs 여기서 , AutoBoxing 과 Autounboxing 이라는것 이 있는데 쉽게 얘기해서 인스턴스를 생성하지 않..
Java01 :: [윤열프]Java Chapter1~3
Java01 :: [윤열프]Java Chapter1~3
2019.02.211. 자바를 시작해보자 가장 우선으로 JDK를 다운을 받습니다. 최신버전을 찾아보니, Java SE Development Kit 8 Downloads 이니 이부분을 찾아서 다운 받아 본다. 자신의 OS(Windows/Mac/Linux 등)에 맞춰서 잘 다운받아보자! 2. 자바 SE API 문서 앞으로 개발을 위해서는 참조할것이 있다. 공식 문서를 참조하면 Java Version에 따라 API문서를 확인해 볼 수 있다. 여러 API가 있다. 3. 환경변수를 설정해 줘야 한다. JDK만 깐다고 완성 되는 것이 아니라, 환경변수를 설정해야 하는데, path를 입력해 줘야만 운영체제가 찾아갈 수 있는 길을 확보하는것이다 라고 생각 하면 되겠다. 3-1. JDK가 깔린 위치를 알아야 한다. (C:\Program ..