blog

자바 개요 및 환경 3

자바 개요 및 환경 설정 1. 타입 변환 **자동 올리기, 수동 내리기** 1.1 자동 타입 변환 1.2 강제 타입 변환 1.3 특수한 경우 2. 연산자 2.1 산술 연산자 2.2...

Oct 26, 2025 · 8 min. read
シェア

Java 개요 및 환경 설정

유형 변환

**자동 올리기, 수동 내리기**

자동 유형 변환

자동 유형 변환

1. 두 유형은 호환 가능해야 합니다(예: 숫자와 숫자 값은 서로 호환 가능).

2. 대상 유형이 소스 유형보다 큰 경우

public class Test1{
	public static void main(String [] args){
		// 유형 변환
		// 자동 유형 변환
		// 1.두 유형은 서로 호환되어야 합니다(예: 숫자와 숫자 값은 서로 호환 가능).
		// 2.대상 유형이 소스 유형보다 큽니다.
		byte b1 = 20;
		short s1 = b1;
		System.out.println(s1);
		
		
		short s2 = 200;
		int i1 = s2;
		System.out.println(i1);
		
		
		int i2 = 300;
		long l1 = i2;
		System.out.println(l1);
		
		
		long l2 = 230;
		float f1 = l2;
		System.out.println(f1);
		
		float f2 = 33.5F;
		double d1 = f2;
		System.out.println(d1);
		
		byte b3 = 20;
		int i3 = b3;
		System.out.println(i3);
		
	}
}

강제 유형 변환

강제 유형 변환 수동 하강

1. 두 유형 모두 호환 가능해야 합니다.

2. 소스 유형보다 작은 타겟 유형

public class Test2{
	public static void main(String [] args){
		// 강제 유형 변환 수동 하강
		// 1.두 유형은 호환되어야 합니다.
		// 2.대상 유형이 소스 유형보다 작습니다.
		
		short s1 = 120;
		byte b1 = (byte)s1;
		System.out.println(b1);
		
		
		int i1 = 2300;
		short s2 = (short)i1;
		System.out.println(s2);
		
		long l1 = 2356;
		int i2 = (int)l1;
		System.out.println(i2);
		
		float f1 = 32.5F;
		long l2 = (long)f1;
		System.out.println(l2);
		
		
		double d1 = 20.5;
		float f2 = (float)d1;
		System.out.println(f2);	}
}

특수한 경우

강제 유형 변환

작은 범위에 큰 정수를 저장하기

public class Test1{
	public static void main(String [] args){
		// 강제 유형 변환
		// 너무 큰 정수를 더 작은 범위에 저장하는 데 사용됩니다.
 // 사례 1 길이 부족 데이터 잘림
		short s1 = 257;
		byte b1 = (byte)s1;
		System.out.println(b1);
		
		// 케이스 2 부호 비트 변경
		short s2 = 128;
		byte b2 = (byte)s2;
		System.out.println(b2);
		
		// 양수의 원래 코드는 양수의 역코드와 동일하며 양수의 원래 코드는 양수 자체의 원래 코드와 동일합니다. 0100 0100 0100 0100 0100
		// 음수 1011 원본 코드
		// 인버스 1100 인버스 부호 비트는 동일하게 유지되고 나머지 비트는 반전됩니다.
		// 1101 컴플리먼트 컴플리먼트
		
 // 음수로 변경
		short s3 = 129;
		byte b3 = (byte)s3;
		System.out.println(b3);		
	}
}
// 여기서 ctrl+ 코드 편집 상자에서 캐리지 리턴 점프

산술 연산을 수행할 때: 서로 다른 타입의 여러 피연산자는 자동으로 가장 큰 데이터 타입으로 승격됩니다.

두 피연산자 중 하나가 두 배이면 계산 결과가 두 배로 올라갑니다.

피연산자에 이중이 없고 하나가 부동 소수점인 경우 계산 결과가 부동 소수점으로 해제됩니다.

피연산자에 부동 소수점이 없고 길이가 길면 계산 결과가 길이로 올라갑니다.

피연산자에 길이가 없고 하나가 정숫값인 경우 계산 결과가 정숫값으로 올라갑니다.

피연산자에 int가 없으면 모두 쇼트 또는 바이트이며 계산 결과는 여전히 int로 승격됩니다.

특수: 어떤 유형이 문자열에 추가되면 실제로는 스플라이스이며, 그 결과는 자동으로 문자열로 승격됩니다.

