본문 바로가기

반응형

Java

(5)
[Java] 입력을 알아보자(Scanner, BufferedReader, StringTokenizer) 보통 Java에서 입력을 수행할 때 Scanner를 많이 쓰는데, BufferedReader를 사용하면 속도가 거의 절반이나 빨라진다는 것을 알았다!! -> 알고리즘을 풀 때 시간 초과가 나는 문제를 BufferedReader로 바꾸면 운 좋게 통과될 때가 있을 정도 Scanner와 BufferedReader, StringTokenizer 사용법을 알아보자 Scanner Scanner를 사용하여 int, string, double 등의 데이터 입력을 받아 보았다. 이렇게 코드를 짰을 때, 위와 같은 오류가 나는데, 이것은 sc.nextInt() 다음 sc.nextLine()을 사용할 때 버퍼를 비워주지 않은 채로 실행해서 String에 엔터가 저장되고, double에 내가 쓴 string 값이 저장되었기..
[Java] String 비교할 때 ( ==, equals의 차이 ) 자바에서 같은 내용의 String 문자열을 비교할 때, 언제는 == 로 비교해도 일치여부가 잘 나오고, 언제는 equals() 함수를 써야만 나올 때가 있다. 누구나 헷갈릴 수 있는 부분이기 때문에 정리를 하기로 했다. 아래는 ==와 equals()를 사용하는 코드이다. 위 내용을 보면, new String()을 사용해서 생성한 문자열은 '==' 기호로 제대로 비교가 되지 않는 것을 알 수 있다. 이유는, == 는 변수의 '메모리값'을 비교하는데, s3과 s4가 각각 new에 의해 Heap에 서로 다른 객체를 생성하고, Reference Type이므로 주소값을 저장하기 때문이다. 따라서, new String으로 생성한 s3과 s4는 문자열의 내용을 비교하려면 equals() 함수를 반드시 사용해야 한다...
[Java] 어레이리스트(ArrayList)를 알아보자 ArrayList란? List 인터페이스를 상속받은 클래스로, 크기가 가변적으로 변하는 선형리스트다. 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는점 등이 유사하지만, 한 번 생성되면 크기가 변하지 않는 배열과는 달리, 어레이리스트에 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있다. ArrayList의 함수들 ArrayList를 쓰기 위해서는 java.util.ArrayList를 import 해야한다. 1. ArrayList 생성, 값 추가, 값 삭제 * remove를 할 때 ArrayList가 Integer를 저장하는 리스트면, remove(3)을 하면 인덱스 3이 지워진다. 원소 3..
[Java] 상속을 알아보자(업캐스팅, 다운캐스팅) 상속 객체 지향에서 상속은 부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것 상속은 코드 중복을 제거하여 클래스를 간결하게 구현할 수 있게 한다. 상속과 생성자 서브 클래스와 슈퍼 클래스는 각각의 생성자를 가지고 있다. 서브 클래스 객체가 생성될 때 서브 클래스와 슈퍼 클래스의 생성자가 모두 호출되며, 서브 클래스의 생성자보다 슈퍼 클래스의 생성자가 먼저 호출된다. 업캐스팅과 다운캐스팅 캐스팅이란 타입 변환이다. 1. 업캐스팅 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환하는 것 위 코드를 보면, p.name은 접근이 가능하지만 p.grade에는 접근이 불가능하다는 것을 알 수 있다. 업캐스팅한 레퍼런스로는 슈퍼 클래스의 멤버만 접근이 가능하다! 2. 다운캐스팅 업캐스팅..
[Java] 배열 정렬(오름차순, 내림차순) 1. 오름차순 오름차순 정렬은 기본적으로 모두 Arrays.sort(arrName)를 사용한다. *참고: Java에서 배열 출력은 Arrays.toString(arrName)을 사용하면 편리하다. 2. 내림차순 내림차순 정렬은 일단 Arrays.sort(arrName, Collections.reverseOrder())을 사용하지만, 만약 기본 타입 배열일 때, 대표적으로 int 배열일 때에는 적용이 불가능하다. *기본 타입: byte, char, double, short, long, int, float 이럴 땐 기본 타입의 배열을 래퍼클래스로 만든 다음(boxing) 정렬해야 한다. *래퍼 클래스: 기본 자료형의 데이터를 인스턴스(객체)로 만들기 위해 사용하는 클래스 아래는 기본타입이 아닌 Integer..

반응형