PLOD

[Java] Java 기본 사용법 정리 본문

개발 공부/Java

[Java] Java 기본 사용법 정리

훌룽이 2024. 7. 20. 16:54

개발자 취업 준비를 하면서, 코딩테스트를 보게 되는 순간들이 있는데, 간혹가다 Java로 언어가 제한되는 곳이 있다.(ex. 현대 오토에버 특정 직무). 낭패를 보지 않으려면 자바 감이 떨어지지 않게 준비를 항시 해야 될 거 같다. 

Integer

Integer.parseInt() 

이 메소드는 문자열을 기본형 정수 (primitive type int)로 리턴한다. 문자열이 유효한 숫자를 포함하지 않는다면 NumberFormatException이 쓰로우 된다. 그렇기 때문에 문자열을 int로 바꿀때에는 항상 try-catch문으로 코드를 감싸서 이 익셉션을 처리해야 한다. Integer.parseInt() 를 써서 문자열을 int로 바꾸는 이 예시를 보자.

https://school.programmers.co.kr/learn/courses/30/lessons/181848?language=java

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {
    public int solution(String n_str) {
        int answer = 0;
        answer = Integer.parseInt(n_str);
        return answer;
    }
}

Integer.toString() = int + " "

int를 String으로 변환하기 위해서는 Integer.toString(), String.valueOf() 메소드를 이용할 수 있고, 간단하게는 빈 문자열과 int를 '+'연산자로 연결하여 문자열로 변환할 수 있다. 그리고 문자열에 int를 이어붙이면 문자열이 리턴되는 tip도 있다.

https://school.programmers.co.kr/learn/courses/30/lessons/181939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

import java.util.*;

class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        String aString = Integer.toString(a);
        String bString = Integer.toString(b);
        
        String resultA = aString+bString;
        String resultB = bString+aString;
        
        if (Integer.parseInt(resultA) < Integer.parseInt(resultB)){
            
            answer = Integer.parseInt(resultB);
        }
        else{
            
            answer = Integer.parseInt(resultA);
        }
        return answer;
    }
}

문자열

Character.getNumericValue()

다음 코드는 문자열의 각 자리수를 숫자로 변환한 값을 더하는 알고리즘이다. 여기서 잡아야 될 부Character.getNumericValue()이다. 이 함수는 Char 자료형 위주의 함수이기 때문에 String이라면 (String).charAt() 메서드로 char로 변환을 한 후 사용해야 한다.

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        char[] s = num_str.toCharArray();
        
        for(int i = 0; i < s.length; i++){
            answer += Character.getNumericValue(s[i]);
        }
        
        return answer;
    }
}


///////////////////////////////////////////////////////////////////////////////////


class Solution {
    public int solution(String num_str) {
        int answer = 0;
        
        for (int i = 0; i < num_str.length(); i++) {
            answer += Character.getNumericValue(num_str.charAt(i));
        }
        
        return answer;
    }
}

charAt

문자열(String)에서 문자하나만 가져와서 Char로 변환해주는 함수이다. Character 패키지의 함수들은 유용한 것들이 많다. (IsUpperCase : 대문자 판별, toUpperCase : 대문자 변환, ToLowerCase : 소문자 변환, IsLowerCase: 소문자 판별) 이러한 함수들을 사용하기 위해서는 (String).charAt(index) 함수가 꼭 필요하다

StringBuilder

자바에서 문자열을 다루는 방법은 크게 String, StringBuffer, StringBuilder 세 가지가 있다.  String은 불변(immutable)의 특성을 가지고 있어, 한 번 생성되면 그 값을 변경할 수 없다. 이는 메모리 관리 측면에서 효율적이지 않을 수 있으나, 코드의 안정성과 가독성을 높여준다. StringBuffer와 StringBuilder는 가변(mutable)의 특성을 가지고 있어, 객체의 값을 변경할 수 있습니다. 이들은 문자열의 추가, 수정, 삭제 등이 빈번히 발생하는 상황에서 유용하게 사용된다.

https://school.programmers.co.kr/learn/courses/30/lessons/181949

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        StringBuffer answer = new StringBuffer();

        for(int i = 0 ; i < a.length(); i++){
            if (Character.isUpperCase(a.charAt(i))){
                answer.append(Character.toLowerCase(a.charAt(i)));
            }
            else{
                answer.append(Character.toUpperCase(a.charAt(i)));
            }
        }
        
        System.out.println(answer);
    }
}