public class Test1{
	public static void main(String [] args){
		// 문자 유형을 정수 유형으로 변환합니다.
		char ch1 = 65;
		int i1 = ch1;
		System.out.println(i1);
		
		char ch2 = 'B';
		// 67 C B1
		System.out.println(ch2 + '1' + "hello");
		
	}
}

연산자

산술 연산자

public class Test1{
	public static void main(String [] args){
		int a = 10;
		int b = 20;
		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b);
		
		
		int c = 10;
		int d = 3;
		System.out.println(c % d);
	}
}

단항 연산자

++ 또는 --은 별도의 문장으로 작성되며, 앞뒤에 차이가 없습니다.

++ 또는 --는 별도의 문으로 작성되지 않습니다.

또는 --이 먼저 오면 나머지 문보다 먼저 또는 --이 실행됩니다.

또는--이 두 번째이면 다른 것을 먼저 수행한 다음 또는--을 수행합니다.

public class Test1{
	public static void main(String [] args){
		// ++ 는 1씩 자기증가를 의미합니다.
		// -- 는 1을 빼는 것을 의미합니다.
		int a = 10;
		a++; // 에 해당하는= a + 1;
		System.out.println(a);
		
		int b = 5;
		b--; // b와 동일= b - 1;
		System.out.println(b);	int c = 10;
		++c;
		System.out.println(c);
		
		int d = 5;
		--d;
		System.out.println(d);
		
		// ++ 또는 -- 별도의 문으로 작성 앞이든 뒤이든 차이가 없습니다.
		// ++ 또는 -- 별도의 문으로 작성되지 않습니다.
		//  ++또는 - 앞에 다음 실행++또는 - 다른 문 실행
		//  ++또는 - 다음 함수를 실행하기 전에 다른 함수를 먼저 실행한 후++또는--.
		int e = 10;
		int f = e++;
		System.out.println("++다음 뒤에 오는 e의 값은 "+ e);
		System.out.println("++다음 뒤에 오는 f의 값은 "+ f);
		
		int h = 10;
		int k = ++h;
		System.out.println(h);
		System.out.println(k);	}
}

할당 연산자

public class Test2{
	public static void main(String [] args){
		// 할당 연산자
		// += -= *= /= %=
		int a = 10;
		a += 20; // a = a + 20;
		System.out.println(a);
		
		int b = 5;
		b -= 2; // b = b - 2;
		System.out.println(b);
		
		int c = 2;
		c *= 5; //c = c * 5;
		System.out.println(c);
		
		int d = 20;
		d /= 4; // d = d / 4;
		System.out.println(d);
		
		
		int e = 100;
		e %= 3; // e = 100 % 3;
		System.out.println(e);
	}
}

관계형 연산자

public class Test1{
	public static void main(String [] args){
		// 관계형 연산자 최종 결과는 부울입니다.
		int a = 10;
		int b = 20;
		System.out.println(a > b);
		System.out.println(a < b);
		System.out.println(a >= b);
		System.out.println(a <= b);
		System.out.println(a == b);
		System.out.println(a != b);
	}
}

논리 연산자

&&로 단락 두 개 이상의 표현식이 동시에 유효해야 함 결과가 참입니다.

단락되며 첫 번째 표현식이 실패하면 후속 표현식이 실행되지 않는 단락 효과가 있습니다.

|| 단락 또는 두 개 이상의 표현식 중 하나가 참이어야 함

단락 또는 단락 첫 번째 표현식이 이미 유효한 경우 후속 표현식은 실행되지 않습니다.

& & 두 개 이상의 표현식이 동시에 유효해야 함 결과가 참 참, 단락 효과 없음.

| 또는 두 개 이상의 표현식 중 하나가 참이어야 하며, 단락 효과가 없어야 합니다.

