본문 바로가기

Java

(14)
배열의 크기는 왜 입력받은 [N+1] 크기로 지정하는것일까? 코딩테스트를 연습하다보면 마주치는 문제여서 궁금해서 개인적으로 찾아보게되었다.  예를들어  1 여기서 생각한게 배열의 크기가 1000이라고 생각하였으므로 배열의 크기를 1000이라고 생각하게 된다. int[] arr = new int[N]; arr을 초기화할때1. 배열의 크기를 입력받은 N으로 지정하는 경우 2. 배열의 크기를 입력받은 N+1으로 지정하는 경우 - new int[N+1]3. 배열의 크기를 1001 이라고 명시적으로 표현하는경우 - new int[1000]4. 배열의 크기를 1000 이라고 명시적으로 표현하는경우 - new int[1001]이렇게 4가지 경우가 있다.결과적으로 말하면 N개의 배열만 사용할거라면 1~4번중 어느것으로 초기화해도 문제되지 않는다. 그런데 왜 사람들은 2번이나 3..
this 란 무엇일까? 문득 메소드 내부에서 사용하는 this 에 대해서 궁금하게 되었다.그래서 한번 찾아보고 예제 코드도 만들어보겠다. this란?● 인스턴스의 자기 자신을 의미한다.  this의 역할 1. 자기 자신의 메모리를 가르킨다.public Test(int test, String str) { this.test = test; this.str = str;}  2. 생성자에서 다른 생성자를 호출할 경우public Test() { this(1,"test");}  3. 인스턴스 자신의 주소를 반환할 때 사용한다.public void strTest(String str){ Tests.setTests(this);} 3번에서 헷갈렸던게 자신의 주소를 반환할 때 사용되는 this가 도대체 무엇일까 ? 라고 생각하..
링크드 리스트(Linked List) 1. 링크드 리스트 구조 - 연결 리스트라고도 함 - 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 - 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 2. 링크드 리스트 기본 구조와 용어 - 노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성 - 포인터(Pointer) : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 3. 링크드 리스트의 장단점 1) 장점 - 미리 데이터 공간을 할당하지 않아도 됨 - 배열은 미리 데이터 공간을 할당 해야 함 2) 단점 - 연결을 위한 별도 데이터 공간이 필요하므로, 저장공간 효율이 높지 않음 - 연결 정보를 찾는 시간이 필요하므로 접근 속도가 느림 - 중간 데이터 삭제시, 앞..
배열(Array), Arrays sort, toString 배열 - 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조 - 같은 종류의 데이터를 효율적으로 관리하기 위해 사용 - 같은 종류의 데이터를 순차적으로 저장 배열의 장점 - 빠른 접근 가능 ● 첫 데이터의 위치에서 상대적인 위치로 데이터 접근(인덱스 번호로 접근) 배열의 단점 - 데이터 추가/삭제의 어려움 ● 미리 최대 길이를 지정해야 한다. 배열의 생성 - 배열 선언 ex) int[] arr = new int[4]; - 선언과 동시에 초기화 ex) int[] arr = {1,2,3,4}; Arrays - api의 주소는 위의 Arrays에 하이퍼링크를 걸어두었다. - 자주쓰는 Arrays.sort() : 배열을 오름차순해준다. - Arrays.toString() : for문을 돌리지..
String vs StringBuilder 속도차이 String 연산 - String은 문자열을 대표하는 객체로 문자열 조작으로 유용하게 사용하고 있다. - 문자열 연산이 많은 경우 성능이 좋지 않다. StringBuilder 연산 - StringBuilder는 문자열 연산 등으로 공간이 늘어나 공간이 부족하게 되면 버퍼를 늘려 유연하게 동작한다. - String보다 속도가 빠르다. * 문자열 연산이란 자바에서 문자열을 합칠때 +로 문자열을 합치는데 이러한 방식을 문자열 연산이라고 한다. 속도 비교 블로그 - http://egloos.zum.com/deblan2/v/419830 String, StringBuffer, StringBuilder 속도 실험 (시간 측정) 1. IntroductionString의 + 연산자가 느리다는 것은 널리 알려진 사실이다...
BufferedReader, String Tokenizer 자바 입력 Class ( Scanner, BufferedReader, String Tokenizer) - BufferedReader, StringTokenizer은 문자열로 활용하기 위하여 사용 - BufferedReader를 사용하는 것이 Scanner를 사용하는 것보다 빠르다. - BufferedReader는 문자열에 최적화 StringTokenizer 사용목적 - BufferedReader는 잘라서 배열과 같이 인덱스를 사용하여 접근 가능 - StringTokenizer는 공백이 있다면 뒤에 문자열이 공백 자리를 땡겨 채우도록 함 - StringTokenizer가 BufferedReader보다 빠르게 사용될 수 있음 - 문자열을 자르기 위해 split을 사용할땐, split은 정규식을 기반으로 자르..
Integer.parseInt() vs Integer.valueOf() 차이 Integer.parseInt() - primitive type인 int형을 반환 - int형 값을 가지기 때문에 산술연산 가능 - null값 처리 불가능 - 크기 : 4byte Integer.valueOf - Wrapper Object인 Integer를 반환 - 객체화 된 자료형은 Integer클래스를 받기 때문에 unboxing 해주지 않으면 산술연산을 할 수없음 - 기본자료형과 달리 null값으로 처리할 수 있어 SQL과 연동할 경우 처리가 용이 - 크기 : 20byte Integer를 언제 쓰는지? - DB를 사용해서 쿼리문을 짜줘야하는 경우에 사용 - ArrayList나 List등의 요소,키,값으로 사용할때 사용한다. ex) ArrayList -> X / ArrayList -> O
Java 사용의 이유 (장점) 1. JVM - 자바는 JVM을 통하여 시스템을 가동시키기 때문에 운영체제에 영향을 받지않는다. - 메모리관리를 GC를 통하여 효율적으로 해준다. 2. 자바는 언어 차원에서 스레드를 지원해준다. - 자바는 API에서 스레드 기능을 지원하기 때문에 스레드를 사용한 프로그램 작성에 용이하다. 3. 보안이 강하다. - 네트워크 프로그래밍 시 허가가 없으면 외부에서 애플리케이션 구조나 데이터에 접근하지 못하게 막을 수 있다. 4. 수많은 개발자와 레퍼런스 - 자바는 오랜 시간 사용되어서 많은 개발자가 다양한 프로젝트를 하며 만든 오픈소스를 기반으로 경험과 자료들이 많다.