[개발] - Java/Mega

Day 02 - 자료형, 연산자, if 조건문

완벽한 장면 2023. 3. 14. 18:53

자료형(이어서)

문자 : char

문자열 : String (참조자료형)

String str = “안녕하세요”;

 

package Day02;

public class StringTest {
	public static void main(String[] args) {
	
	String str = "안녕하세요.";
	System.out.println(str);
	}
}

 

 

변수 선언 관련

선언

기본형

int a; //초기화가 안되고 선언만 한 경우

int b = 10; //10으로 초기화

 

문자(char)가 왜 기본 자료형에 들어가죠?

 

-> 각각의 문자는 "유니코드" 라는 고유의 숫자값 가지고 있음.

 A를 인코딩하여 65라는 정숫값으로 변환하여 저장하고, 이것을 문자 형태로 다시 출력할 때에,

메모리에 저장되어 있는 유니코드 값을 다시 A로 출력해줌.

 

Scanner

참조자료형 : 클래스 자바에서 제공되는 것 – Scanner, System, String …

클래스 프로그래머 또한 만들 수 있는다. 나도 만들 수 있다.

 

[기본 형태]

Scanner ->

Scanner sc = new Scanner(System.in);

sc.next() : 문자열 입력  / sc.nextInt() : 정수 입력 / sc.nextFloat

 

Scanner 예시

package Day02;

import java.util.Scanner;
public class ScannerTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in) // 스캐너 사용하는 객체를 생성함.
		int a = sc.nextInt();
		System.out.println(a);	
	}
}

 

형변환

- 형변환은 되는 것들 있고, 아니 되는 것들 있다.

- 기본 자료형은 형변환을 하는 게 좋지 않다.

- 나중에 참조자료형은 거의 필수가 된다.

 

- 자동형변환은 컴퓨터가 알아서 형변환 ⇒ 개발자가 몰라! 그러면 오히려 위험해질 수 있지.

- 강제형변환 () 강제로 개발자가 자료형을 바꾼다.

=> 그래서 그나마 강제형변환이 낫다는 것이다.

 

* 우선순위 중에 문자열이 가장 우선순위가 높다.

* 근데 문자열 → 숫자 형변환은 안 된다.

 

ex1)

기본적으로 형

정수 -> int

실수 -> double

7(int) + 1.5(double)

7.0(double) + 1.5(double)

8.5

 

ex2)  문자열 형변환 예시

우선순위 최고

String -> “”

안녕하세요”(String) + 5(int) + 3(int)

안녕하세요53

 

package Day02;

public class CastingTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 자동형변환
		System.out.println(7+1.5); //8.5 출력
		System.out.println("안녕하세요." + 5 + 3); // 안녕하세요.53 출력
		System.out.println("안녕하세요." + (5 + 3)); // 안녕하세요.8 출력
		
		// 강제형변환
		System.out.println((int)37.7); // 37 출력
		
		// 하지만 형변환 쓰는 건 최대한 지양하도록 하자.
	}

}

 

 

연산자와 형변환

1. 산술연산자

 + - * / % ++ --

%연산자 : 나머지 연산자

⇒ 나머지 연산자는 몫을 못 넘는다는 특징이 있다.

 

2. 관계연산자

< > <= >= ==(같다) !=(다르다)

5 > 3 && 8 < 3

5 > 3 || 8 < 3

!(5 > 3) ->

 

부등호 연산은 붙여서 만들면 안 된다.

ex) 5 < a < 10 (x)

⇒ a > 5 && a <10 (0)

 

3. 논리연산자

A && B  - 두조건에 모두 참이어야 참

A || B  - 한조건만 참이면 참

!A – 현재 조건 결과를 반대로 돌리는 것

 

※ &&첫조건이 false -> 뒤조건을 보지 않는다.

※ || 첫조건이 true -> 뒤조건을 보지 않는다.

 

*컴퓨터는 최적화를 한다.

첫 번째 조건이 false가 나온다, 그러면 뒷 조건을 볼 필요가 있을까? 아니.

or을 볼 때, 첫 번째 조건이 true 가 나와 그럼 뒤 조건을 볼 필요가 있을까? 아니.

조건부는 개수 제한이 없다. 그래서 어려운 것.

 

** 전위연산자와 후위연산자

Int a = 10;

a++ : 현재 명령어 라인에서는 증가X

그 이후 명령어에서 1이 증가됩니다.

++a : 바로 1 증갑니다.

a--  : 현재 명령어 라인에서는 감소X

그 이후 명령어에서 1이 감소 됩니다.

--a : 바로 1감소

https://sf2020.tistory.com/40

https://bvc12.tistory.com/136

https://es1015.tistory.com/260

 

 

** 단축 연산자

퀴즈

계산기 만들기

package Day02;

import java.util.Scanner;

public class Quiz01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in); // 스캐너 사용하는 객체를 생성함.
		System.out.print("숫자1 입력 : ");
		int a = sc.nextInt();
		System.out.print("숫자2 입력 : ");
		int b = sc.nextInt();
		
		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));
	}
}

 

 

조건문

조건문의 종류 : if, switch

조건 -> 관계연산자 + 논리연산자, 관계연산자

조건의 영역에 따라 참, 거짓을 판단하고 실행

 

길을 가는데, 땅에 1원이 떨어져 있어.

이 때 주울 거야? no? → 그냥 지나가

그런데 내가 5,000원이면 주우려고 했어,

그런데 10000원이 있네? 그러면 실행한다.

즉, 해당 조건이 내가 설정한 조건에 맞으면 실행 ⇒ 단일 조건문

 

if / esls 조건문은 흑백논리

if가 아니면 else를 실행하고

if면 그냥 if 가 실행이 된다.

 

package Day02;

import java.util.Scanner;

public class IFTest1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in); // 스캐너 사용하는 객체를 생성함.
		System.out.println("성적을 입력하세요 : ");
		int grade = sc.nextInt(); // 합격 90~100
		
		if(grade >= 90 && grade <=100) {
			System.out.println("축하합니다. 합격입니다.");
			System.out.println("대단하시네요.");
		} 
		// 불합격 0~89
		else if(grade < 90 && grade >= 0) {
			System.out.println("아쉽지만, 불합격입니다.");
			System.out.println("그런데, 공부는 하신 건가요?");
		}
		// 이외는 잘못된 입력.
		else {
			System.out.println("잘못된 입력입니다.");
		}
	
	}

}
package Day02;

import java.util.Scanner;
public class IFTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		System.out.println("땅에 떨어진 돈 입력 : ");
		int money = sc.nextInt();
		
		if (money >= 1000) {
			System.out.println(money + "원 을 주워서");		
		}
		System.out.println("간다. ");
	}

}

 

== 비교와 equals

String a = "abc";

if(a == "abc") {

System.out.println("값이 같습니다.");

}

 

if(a.equals("abc")) {

System.out.println("값이 같습니다.");

}

 

** 웬만하면 equals 쓰세요...

(과외에서 배운 동일성/동등성 개념)

 

 

 

 

 

 

728x90
반응형