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

 

 

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차원 배열 뿐만 아니라 다차원 배열도 사용 가능하니 편하게 사용해보세요!!

 

 

다음에 또 봐요

 

728x90

보통 배열을 출력하려고 하면 반복문을 사용하죠?

 

반복문을 사용한 출력

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; i++)
		{
			System.out.print(arr[i]+" ");
		}
	}
}

 

결과물

1 2 3 4 5 6 7 8

 

이렇게 할거라고 생각합니다.

근데 혹시 함수에서 return 값으로 배열을 받아올 때, 이걸 어떡하지 생각한 적 있지 않으신가요?

 

 

함수에서 배열을 return 받았을 때

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

 

결과물

[I@74a14482

 

이 코드를 실행하면 이렇게 이상한게 나온다.

배열(arr)이 가지고 있는 값이 아닌, 그 값을 갖고 있는 주소값을 출력하게 되기 때문!!!!

 

그러면 어떡해야 할까?

Arrays.toString(출력하고 싶은 배열의 이름);

(참고. 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.toString(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차원 배열은 출력할 수 없습니다!!!!!

그러면 어떡해야하냐.............는 다음 시간에 올리도록 하겠습니다. ㅎㅎ

 

다음에 또 봐요

728x90

다음에 또 봐요

+ Recent posts