【축 완독】/JAVA[DOIT!자바프로그래밍입문]

[2일차]DO IT 자바프로그래밍입문 상수와 리터럴

아딜렛 2024. 2. 1. 00:52

2-4 상수와 리터럴

1)상수 선언하기

상수? 변하지 않는 값

 

Q. 왜 MAX_NUM 값 100 안나오지?

final 필드에 int 정수값 선언하기

max 값 100 지정하고 싶다. 간절히

->A. 왜냐하면 "MAX_NUM"/ "MIN_NUM" 을 넣었기 때문이지!!! 

int값은 MAX_NUM으로 넣었는데 어떻게 상수도 아닌 문자열을 넣는거니!!!  해결OK

 

 

2) 상수를 사용하면 편리한 이유

프로그램 내부에서 반복적으로 사용할 때 사용 , 상수로 선언한 부분의 값만 변경하면 매우 편함

3)리터럴

    (1)모든 숫자, 문자, 논리값의 통칭

    (2) 프로그램이 시작할 떄 시스템에 같이 로딩 되어서 특정 메모리 공간인 상수 풀에 놓인다.

EX) long num은 4바이트(정수 메모리 크기)에 다 안들어간다. long형 표시할때 쓰는 방법

리터럴+L 쓰기

float PI=3.14F

 

2-5 형변환

1)형변환 ▶묵시적 변환(자동 형 변환)/ ▶ 명시적 변환(강제형 변환)

-자료형이 각각 다를때(ex.정수형, 실수형), 하나의 자료형으로 통일하고 연산 해야한다.

자료를 통일하는 방법= 형변환

2) 묵시적 변환

바이트 크기가 작은 자료형에서 큰 자료형으로의 대입

    (1) 덜 정밀한 자료형 → 더 정밀한 자료형

    정수형<실수형

    (2) 연산중 자동 변환

int iNum=20;
float fNum=iNum; // 실수 형으로 변환
double dNum;
dNum=fNum+ iNum; 두 변수를 더한 값이 double 형으로 변환

① fnum+inum= float형으로 변환

② dnum= fnum+inum 에 대입 하면 double 형이 됨

 

3) 명시적 형변환

     (1) 바이트 크기가 큰 자료형 →작은 자료형으로 대입 \

int iNum=10;
byte bNum=(byte)iNum;// 강제로 형을 바꿀때 () 사용한다!! 오!!

     강제 형 변환 (자료형 이름) 써줘야 함. 자료 손실 aka.작은 자료형 이상의 자료는 자료 손실난다.

    (2) 더 정밀한 자료형 →덜 정밀한 자료형

▶부동소수점방식

기수부+지수부로 나누는 방식

3-1 기본연산자

 1)항과 연산자 (연산자= 연산에 사용하는 기호)

 2)대입 연산자

 -이항 연산자 중 우선순위 젤 낮음

int age=24; //나이를 의미하는 age 변수에 24 대입

3)부호 연산자

   (1)-연산자

    ★-연산자만 쓴다고 값이 음수가 되는거 아님

4)산술 연산자

1분 복습

5) 증가/감소 연산자

val=++num num 1 증가하고 val 변수에 대입

int value=10;
int num=++val; // ++라는 연산자가 피연산자 val 앞에 위치하면 문장 끝(;)전에 피연산자값이 1증가/num에 11 대입

6) 관계연산자=비교 연산자(결과값이 항상 참 또는 거직으로 반환)

int num1=10;
		int num2=20;
		
		boolean flag2 = (num1>0)&&(num2>0);
		
		System.out.println(flag2);// flag2는 참
		boolean flag2 = (num1<0)||(num2>0);
	
		System.out.println(flag2);

q.

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

Duplicate local variable flag2

ㅎ... 중복이래

flag 변수 

-> 조건에 따라 true혹은 false값을 넣어주는 boolean형 변수

a. 어쩔??

7)논리연산자

8)복합대입연산자

9)조건 연산자

 

Q.

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Type mismatch: cannot convert from String to char
	Type mismatch: cannot convert from String to char

 ㅎ.....

A.

(fatherAge>motherAge) ?  'T':'f';// "Y"→'Y' 로 바꿔줘요. 젭발

3-2 비트 연산자

비트 연산= 임의의 숫자를 만들거나 마스킹(특정 비트를 꺼내는것)

4. 제어흐름 이해하기

4-1. 조건문

1)if 문과 if -else 문

 2)if -else  if -else 문

package ifexample;

public class IfExample1 {

	public static void main(String[] args) {
		int age=65;
		int charge;
		
		if(age<8)
		{charge=1000;
		System.out.println("취학 전 아동입니다.");
	
		}
		else if(age<14)
		{charge=2000;
		System.out.println("초등학생입니다.");}
		else if(age<20)
		{charge=2500;
		System.out.println("청소년입니다.");}
		else if(age>60)
		{charge=0;
		System.out.println("경로우대입니다.행복하세요");}
		

	}

}

if if문은 조건마다 비교해서 못쓰겠다.