Java
-
[Java] Code Convention(코드 컨벤션)Java 2021. 11. 10. 14:13
Code Convention Code Conventions을 직역하면 "소스코드의 관습"입니다. 즉, 프로그래머 사이에서 약속한 코드 작성 양식인데 컴파일에러가 나는 문법 오류와 달리, 지키지 않아도 오류는 나지 않습니다. Code Convention 왜 지켜야 할까? 우리가 개발을 혼자 담당한다면 내가 이해하기 편하면 그만입니다. 하지만 어떤 프로젝트에 대해서 내가 항상 관리하는 것은 불가능하고 다른 개발자가 소스 코드를 보았을 때 빠른 시간에 이해할 수 있는 코드가 좋은 코드라고 생각합니다. 그렇기 때문에 Code Convention을 지키게 되면 여러 명이 협업할 때 일관된 코드 스타일을 유지하며 가독성을 높이고 생산성을 증가시킬 수 있습니다. Code Convention은 어떻게 지켜야 할까? 컨..
-
[Java] StringTokenzier 와 split 의 차이Java 2021. 11. 10. 01:02
개요 문자열을 원하는 구분자로 나누기 위해서는 보통 Stringtokenzier와 split를 사용합니다 두 가지의 차이점이 무엇일지 궁금해서 알아보고자 합니다. split 메서드 String클래스의 메소드입니다. 구분자 사이에 값이 없으면 공백으로 들어갑니다. StringTokenizer 메서드 지정한 한 가지 구분자로 문자열을 나눌 수 있습니다. 구분자를 생략하면 공백이 기본 구분자 구분자 사이에 값이 없으면 결과에서 생략됨 StringTokenizer와 String.split()의 차이 String.split()은 정규표현식을 사용하기 때문에 StringTokenizer가 속도 측면에서 성능이 좋습니다. StringTokenizer는 단순한 문자로만 쪼갤 수 있기 때문에 가변적인 요소가 많은 문자열..
-
[Java ] String, Stringbuffer, Stringbuilder의 차이 및 장단점(+속도 비교)Java 2021. 11. 9. 02:06
개요 Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있습니다. 연산이 많지 않을 때는 어떤 클래스를 사용하여도 크게 문제가 없으나 연산 횟수가 많아지거나 멀티스레드, Race condition 등이 자주 발생한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 합니다. Race condition이란? 두 개의 쓰레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말합니다. String은 불변(immutable)하다. String이 StinrgBuffer/StringBuilder 클래스와 가장 큰 차이점은 String은 불변(immutable)의 속성을 갖는다는 점입니다. String str = "hello"; /..
-
[Java] 공식문서 보는 법Java 2021. 11. 7. 18:25
개요 보통 구글링 하여 클래스나 메서드의 사용방법을 찾아보면 쉽게 정리된 글을 찾을 수 있지만 많은 사람들이 다루지 않은 클래스, 메서드 또는 새롭게 나온 기술의 경우에는 정리된 글을 찾을 수 없기 때문에 공식문서 보는 연습을 시작하기로 하였습니다. API 사용방법 알아보기 API는 Application Programming Interface의 약자입니다. 자바의 공식 사용 설명서는 검색창에 api documentation java라고 입력하면 Oracle에서 제공하는 Java 문서 사이트를 찾을 수 있습니다. 버전은 자신이 사용하는 Java의 버전에 맞게 선택해서 참고하면 됩니다. 참고자료 https://velog.io/@muz/Java-%EA%B3%B5%EC%8B%9D%EB%AC%B8%EC%84%9C..
-
[Java] 자바 컬렉션 프레임워크(Java Collections Framework)Java 2021. 11. 7. 03:36
개요 다양한 알고리즘 문제를 접하게 되면서 문제를 이해하고 쉽게 푸는 측면에서와 시간 복잡도 측면에서 어떤 자료구조를 사용하는 것이 효율적인지 고민하게 되어서 JCF(java collections framework)에 대해 찾아보게 되었습니다. Java Collections Framework(JCF)란 무엇일까? 배열을 사용하다가 보면 크기가 고정적이어서 메모리가 낭비되거나 크기를 넘어서게 될 때 데이터를 저장할 수 없어서 비효율적인 문제가 발생하는데 이를 해결하기 위해 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)할 수 있는 자료구조를 만들어 놓았으며 이 라이브러리를 컬렉션 프레임워크라고 합니다. 자바에서의 자료구조 유형 순서가 있는 목록인 List 순서가 중요하지 ..
-
[Java] Scanner 와 BufferedReader의 차이점Java 2021. 11. 5. 13:45
두 클래스는 모두 자바에서 입력을 받는 데 사용이 됩니다. BufferedReader 우선 BufferedReader는 InputStreamReader에 버퍼링 기능이 추가된 Class입니다. 사용자가 요청할 때마다 데이터를 읽어 오는 것이 아닌 일정한 크기의 데이터를 한 번에 읽어와 버퍼에 보관한 후, 사용자의 요청이 있을 때 버퍼에서 데이터를 읽어오는 방식으로 동장 합니다. 입력받은 타입은 String 타입으로 공백의 경우에도 String으로 인식하여 받아들입니다. InputStreamReader란? 문자열은 character 단위로 읽어 들입니다. 이는 긴 문자열을 읽을 때 비효율적이어서 이를 보완하고자 BufferedReader가 존재합니다. Scanner 공백과 줄 바꿈을 모두 입력값의 경계로 ..
-
[Java] equals 와 ==의 차이점Java 2021. 11. 3. 18:15
개요 알고리즘 문제를 풀다 ==의 경우에 풀리지않고 equals를 써야 풀리는 부분이 있어 궁금해서 찾아보게 되었습니다. 공통점 이 둘은 모두 양쪽의 내용을 비교하여 boolean type으로 반환한다는 공통점을 가집니다. 차이점 1) 형태의 차이 - (메소드와 연산자) equals() 는 메소드 이며 == 은 비교를 위한 연산자입니다. 2) 주소값 비교와 내용 비교 equals 메소드는 대상의 내용 자체를 비교하지만, == 연산자는 비교하고자 하는 대상의 주소값을 비교합니다. *Object 클래스에서는 주소값을 비교하지만 String클래스에서는 equals 메소드를 오버라이딩하여 내용을 비교하도록 합니다. 실습 예를 들어, String 클래스를 이용해 문자열을 생성해보겠습니다. String a = "a..
-
[Java] 자바의 Hello WorldJava 2021. 10. 29. 03:02
개요 자바에서 기본적으로 제공해주는 public static void main 구문에 대한 궁금증이 생겨 왜 그렇게 사용하는지 알아보고자 합니다. 자바 Public Class와 소스파일 네이밍 class Hello { public static void main(String[] args) { System.out.println("Hello, world."); } } 위는 Java를 사용하여 Hello, world. 를 출력하는 코드입니다. 자바에서 모든 코드는 반드시 클래스 안에 존재해야 하며, 이 클래스들이 모여 하나의 Java 애플리케이션을 이룹니다. 하나의 소스파일에 하나의 클래스만을 정의하는 것이 보통이지만, 하나의 소스파일에 둘 이상의 클래스를 정의하는 것도 가능합니다. 이때 주의해야 할 점은 '소..