StringBuffer는 멀티 스레드 환경에서 안전하게 사용할 수 있도록 동기화(Synchronized)가 적용되어 있다.  따라서 멀티 스레드 환경에서는 StringBuffer를 사용하는 것이 좋다. StringBuilder는 StringBuffer와 API가 유사하지만, 동기화를 지원하지 않습니다. 따라서 단일 스레드 환경에서 더 높은 성능을 제공한다.

※ StringBuffer 메서드 
1. append() : 문자나 숫자를 붙일 수 있다.
2. charAt(int index) :  지정된 인덱스에 있는 문자를 반환
3. delete(int start, int end) :  시작위치에서 끝위치 사이에 있는 문자 제거한다, 
StringBuffer sb = new StringBuffer("0123456");
StringBuffer sb2 = sb.delete(3,6);

sb = "0126"
sb2 = "0126"​

4. deleteCharAt(int index) : 지정된 인덱스에 문자 제거

StringBuffer sb = new StringBuffer("0123456");
sb.deleteCharAt(3);

sb = "012456"

5. insert(int index, int a) : 지정된 인덱스에 숫자(문자도 가능)를 추가한다. 
6. length() : StringBuffer에 저장되어 있는 문자열의 길이를 반환
7. subString(int start, int end) : 지정된 범위 내의 문자열을 String으로 뽑아서 반환한다. 시작위치만 지정하면 시작위치부터 끝까지 뽑아서 반환

특수문자 출력

Java에서 특수문자를 출력하려면 다음과 같은 특별한 처리가 필요하다

  • \\는 역슬래시(\)를 출력합니다.
  • \'는 작은따옴표(')를 출력합니다.
  • \"는 큰따옴표(")를 출력합니다

String.valueOf()

Char 자료형의 배열을 String으로 변환하는 방법은 다음과 같다. String.valueOf(char[])을 사용하면 쉽게 변환할 수 있다.

char[] ary = {'a','b','c','d','e'};
String arrayString = String.valueOf(ary);
System.out.println(arrayString);

substring()

Java에서 String 문자열을 자르기 위한 함수이다. (String).substring(index)를 사용하면 인덱스부터 끝까지 문자열을 가져오고, charAt 처럼 한글자만 가져오고 싶을 때는 (String).substring(index,index+1)을 사용하면 된다. 인덱스 범위로 가져오기 위해서는 (String).substring(int 시작인덱스, 끝 위치(인덱스-1)) 로 사용하면 된다.

public class SubstringExample {    
	
    public static void main(String[] args) {         
    String str = "Hello";         
    
    System.out.println(str.substring(2)); // "llo"        
    System.out.println(str.substring(5)); // ""        
    System.out.println(str.substring(-1)); // StringIndexOutOfBoundsException        
	System.out.println(str.substring(6)); // StringIndexOutOfBoundsException     
    
    String str = "Hello";         
    System.out.println(str.substring(2, 4)); // "ll"        
    System.out.println(str.substring(2, str.length())); // "llo"  
    
    }
 }

문자열 더하기

문자열은 더하기 하듯이 더 해줄수 있다.  문자열을 더해주면 뒤에 더해져서 나온다.

import java.util.*;

class Solution {
    public String solution(String my_string, int k) {
        String answer = "";
        for(int i = 0; i < k; i++){
            answer += my_string;
        }
        return answer;
    }
}


/*
입력값 〉	"string", 3
기댓값 〉	"stringstringstring"
*/

 

 

 

https://velog.io/@ryusuz/JAVA-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%9A%A9-%EC%A3%BC%EC%9A%94-%ED%95%A8%EC%88%98-%EB%AA%A8%EC%9D%8C

 

[JAVA] 코딩테스트용 주요 함수 모음

그동안 코딩테스트 준비를 C++로 해왔었는데, LG cns는 C++을 지원하지 않아서 > 작년 하반기에 급하게 자바로 코테를 준비했었다. (아마 코테 이틀 전?)올해 다시 cns 코테를 보게 되었는데.. 역시나

velog.io

https://eckrin.tistory.com/136

 

코테용 Java 라이브러리(자료구조) 정리

0. String ★★★★★ import java.io.*; //BufferedReader, BufferedWriter BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] strArray = br.readLi

eckrin.tistory.com

Comments