Java/Java 문법 연습

변수 연습

구너드 2023. 5. 11. 14:24
public class 변수_01 {
public static void main (String[] args) {

// 변수 선언 방법: 변수타입 변수이름 ;



int year;
// 대소문자 구분,길이제한 X,숫자로 시작 불가,특수문자 _$만 허용
int age = 23;
// 변수의 초기화(변수에 값을 저장)
final int score = 100;
// 상수:값을 한 번만 저장 가능



int i = 'A';
long L = 123;
double d = 3.14f;
// 범위가 변수>리터럴이면 Ok

//long l = 3.14f;(에러)
//float f = 3.14;(에러)
// 범위가 변수<리터럴이면 Error(에러 이유), 다만 byte,short 변수에 int 리터럴은 변수 타입의 범위 이내에서만 리터럴 저장 가능
// 1byte = 8bit(2^8), 2byte = 16bit(2^16)
// 참고: https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1%ED%8E%B8-Bit-%EC%99%80-Byte-%EC%B0%A8%EC%9D%B4%EC%A0%90



//boolean b = 50;(에러)
boolean bo = true;
// 논리형(크기 1byte) boolean은 값이 true/false로만 나옴(에러 이유)
char ch = 'A';
// 문자형(크기 2byte)은 변수당 하나의 문자''(여러 개의 문자열은 String "")
byte by = 30; short sh = 900; int in = 9000; long lo = 120000000000000000L;
float fl = 3.5f; double dou = 3.14;
// byte(1byte), short(2byte), int(4byte), long(8byte)
// float(4byte), double(8byte)
// 정수형과 실수형의 디폴트는 int double
// 위의 8가지가 기본형 변수
String str; System stm;
// 참조형 변수들이며 메모리 주소를 저장, 타입에 관계없이 변수의 크기가 항상 4byte
// null은 어떤 객체의 주소도 저장되지 않음을 의미

public class 변수_02 {
public static void main(String[] args) {
int x = 20; int y = 10;
x = y; y = x;

System.out.println("x = " + x);
System.out.println("y = " + y);
// 교환이 제대로 되지 않음

System.out.println();

int a = 20; int b = 10;
int tmp;
tmp = a;
a = b;
b = tmp;

System.out.println("a = " + a);
System.out.println("b = " + b);
// 우유가 담긴 컵과 주스가 담긴 컵의 내용물을 교환할 때 하나의 컵이 더 필요한 거처럼 'tmp라는 컵이 필요함
System.out.println();

short sMin = -32768;
short sMax = 32767;

System.out.println("sMin = " + sMin);
System.out.println("sMin - 1 =");
System.out.println((short)(sMin - 1));
// 정수형 오버플로우 부분에서 이해가 가지 않는 점
// 최솟값에서 1을 뺀 값이 최댓값이 되는 원리는 이해할 수 있으나,

// "sMin = " + sMin , "sMin - 1 =" 이 두 개의 식이 쓰인 이유와, 값이 왜 sMin = -32768 , sMin - 1 = 로 나온지 모르겠음
// 유튜브에서 본 영상에 의하면 +는 문자와 숫자를 더하는 게 아닌 숫자 앞에 문자를 덧붙일때 사용
// "sMin = " + sMin 은 이해

System.out.println();

int num = 5;
char ch = '5';

System.out.println("num = " + num + '0');
// '0'의 값이 48이기 때문에 결과값을 char 타입으로 변환 필요 , 결과식이 잘못된 거 같음
System.out.println("num + '0' = " + (char)(num + '0'));
// 타입 간의 변환방법 유튜브 강의 다시 들어볼 것