728x90

 

Integer.valueOf(String)

  • 반환 타입: Integer 객체
  • 설명: Integer.valueOf(String)는 문자열을 Integer 객체로 변환합니다. 이 메서드는 내부적으로 Integer 객체를 생성하거나, 이미 생성된 객체를 캐싱하여 반환할 수 있습니다. 따라서 이 메서드는 Integer 객체를 반환하기 때문에 자동 박싱(autoboxing)이 발생합니다.
  • 캐싱: Integer.valueOf(int)는 -128부터 127까지의 값을 캐싱합니다. 이 범위 내의 값들은 동일한 객체를 재사용합니다.
Integer intValue = Integer.valueOf("123");

 

Integer.parseInt(String)

  • 반환 타입: 기본 타입 int
  • 설명: Integer.parseInt(String)는 문자열을 기본 타입 int로 변환합니다. 이 메서드는 문자열을 숫자로 파싱하여 직접 int 타입으로 반환하기 때문에, 객체 생성이나 캐싱과 관련이 없습니다.
int intValue = Integer.parseInt("123");
 

 

요약

  • Integer.valueOf(String)는 Integer 객체를 반환하고, 캐싱 메커니즘을 사용할 수 있습니다. 반환 타입은 객체(Integer)입니다.
  • Integer.parseInt(String)는 기본 타입 int를 반환하며, 캐싱 메커니즘이 없습니다. 반환 타입은 기본 타입(int)입니다.

 

사용 예시

public class Main {
    public static void main(String[] args) {
        String str = "123";
        
        // Integer.valueOf(String) 사용
        Integer integerValue = Integer.valueOf(str);
        System.out.println("Integer.valueOf: " + integerValue); // Integer 객체 반환

        // Integer.parseInt(String) 사용
        int intValue = Integer.parseInt(str);
        System.out.println("Integer.parseInt: " + intValue); // 기본 타입 int 반환
    }
}

 

결론

  • Integer.valueOf(String)는 Integer 객체를 반환하고, 캐싱 메커니즘을 통해 메모리 효율성을 향상시킬 수 있습니다.
  • Integer.parseInt(String)는 기본 타입 int를 반환하며, 메모리 효율성 측면에서 조금 더 가볍습니다.

두 메서드 모두 문자열을 정수로 변환하는 데 유용하지만, 반환 타입과 내부 동작 방식의 차이로 인해 특정 상황에서 더 적합한 메서드를 선택할 수 있습니다.

728x90

 

 

풀이 - 나의 생각

JOIN은 관련된 두 개 이상의 테이블을 결합하여 하나의 결과 집합으로 만드는 데 사용됩니다.

 

보통 두 테이블 사이에 공통 열(또는 키)이 있어야 합니다.

 


 

INNER JOIN: 두 테이블 사이에 일치하는 행만 결합합니다.

(INNER 생략 가능)

 

SELECT *
FROM table1
INNER JOIN table2 ON table1.column = table2.column;

 

 

 


 

LEFT JOIN: 왼쪽 테이블의 모든 행을 포함하고

오른쪽 테이블에서 일치하는 행이있는 경우 오른쪽 테이블의 행을 포함합니다.

 

SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

 

 

 

 

RIGHT JOIN: 오른쪽 테이블의 모든 행을 포함하고

왼쪽 테이블에서 일치하는 행이있는 경우 왼쪽 테이블의 행을 포함합니다.

 

SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;

 


 

FULL OUTER JOIN: 양쪽 테이블의 모든 행을 포함합니다.

일치하는 행이없는 경우 NULL 값을 사용합니다.

 

 

SELECT *
FROM table1
FULL OUTER JOIN table2 ON table1.column = table2.column;
 

 

 

 

 

 

 

 

다음에 또 봐요

 

728x90

 

https://fall-in-dream.tistory.com/86

 

비트 연산자 사용하기 - 1편

비트 연산자를 사용하여 정수형 데이터의 비트 단위 조작을 할 수가 있습니다. 주요 비트 연산자는 종류 설명 AND(&) 두 비트가 모두 1일 때만 결과가 1이 됩니다. OR(|) 두 비트 중 하나라도 1이면