public class Test1{
	public static void main(String [] args){
		// && 단락 두 개 이상의 표현식이 동시에 참이어야 함 결과가 참 참입니다.
		// 단락은 첫 번째 표현식이 유지되지 않으면 후속 표현식이 실행되지 않는 단락의 효과가 있습니다.
		
		// || 단락 또는 둘 이상의 표현식 중 하나가 참이어야 합니다.
		// 단락 또는 단락 효과 첫 번째 표현식이 이미 유효한 경우 후속 표현식은 실행되지 않습니다.
		int a = 10;
		int b = 20;
		int c = 30;
		System.out.println((a > b) && (b < c)); // false
		System.out.println((a < b) && (b < c)); // true
		
		System.out.println((a > b) || (b < c)); // true
		System.out.println((a < b) || (b < c)); // true
		
		System.out.println("==============================================");
		
		// & 와 함께 두 개 이상의 표현식이 동시에 참이어야 함 결과는 참 참입니다.
		// 단락 효과 없음
		System.out.println((a > b) & (b < c)); // false
		System.out.println((a < b) & (b < c)); // true
		
		
		// | 또는 두 개 이상의 표현식 중 하나가 참이어야 합니다.
		// 단락 효과 없음
		System.out.println((a > b) | (b < c)); // true
		System.out.println((a < b) | (b < c)); // true
		
		
	}
}
public class Test2{
	public static void main(String [] args){
		int x=8;
		int y=9;
		System.out.println((++x==y)&&(++x!=y)); // true
		System.out.println(x); // 10
		
		int a=8;
		int b=9;
		System.out.println((a++==b) && (++a!=b)); // false
		System.out.println(a); // 9
		
		int c=8;
		int d=9;
		System.out.println((c++==d) & (++c!=d)); // false
		System.out.println(c); 
		
	}
}
public class Test3{
	public static void main(String [] args){
		int x=8;
		int y=9;
		System.out.println((++x==y)||(++x!=y)); // true
		System.out.println(x); // 9
		
		int a=8;
		int b=9;
		System.out.println((++a==b) || (++a!=b)); // true
		System.out.println(a); // 9
		
		int c=8;
		int d=9;
		System.out.println((++c==d) | (++c!=d)); // true
		System.out.println(c); // 10
	}
}
public class Test4{
	public static void main(String [] args){
		// !  
		System.out.println(!true);
		System.out.println(!false);
	}
}

public class Test1{
	public static void main(String [] args){
		// 삼항 연산자
		int age = 19;
		System.out.println(age >= 18 ? "Adult": "minor");
		
		
		int a = 10;
		int b = a >= 10 ? 55 : 66;
		System.out.println(b);
		
	}
}

스캐너가 사용자 입력을 수신합니다.

프로그램이 실행되는 동안 콘솔에서 수동으로 데이터를 입력한 다음 프로그램이 계속 실행되도록 할 수 있습니다.

사용자 입력 수신을 구현하려면 java.util.Scanner 클래스를 사용해야 하며, 이를 사용하려면 패키지를 가져와야 합니다.

일치하지 않는 데이터가 입력된 경우의 예외: java.util.InputMismatchException

이 클래스는 다양한 데이터를 수신하기 위해 다음과 같은 함수를 제공합니다.

다음()은 문자열을 받는 데 사용됩니다.

nextInt()는 int 타입의 정수를 받는 데 사용됩니다.

nextDouble()은 double 타입의 십진수를 받는 데 사용됩니다.

// 패키지는 클래스 선언에 다음과 같이 작성해야 합니다.
import java.util.Scanner; // 패키지는 java.util패키지의 Scanner 클래스는 현재 파일에 도입되어 사용할 준비가 되었습니다.
public class Test1{
	public static void main(String [] args){
		// 자바 사용.util.Scanner 사용자 입력을 받는 클래스
		
		// 2단계 Scanner 변수를 생성합니다.
		Scanner input = new Scanner(System.in);
		
		// 첫 번째 단계는 사용자에게 입력을 요청하는 것입니다.
		System.out.println("이름을 입력하세요");
		
		// 3단계 사용자 입력을 받아 이름 변수에 저장합니다.
		String name = input.next();
		
		// 4단계 사용자가 입력한 이름 인쇄하기
		System.out.println("입력한 이름은 "+ name);
		
		System.out.println("나이를 입력하세요");
		
		int age = input.nextInt();
		
		System.out.println("입력한 나이는 "+ age);
		
		
		System.out.println("시험 점수를 입력하세요");
		
		double score = input.nextDouble();
		
		System.out.println("입력한 점수는 다음과 같습니다."+ score);
		
		
		System.out.println("성별을 입력하세요");
		
		String sex = input.next();
		
		System.out.println("입력한 성별은:"+ sex);
	}
}
Read next

VisionPro 개발 - 객체가 항상 카메라를 향하도록 만드는 방법은 무엇인가요?

VisionOS에서는 평면 감지, 월드 트래킹, 손 추적, 장면 재구성, 이미지 재구성 등 다양한 지각 기능을 ARKit을 통해 얻을 수 있습니다. 현재 시뮬레이터에서 지원되는 기능은 다음과 같습니다.

Oct 26, 2025 · 4 min read