Hyebin‘s blog
article thumbnail

패키지, 클래스 ,메소드 선언

java 소스 파일을 보면 공통으로 나오는 부분이 있다. 

바로 패키지 선언부, 클래스 선언부, 메소드 선언부가 있다. 

package ch01.sec09; //패키지 선언

public class Hello { //클래스 선언, 소스 파일 명

	public static void main(String[] args){ //메소드 명 , main메소드 선언
    
    System.out.println("Hello World");
    
    }
}

 

변수 선언

프로그램을 실행하면서 잠시 생성되었다가 사라지는 데이터가 있다. 이러한 데이터들을 저장을 해야하는데 그럼 이 데이터 들은 어디에 저장될까? 정답은 컴퓨터의 메모리(RAM) 이다. 

변수는 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름이다. 변수를 통해서 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다.

변수 = 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름

자바의 변수는 다양한 타입의 값을 저장할 수 없다. 즉, 정수형 변수에는 정수값만, 실수형 변수에는 실수값만 저장할 수 있다.

 

변수의 자동 타입 변환

작은 허용 범위의 타입은 큰 허용 범위의 타입으로 자동 타입 변환이 일어난다. 

byte < sort, char < int < long < float < double
byte byteValue = 10;
int intVal = byteValue

 

char 타입의 경우 int타입으로 자동 형 변환되면 유니코드 값이 int 타입에 대입된다.

char charValue = 'A'
int intValue = chatValue // 65가 들어간다.

하지만 예외가 있다. 

 

byte byteValue = 65;
char charValue = byteValue; //컴파일 에러 발생

 

위와 같이 char타입보다 허용범위가 작은 byte 타입은 char 타입으로 자동 형변환 되지 않는다. 

그 이유는 char 타입의 허용범위는 음수를 포합하지 않는데, byte 타입은 음수를 포합하고 있기 때문이다.

 

강제타입변환

큰 허용 범위 타입은 작은 허용범위 타입으로 자동 타입 변환되지 않는다. 따라서 강제 타입 변환을 해줘야하는데 이는 캐스팅 연산자로 ()를 사용한다. 예를들어 실수에서 정수로 변환할 때, 예를 보면

double doubleValue = 3.14
int intValue = (int)doubleValue // 3만 저장

실수타입은 정수타입보다 큰 허용 범위를 갖는다. 따라서 강제 캐스팅을 한 경우 소수점 이하 부분은 버리고 정수만 남는다.

 

연산식에서 자동 타입 변환

자바의 연산에서 정수연산은 int로, 실수 연산은 double로 나온다. 

하지만 예외가 있다. 리터럴의 연산은 실행의 속도를 향상시키기 위해서 컴파일 단계에서 연산을 시킨다. 

byte result = 10 + 20 // 컴파일 : byte result = 30;
float result = 1.2f + 3.4f;

 

피 연산자가 long타입은 없고,  int타입 이하일 정수일 경우 -> 연산의 결과 :  int 

피 연산자 중에서 long타입이 하나라도 있을 경우 -> 연산의 결과 : long

 

여기서 내가 헷갈렸던 부분을 다시 짚어 보고자 한다.

int x = 1;
int y = 2;
double result = x / y;
System.out.println(result); // 0 출력!

위의 경우 result 는 int 형 이므로, x / y 는 0.5 지만 소수점 자리를 날려 0이 나오게 된다. 

이 경우 해결할 수 있는 방법이 세가지 있다.

1. double result = (double)x / (double)y

2. dobule result = x / (dobule)y

3. dobule result = (double)x / y

 

+ 연산의 두가지 기능

1. 피 연산자가 모두 숫자일 경우 덧셈 연산 수행

2. 피 연산자 중 하나가 문자열 일 경우 나머지 피 연산자도 문자열로 자동 변환되어 문자열 결합 연산 수행

String str = "1" + 2 + 3; // "123"

 

문자열을 기본 타입으로 변환

여기서 Integer.parseIntDouble.paseDouble 은 꼭 알아두자!

 

 

'JAVA' 카테고리의 다른 글

참조 타입, 문자열  (0) 2023.01.15
switch문  (0) 2023.01.07
비교 연산자  (0) 2023.01.05
증감연산자, 오버플로우와 언더플로우  (0) 2022.12.18
프로그래밍 언어와 자바  (0) 2022.12.12
profile

Hyebin‘s blog

@hyebin Lee

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그