fall-in-dream.tistory.com

 

위의 글을 보신 분들 중

 

의아한?궁금한? 부분이 있으신 분들이 있을거라고 생각합니다.

 

그것은 바로

 

1. NOT 연산의 결과

 

2. >>연산과 >>>의 차이

 

라고 생각합니다.

 


 

 

이번에는 우선 NOT 연산의 결과를 다시 한 번 살펴 봅시다.

 

int a = 5(0101) 를

 

Not 연산 결과로

 

-6(1010)이 나왔습니다.

 

'0101'NOT(~) 연산했으니 0과 1이 반대가 돼서 '1010'이 나온 것까지는 OK

 

근데 '1010'은 12가 아닌가?

 

생각할 수 있습니다.

 

NOT연산자를 이해하기 위해서는

 

JAVA는 2의 보수를 사용하는 것을 알아야 합니다.

 

예로,

 

int 형의 변수는 32비트로 나타내는데

 

즉, int a = 5; 라고 하면

 

우리가 보기에는 '0101'이지만

 

사실은

 

'0000  0000  0000  0000  0000  0000   0000  0101'이라는 사실!!!!

 

그러면 이 것을 NOT(~) 연산한다면?

 

'0000  0000  0000  0000  0000  0000   0000  1010'이 아니라

 

'1111  1111  1111  1111  1111  1111   1111  1010'가 되는 겁니다!!!!

 

이진수 '1111  1111  1111  1111  1111  1111   1111  1010' 는 부호 비트가 1로 시작하므로 음수로 간주됩니다.

 

이진수에서 2의 보수를 취하면 해당 음수의 양수 표현이 됩니다.

 

따라서 '1111 1111 1111 1111 1111 1111 1111 1010'

 

2의 보수는

 

'0000 0000 0000 0000 0000 0000 0000 0110'이 되고, 이는 10진수로 -6입니다.

 

(2의 보수에 대해서는 다음에 한 번 다루어 보도록 하겠습니다.)

 

그러면 다음에는

 

>>연산과 >>>연산의 차이에 대해 들고 오겠습니다!!!

 

 

 

 

다음에 또 봐요

 

 

728x90

 

비트 연산자를 사용하여 정수형 데이터의 비트 단위 조작을 할 수가 있습니다.

 

주요 비트 연산자는

 

종류 설명
AND(&) 두 비트가 모두 1일 때만 결과가 1이 됩니다.
OR(|) 두 비트 중 하나라도 1이면 결과가 1이 됩니다.
XOR(^) 두 비트가 서로 다르면 결과가 1이 됩니다.
NOT(~) 비트를 반전시킵니다. 0은 1로, 1은 0으로 바꿉니다.
시프트 연산자(<<, >>, >>>)
  • << (왼쪽 시프트): 비트를 왼쪽으로 이동시킵니다. 오른쪽에 0으로 채워집니다.
  • >> (오른쪽 시프트): 비트를 오른쪽으로 이동시킵니다. 왼쪽에 부호 비트로 채워집니다.
  • >>> (부호 없는 오른쪽 시프트): 비트를 오른쪽으로 이동시키되, 왼쪽에 0으로 채웁니다.

 

정도가 있습니다.

 

예시

1. AND(&) 연산자 : 두 비트가 모두 1일 때만 결과가 1이 됩니다.

int a = 5;    // 이진수: 0101
int b = 3;    // 이진수: 0011
int result = a & b; // 결과: 0001 (1)

 

 

2. OR(|) 연산자 : 두 비트 중 하나라도 1이면 결과가 1이 됩니다.

int a = 5;    // 이진수: 0101
int b = 3;    // 이진수: 0011
int result = a | b; // 결과: 0111 (7)

 

 

3. XOR(^) 연산자 : 두 비트가 서로 다르면 결과가 1이 됩니다.

int a = 5;    // 이진수: 0101
int b = 3;    // 이진수: 0011
int result = a ^ b; // 결과: 0110 (6)

 

 

4. NOT(~) 연산자 : 비트를 반전시킵니다. 0은 1로, 1은 0으로 바꿉니다.

