오늘의 목차
1. 키보드 입력 (System.in)
2. Scanner
3. 연산자
4. 제어문, 반복문
1. 키보드 입력 (System.in)
c언어에서도 입력값을 변수를 미리 선언하고
받았듯이
java에서도 똑같다.
미리 입력받을 자료형을 선언하고
입력받는 메쏘드(함수)를 써야 한다.
그러나 System.in.read()는 잔 오류가 많은 메쏘드라고 한다.
그래서 이런 부분을 해결하기 위해
System. 다음에 마우스 커서를 가져가면 위의 사진처럼 뜨는데
surround with try/catch를 눌러줘야 한다.
그러면 이렇게 자동으로 코드가 입력이 된다.
그리고 C언어에서 함수의 리턴값을 내가 만든 변수에 대입하듯
코딩을 해주면 된다.
이것이 잘 작동하나 확인하기 위해서
출력까지 해주면
이런 형태가 될 것이다.
그러나 실행시켜 보면 내 생각과는 다른 결괏값이 나온다.
이 상황은 이렇게 입력해 보면 이해할 수 있다.
즉 이 Method는 아스키 값을 보여주는 것이며
한 개의 문자만 입력되는 것이다.
(c언어로 생각하면 '/c')
그럼 만약 3자리 정수를 입력받으려면 어떻게 해야 할까?
이런 식으로 해줘야 한다.
그리고 실제로 자바 초창기엔 이렇게만 됐다고 한다.
2. Scanner - 아스키 값을 원하는 자료형으로 변환 ( nextInt(), nextDouble(), nextBoolean(), next() )
이런 불편한 점을 해결하기 위해 새로
Scanner이라는 class가 나왔다.
- nextInt() - 정수
- nextDouble() - 실수
- nextBoolean() - 논리값
- next() - 문자열
- nextLine() - 문자열
이 클래스를 사용하기 위해선
c 언어에서 printf나 scanf를 사용하기 위해서
맨 위에 #include <stdio.h>를 썼던 것처럼
java에서도 써줘야 한다.
import java.util.Scanner;
을 써줘야 main함수에 코드를 써도 제대로 인식하고 작동한다.
Scanner라는 클래스를 가져오려면
객체로 생성해야 하는데
Java는 Heap 메모리 영역에 만들어야 한다.
(c언어로 치면 포인터를 사용해 주소값을 받아야 한다.)
이런 방식으로
각 자료형에 사용 가능하다.
다만 주의할 점이 하나 있다.
문자열 중 next()와 nextLine()을 연속으로 써버리면
그다음에 있는 문자열 Method가 엔터를 문자로 인식해 버린다.
이를 해결하는 방법은 간단하다.
다시 한 번 더 입력을 받아주면 된다.
3. 연산자
기본적으로 c언어와 동일하다
다만 비트연산자 하나가 생겼으며(잘 안 씀)
주소나 메모리 사이즈를 보는 연산자가 없다.
2023.01.05 - [C언어/강의] - c언어 #4 - 상수, 연산자 (국비 5일 차)
c언어 #4 - 상수, 연산자 (국비5일차)
오늘은 상수와 연산자를 집중적으로 공부할 예정이다. 그럼 상수부터 알아보자. 목차 1. 상수 2. 연산자 1. 상수 상수와 변수는 둘 다 Data를 저장하는 메모리(RAM) 공간이다. 그럼 이 둘의 차이는 뭘
d0ngurrrrrrr.tistory.com
4. 제어문, 반복문
제어문 역시 c언어와 동일하다.
다만 switch에서 문자열 변수 사용이 가능하나.. 쓰지 말 것을 권장한다.
2023.01.06 - [C언어/강의] - c언어 #5 - 제어문(if, switch, for, while, break, continue) (국비 6일 차)
c언어 #5 - 제어문(if, switch,for,while,break,continue) (국비6일차)
오늘 배울 목차! 1. 조건문 2. 반복문 3. 기타제어문 제어문 : 프로그램 진행 순서를 제어(변경) 1. 조건문 - if, if else - switch 조건문 if 문법 if( 조건식(비교연산) ) { 참일 때 실행문, } else { 거짓일 때
d0ngurrrrrrr.tistory.com
그 이유는
문자열의 비교는 아래 사진과 같은 문제가 발생할 수 있기 때문이다.
40번째 줄에 System.out.println( s1 == s2) ; 는 무조건 false 다.
그 이유는 String이 주소값을 가지는 참조 변수이기 때문이다.
s1 == s2를 해버리면
s1안에 있는 주소값이랑
s2에 있는 주소값은 서로 다를 수밖에 없기 때문이다.
값비교를 하기 위해선
.equals를 사용해줘야 한다.(41번째 줄)
반복문 역시 c언어와 같다.
하지만 무한반복문을 할 때
이젠 논리값이 있으니
1이 아닌 true를 써야 한다.
'# 개발 > Java' 카테고리의 다른 글
Java 연습문제 #3 - 숫자 야구 게임 만들기 (국비14일차) (0) | 2023.01.18 |
---|---|
Java 연습문제 #2 - console 입력 (국비14일차) (0) | 2023.01.18 |
Java 연습문제 #1 (국비13일차) (0) | 2023.01.17 |
Java #1 - 개발 환경 구축, 화면 출력(print), 자료형 (국비13일차) (0) | 2023.01.17 |
Java #0 - 객체 (국비12일차) (0) | 2023.01.16 |