JAVA 0주차 - 변수와 자료형

딩딩당당·2022년 11월 7일
0

자바 공부

목록 보기
1/3

> 1. 변수

변수란 특정 값을 담는 상자의 주소 또는 이름이라고 이해하면 될 것 같다.
변수를 선언할 때 이름짓고 불러올 때 해당 이름으로 불러온다. 불러오면 변수 안에
저장되어 있던 값을 활용할 수 있다.

  • 변수는 하나의 값만 저장 가능
    -> 여러 개의 값의 저장을 시도할 경우 위에서 아래로 읽히는 프로그램 특성 상
    마지막에 저장된 값만 불러온다.
    (말이 마지막에 저장된 거지 사실상 마지막 값으로 대체되었다고 볼 수 있다.)

1-1. 변수 선언과 호출

변수를 선언할 때 필요한 세가지가 있다.
변수의 타입
변수의 이름
변수의 초기값(선택)

  • 변수의 초기값은 선택 사항이지만 초기값을 정하지 않은 채 아무 값도 넣지 않았으면 호출 할 수 없다.

아래는 변수의 선언과 호출 예시이다.

> int i = 10

(타입) (이름) = (초기값)

system.out.print(i)

  • 출력 결과
    10

> > 2. 변수의 타입

변수의 기본 타입은 정수, 실수, 논리가 있다.

  • 정수 타입
    byte, char, short, int, long
  • 실수 타입
    float, double
  • 논리 타입
    boolean

2-1. 정수 타입의 각 차이점

정수 타입의 각 차이점은 char 말고는 저장용량의 차이밖에 없다고 봐도 무방하다.
char는 좀 특이한데 음수를 저장할 수 없으며 숫자를 문자로 변환할 수 있다.
예를 들어

char a = 65
라고 저장했을 때 호출하면 유니코드 65에 해당하는
대문자 A가 출력되는 것을 볼 수 있다.

2-2. 실수 타입의 각 차이점

실수 타입에는 float과 double이 있다.
개인적으로 저장용량도 높고 사용하기도 편한 double을 자주 사용할 것 같다.

- 첫 번째 차이점
첫번 째 차이점으로는 위에서 말한 것 처럼 저장 용량의 차이이다. double 타입이 값의
허용 범위가 훨씬 넓다

- 두 번째 차이점
사용 방법에서 차이가 있다. float타입의 경우 조금 불편하다고 볼 수 있는데 값을 저장할 때
float 타입임을 명시해줘야한다.

**

float f = 3.14F;
double b = 3.14;

위 예시처럼 float은 float 타입임을 명시해줘야하는 반면에 double은 정수 타입처럼
그냥 사용해도 되는 것을 알 수 있다.

> 3. 논리 타입

논리 타입은 참과 거짓을 분별하는 변수로 true와 false를 저장할 수 있다.
주로 조건문에 많이 사용되며 참이면 ~~ 실행 거짓이면 ~~ 실행 이런 식으로 구분짓는 역할을 한다.

*예시

boolen stop = true;
if(stop){
System.out.print("중지합니다.");
}else{
- if문은 true면 실행한다.
위에서 stop이 true로 저장됭었식 떄문에 else 구문은
실행되지 않는다.

}


변수의 타입 변환

1. 자동 타입 변환

자바는 자동으로 타입을 변환해주는 기능이 있다. 허용 범위가 작은 타입이 허용 범위가 큰 타입에
저장될 때 자동으로 변환된다.

  • 허용 범위 크기
    byte < short < int < long < float < double

*예시

byte b = 10;
int i = b; -> 자동 타입 변환( byte -> int )

2.강제 타입 변환

큰 허용 범위의 타입은 작은 허용 범위의 타입으로 변환될 수 없다. 하지만 강제 타입 변환을 사용하면
모두 변환할 수는 없을지라도 일부는 변환해서 변환할 수 있다.

*예시

int i = 10
byte b = (byte)i -> (강제 타입 변환할 타입)i

char의 경우는 조금 재미있다. int 타입에 저장된 숫자를 char 타입으로 변환하면 해당 유니코드의
문자가 출력되기 때문이다.

*예시

int i = 65
char c = (char)i
// 65에 해당하는 문자 A가 출력

3. 정수 연산 과정에서의 자동 타입 변환

정수 타입 변수가 연산식에 의해 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의
변수는 int 타입으로 자동 변환된다.

*예시

byte x = 10;
byte y = 20;
int result = x + y;

  • byte 타입인 x와 y는 int보다 허용 범위가 작은 타입이다. 때문에 연산 결과가
    int result에 int 타입으로 변환되어 저장될 수 있다.
    // 30이 출력된다.

4. 실수 연산에서의 자동 타입 변환

실수 연산자에서 피연산자 중 하나가 double 타입이면 다른 피연산자도 double 타입으로
자동 변환되어 연산을 수행한다. 따라서 결과도 double 타입으로 나오게 된다.

5. 연산에서의 문자열 자동 타입 변환

자바에서 + 연산자는 피연산자가 모두 숫자일 때는 덧셈을 연산하지만, 하나라도 문자열일 경우는
나머지 하나도 문자열로 변환되어 연산한다.

*예시

String str = 3 + "7";

  • 숫자에 ""를 붙이면 문자열로 인식한다. 따라서 출력 결과는 10이 아니라 37이 나온다.
    -> 3이라는 숫자가 문자열 "7"과 연산됐기 때문에 "3"으로 변환되어 단순히 두 문자열을 나열한
    37이 출력되는 것이다.

반대로 문자열을 기본 타입으로 강제 변환할 수 있다.

  • 사용법
    (아래는 문자열 10을 byte 타입으로 변환하는 방법이다.)

    String -> byte
    String str = "10";
    byte b = Byte.parseByte(str);
    (타입 변수명 = 타입.parse타입(변수);)

6. 변수값 출력하기

화면에 무언가를 출력하기 위해서는
System.out.println()를 사용할 줄 알아야한다.
prinln() 메소드 () 안에 리터럴이나 변수를 넣으면 입력한 값이 출력되고 줄을 바꾼다.

다른 종류로는
print()와 printf()가 있는데 print()는 입력한 내용을 그대로 출력하는 반면에
printf는 사용법이 조금 복잡한 반면 범용성이 넓다고 볼 수 있다.
printf("형식문자열", 값1, 값2,....);

*printf() 예시

System.out.printf("과목 : %s\n", "자바") -> \n은 줄바꿈을 뜻한다.
System.out.printf("수업시간 : %d시 부터 %d시 까지", 3, 9)
// 출력결과
과목 : 자바
수업시간 : 3시 부터 9시 까지

6-1. Scanner를 이용해서 입력값 출력하기

자바 유틸 Scanner를 사용하기 위해서는 먼저 최상단에 선언하여 임포트하고 사용해야한다.

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
String input; //String 타입의 변수 선언
while(true) {  //true 이므로 breake를 만나기 전까지 계속 반복
	input =  scaanner.nextLinee() -- 엔터를 입력하기전 까지 대기 상태
	System.out.println("입력된 문자열 : \"" + input + "\"");
		if(input.equals("end"){ -- breake를 실행할 조건문
 			breake;
 }
}
// 출력 결과
a
입력된 문자열 : "a"
end
입력된 문자열 : "end"
종료
profile
자바공부해요흑흑

0개의 댓글