_
(언더바)또는 대문자 사용)5/2 추가분
변수란?
프로그램은 메모리 공간에 데이터를 보관하고, 여러 메모리 공간을 변수variable
로 구분한다. 변수는 데이터를 담는 상자 역할을 하며 종류가 다양한데, 이를 구분하려고 데이터 타입data type
을 사용한다.
데이터 타입에 따라 가능한 값, 수행할 수 있는 명령, 데이터 의미, 저장하는 방식이 달라진다. 따라서 특정 타입의 변수 상자에는 해당 타입의 데이터만 저장할 수 있다.
예를 들어 정수 변수는 정숫값만 저장할 수 있고, 실수 변수는 실숫값만 저장할 수 있다.
변수를 사용하려면?
변수를 사용하려면 컴파일러에 어떤 데이터 타입을 쓸지 미리 알려야하는데, 변수에 저장할 데이터 타입을 지정하고 이름을 붙이는 것을 변수 선언이라고 한다. 변수 선언도 실행문이므로;
을 붙여야 하고, 데이터 타입이 같은 변수는,
로 연결해 선언 할 수 있다.int i; // 변수를 선언만 함 i = 40; // 변수 i를 별도로 초기화함 int j = 40; // 변수를 동시에 선언과 초기화를 함
덤.예약어 var
자바 10부터는 초깃값을 통하여 데이터 타입을 추론할 수 있는 var이라는 예약어를 지원한다. var은 키워드가 아니기 때문에 식벽자로 사용할 수 있다. var은 반드시 초깃값을 통하여 데이터 타입을 추론할 수 있고 메서드 내부에 있는 변수에 대해서만 사용한다.var number = 100; // var은 정수를 나타낼 수 있는 int 타입으로 추론 var korean = "한국"; // var은 문자열을 나타낼 수 있는 String 타입으로 추론 var oops; // 오류 -> 초깃값이 없으므로 var이 타입을 추론할 수 없다. 컴파일 오류
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음
5/2 추가분 - 자료형
데이터 타입data type
은 값values
과 값을 다룰 수 있는 연산operations
의 집합을 의미한다. 자바는 기본 자료형 외에도 참조 자료형을 제공한다.
프로그램 내부에서 값을 정의해 변수를 초기화할 수 있는데, 그 값을 리터럴literal
이라고 한다.
기본 자료형은 정수 리터럴, 실수 리터럴, 문자 리터럴, 논리 리터럴이 있으며, 참조 타입으로 문자열 리터럴과 null이라는 특수한 리터럴이 있다.
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음
5/02 추가
정수는 기본적으로 int 타입이고 값의 범위에 따라 byte, short, long을 사용한다.
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음
5/02 추가
실수는 기본적으로double
타입이고 값의 범위에 따라 flaot를 사용한다.
flaot 타입의 실수 리터럴은 F나 f 접미사를 붙여 표현한다.
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음
5/02 추가
논릿값은 boolean 타입을 사용한다.
논리 리터럴은 두 가지 상태인 true와 false로 표현한다.
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음
5/02 추가
문자는 char 타입을 사용하고, 비영어권 언어까지 최대 6만 5,000여 개의 문자를 처리할 수 있도록 내부적으로는 2바이트 문자 처리 방식인 유니코드unicode
를 사용한다.
유니코드는 0~65,535 범위의 변수로 표현하기 때문에 char 타입은 일종의 정수타입이다.
5/2 추가분 - 자료형
참조 타입은 객체가 있는 주소를 담는 그릇의 형태를 의미한다.
주소로 데이터인 객체를 참조하기 때문에 참조타입이라 한다.
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음
5/03 추가분
프로그램에서 주어진 데이터를 계산해 결과를 얻어 내는 과정을 연사operation
이라고 한다. 연산에 사용하는 표시나 기호(+, *, <=)를 연산자operator
라고 하며, 연산되는 데이터(x,y,z)를 피연산자operand
라고 한다. 그리고 연산식expression
은 변수, 상수, 메서드 등 피연산자와 연산자의 조합을 의미한다.
=
를 통해서만 값의 변경이 가능하다5/03 추가
대입 연산자란?
오른쪽 값을 연산해 왼쪽에 대입한다.
비트연산자도 있지만 일단=
,+=
,-=
,/=
,%=
정도만 기억해두자
int num = 8;
// 문제) num 에 1을 더하기
System.out.println(num + 1); // 결과값 9
// 위 식에서 num 값이 더해진것 처럼 보이지만 실제로 변수 num의 값은 8로 변함없음
System.out.println(num); //결과값 8
System.out.println();
int temp = num;
num = (temp + 1); //대입 연산자를 통해서 값이 변경된다
System.out.println(num); // 결과값 9
System.out.println();
// 연산자 우선순위는 대입연산자보다 산술연산자가 우선 적용된다
int b = 10;
b = b + 1; // ( ) 없이도 b+1이 먼저 적용 된 후 다시 b에 적용된다
System.out.println(b);
5/05 추가
비교 연산자는 2개의 피연산자를 비교해 결괏값으로 논릿값인 true나 false를 되돌려 준다. ==와 != 는 모든 타입에 사용할 수 있지만, 그 외 비교 연산자는 논리 타입을 제외한 기초 타입에만 사용할 수 있다.
- 비교 연산자의 결과는 참(true) 또는 거짓(false)이다.
1) 크니?>
2) 작니?<
3) 같니?==
4) 다르니?!=
5) 크거나 같니?>=
6) 작거나 같니?<=
int a = 10;
int b = 3;
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);
5/05 추가
논리 연산자는 피연산자의 조건을 결합해서 true와 false를 조사하며, 논리 타입에만 사용한다.
1) 종류
- &&(and) - 양쪽 모두 참이어야 참
양쪽 다 만족시켜야 참 값 반환, 한쪽이라도 아닐시 거짓값 반환- ||(or) - 양쪽 중 어느 한쪽이라도 참이면 참
한쪽만 만족시켜도 참 값 반환, 양쪽 다 아닐시 거짓값 반환- !(not): 참이면 거짓으로 변환, 거짓이면 참으로 변환
2) 역할
System.out.println(10 == 10 && 3 == 3);
System.out.println(10 != 10 && 3 == 3);
System.out.println(10 == 10 && 3 != 3);
System.out.println(10 != 10 && 3 != 3);
System.out.println("--------------------");
int a = 10, b =3;
// or 연산자 - 양쪽 중 한쪽만 true여도 true값 반환, 둘 다 false면 false 값 반환
System.out.println(a == a || b == b);
System.out.println(a != a || b == b);
System.out.println(a == a || b != b);
System.out.println(a != a || b != b);
System.out.println("--------------------");
// not 연산자 - true값을 false로 변환 / false값을 true 값으로 변환
System.out.println(!true);
System.out.println(!false);
5/05 추가
키보드로 데이터를 입력받을 때 Systen.in 객체를 사용해 입력 스트림을 생성할 수도 있디만, 입력된 데이터를 처리하는 과정이 번거롭다. 하지만 Scanner 클래스와 연결하면 데이터를 쉽게 입력받아 처리할 수 있다.
Scanner 클래스가 제공하는 메서드는 키보드로 입력된 값을 공백이나 탭 등 구분자(아래 쓰인 공백문자)로 구별해 데이터로 읽어들인다. 단,nextLine()
메서드는 행 바꿈 문자\n
만 구분자로 사용한다.
\t
\f
\r
,
\n
Enter key
를 입력하면 된다.import java.util.Scanner
public class Scanner_test{
public static void main(String[] args
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
System.out.printf("입력하신 숫자는 %d 입니다.\n",num);
}
System.in
키보드와 연결된 java의 표준 입력 스트림이다.
입력되는 키를 바이트로 리턴하는 저수준 스트림이다.
System.in을 Scanner 클래스 없이 직접 사용하면 바이트를 문자나 숫자로 변환하는 많은 어려움이 있다.
덧. 수업이 많이 하드하다. 기초적인 개념은 네이버 카페에 올라와있고 강의를 보고 하거나 구글링하거나 선생님께 여쭤보는 등 자기주도적 학습으로 주구장창 문제를 풀고 또 풀고 풀고풀고 테스트다.
어려워도 자신의 페이스를 유지해서 끝까지 완주 하는 것을 목표로 삼고 있다.
덧덧. java 패키지나 변수, 클래스명에 한글을 못쓸 줄 알았는데 수업하면서 편견이 깨졌다. 그래도 실무에서는 영어겠지..?
*모든 인용글은 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음에서 참조했습니다.