본문 바로가기

컴퓨터/JAVA

(9)
[java] int와 Integer? 자바 코딩테스트를 준비하면서 헷갈렸던 점을 정리하려고 한다. 자바 프로젝트를 하고있지만서도.. 알고리즘 문제를 풀면서 새롭게 공부하거나 알게되는 사실들이 많은 것 같다. 자바의 자료형은 크게 기본 타입과 참조 타입으로 나누어진다. 기본 타입은 char, int, boolean 등을 포함하며 참조 타입은 class, interface 등을 포함하는데 종종 기본 타입 데이터를 객체로 표현해야 하는 경우가 생긴다. 이때, 기본 자료 타입(primitive type)을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스(wrapper class)라 한다. wrapper class : 객체가 기본 데이터 유형을 포함하는 클래스 int 우슨 int는 변수의 타입이다. 즉, 원시적인 자료형으로 메소드를 가지지 못한다..
[java] BufferedReader, BufferedWriter 자바로 알고리즘 공부를 시작하면서 Scanner보다 빠른 입출력이 가능한 BufferedReader와 BufferedWriter을 공부하였고 정리해보려고 한다. 파이썬도 기존의 input() 대신 빠른 입력을 위해 sys.stdin.readline()을 사용했었는데 자바도 비슷한 원리인 것 같다. BufferedReader와 BufferedWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수로 버퍼를 사용하지 않는 입력은 키보드의 키를 누름과 동시에 바로 프로그램에 입력이 전달되지만 버퍼를 사용하는 입력은 버퍼로 전송한다. 버퍼가 다 차거나 개행 문자 등이 나타날 경우 버퍼의 내용을 한번에 프로그램에 전달한다. Scanner는 사용하기 쉽지만 버퍼사이즈가 1024char로 매우 작기 때문에 입력의 크기..
[java] StringBuilder StringBuilder 자바의 문자열 형식은 String이다. String은 불변 객체이다. 그말인 즉슨, 두 개의 String을 + 연산할 경우 새로운 String 결과값을 생성한다. 기존의 데이터를 변경하는 것이 아니라 새로운 객체를 생성하므로 String을 가지고 연산한다면 메모리 성능이 저하될 수 있다. 이를 해결하기 위해 StringBuilder를 사용한다. StringBuilder는 String 연산 시 새로운 객체를 생성하지 않고 위와 같이 + 연산을 할 경우 기존 데이터에 더하는 방식을 사용한다. StringBuilder test = new StringBuilder(); test.append("hello"); test.append("java"); test.toString(); //hell..
[java] HashSet() HashSet() Set 인터페이스에서 지원하는 구현 클래스 순서대로 입력되지 않음 null 요소를 허용 중복을 허용하지 않음 HashSet() 변수 선언 HashSet set = new HashSet();//integer 형의 hashmap 데이터 HashSet set2 = new HashSet();//string 형의 hashmap 데이터 HashSet() 메서드 - .add(value) : hashset에 데이터를 추가한다. - .remove(value) : hashset의 데이터를 삭제한다. - .clear() : 모든 데이터를 삭제한다. - .size() : hashset의 길이를 출력한다. - .contains(value) : value값이 있는지 확인하고 있으면 true, 없으면 false를..
[java] toCharArray() toCharArray() - String 문자열을 char 형 배열로 반환해주는 메서드 package programmers_java; public class lv2_7 { public static void main(String[] args) { // TODO Auto-generated method stub String arr = "asdfg"; // 문자열에서 한 글자씩 접근 for(char i : arr.toCharArray()) { System.out.println(i); } //char형 배열로 만들어 배열 출력 char[] arr2 = arr.toCharArray(); System.out.println(Arrays.toString(arr2)); } } /* a s d f g */ /* [a, s,..
[java] [Error] no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>) 이전에 포스팅했던 프로그래머스의 '최솟값 만들기'를 해결하며 마주했던 에러 사항이다. 다시 설명하자면, 기존에 알고있던 Arrays.sort()와 Arrays.sort(arr, Collections.reverseOrder())을 사용하여 정렬을 하려고 했는데 계속 에러가 났다. Comparator는 원시 타입의 int 배열에서는 사용할 수 없었던 것이 원인이었다. 하단 블로그를 참고하여 Integer[] Br = Arrays.stream(B).boxed().toArray(Integer[]::new); Arrays.sort(Br, Collections.reverseOder()); integer[]로 변환하였다. boxed - boxed()는 원시 타입에 대한 스트림 지원을 클래스 타입으로 전환해준다. in..
[java] stack 구현 자바에서 스택을 구현하려면 직접 구현하는 방법과 Stack 클래스를 사용하는 방법 두 가지가 있다. Stack 클래스를 사용하기 이전 직접 이해하고 구현할 줄도 알아야 하기 때문에 두 가지 방법 다 정리해 보려고 한다. 1. 직접 구현하기 1-1 배열로 구현 * search와 empty는 자바에서 지원해 주므로 여기서는 push, pop, peek만 구현한다. public class Stack{ int top; int size; int[] stack; public Stack(int size){ this.size = size; stack = new int[size]; top = -1; } public void push(int item){ stack[++top] = item; } public void pop..
[java] 문자열 한 글자 씩 자르기 java에서의 문자열 자르기는 두 가지의 방법이 있다. 1. split() split 함수는 특정 문자를 기준으로 문자열을 나누어 배열에 저장한 후 리턴한다. String s = "010-1111-2222"; String sArr = s.split("-");//["010", "1111", "2222"] String sArr2 = s.split("-", 2); // 배열의 크기 지정-> ["010", "1111-2222"] 2. charAt() charAt 함수는 문자열의 인덱스를 사용하기 때문에 for문을 이용한다. String s = "hello"; for(int i=0; i

728x90