int a = 5;    // 이진수: 0101
int result = ~a;  // 결과: 1010 (-6)

 

 

5. 시프트 연산자

1) << (왼쪽 시프트) : 비트를 왼쪽으로 이동시킵니다. 오른쪽에 0으로 채워집니다.

2) >> (오른쪽 시프트) : 비트를 오른쪽으로 이동시킵니다. 왼쪽에 부호 비트로 채워집니다.

3) >>> (부호 없는 오른쪽 시프트) : 비트를 오른쪽으로 이동시키되, 왼쪽에 0으로 채웁니다.

int a = 5;    // 이진수: 0101
int resultLeftShift = a << 1;  // 결과: 1010 (10)
int resultRightShift = a >> 1; // 결과: 0010 (2)

 

다음에 또 봐요

 

728x90

 

type Method Description
boolean isDigit(char ch) Determines if the specified character is a digit.
숫자면 true, 아니면 false 반환
boolean isAlphabetic(int codePoint) Determines if the specified character (Unicode code point) is an alphabet.
boolean isLetter(char ch) Determines if the specified character is a letter.
알파벳(영문 알파벳 대소문자) 또는 다른 언어의 문자인 경우에도 true를 반환, 숫자나 특수 문자, 공백이면 false
char toLowerCase(char ch) Converts the character argument to lowercase using case mapping information from the UnicodeData file.
char toUpperCase(char ch) Converts the character (Unicode code point) argument to uppercase using case mapping information from the UnicodeData file.

 


 

 

다음에 또 봐요

 

 

728x90

DFS 는 완전 탐색

BFS 는 최단 거리 찾기에 적합하다.

728x90

 

 

int 는 nextInt();

String 은 next();

 

그러면 char 는????

 

없다!!!!!!!!!!!!!!!

 

그러면 어떡해야 할까요?

 

String형으로 입력 받은 후 charAt(); 으로 똑 끊어 읽어야합니다.....

 

public class Main {
	static Scanner sc = new Scanner(System.in);
	public static void main(String args[]) throws IOException
	{
		/* char형을 Scanner로 입력받아보자*/
		
		char al = sc.next().charAt(0);
		System.out.println(al);
			
	}
}

 

 

 

다음에 또 봐요~

728x90

 

 

 

https://fall-in-dream.tistory.com/16

 

반복문 없이 배열 출력하기 ( Arrays.toString(arr))- JAVA

보통 배열을 출력하려고 하면 반복문을 사용하죠? 반복문을 사용한 출력 class Solution { public static void main(String args[]) throws Exception { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8}; // 배열 선언 for(int i = 0; i < arr.length

fall-in-dream.tistory.com

 

 

 

 

1차원 배열은 해결 완료!!!

 

그런데

2차원 배열을 출력할 때 Arrays.toString(arr); 을 사용하면 어떻게 될까요?

class Solution
{
	static Scanner sc = new Scanner(System.in);
	public static void main(String args[]) throws Exception
	{
		System.out.print(Arrays.toString(arr_test()));
	}
    
    public static int[][] arr_test()
    {
    	int[][] arr = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};
    	return arr;
    }
}

 

결과물

 

[[I@74a14482, [I@1540e19d, [I@677327b6, [I@14ae5a5]

 

전에 함수에서 리턴한 배열을 그냥 출력하려고 할 때 나왔던 애들이 이제는 4개나!!!!

 

그러면 어떡해야 하느냐

 

Arrays.deepToString(출력하고 싶은 배열);

(참고, import java.util.Arrays; 필요합니다.)

 

class Solution
{
	static Scanner sc = new Scanner(System.in);
	public static void main(String args[]) throws Exception
	{
		System.out.print(Arrays.deepToString(arr_test()));
	}
    
    public static int[][] arr_test()
    {
    	int[][] arr = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};
    	return arr;
    }
}

 

 

결과물

[[1, 2], [3, 4], [5, 6], [7, 8]]

 

글자가 조금 달라지자

이렇게 잘 출력되는 모습을 볼 수 있습니다.

2차원 배열 뿐만 아니라 다차원 배열도 사용 가능하니 편하게 사용해보세요!!

 

 

다음에 또 봐요

 

+ Recent posts