package kr.s01.basic;
public class VariableMain01 {
public static void main(String[] arg) {
//변수 ( Variable )는 값을 저장할 수 있는 메모리의 공간
//변수 선언 (int = 데이터의 종류[정수], num = 변수명)
int num;
//변수의 초기화
num = 17;
System.out.println(num);
System.out.println("---------------");
//변수 선언, 초기화
int number = 20;
System.out.println(number);
//변수 데이터 변경
number = 40;
System.out.println(number);
// 주의사항
// 동일한 변수명으로 변수를 선언하면 오류 발생
//int number = 30 ;
System.out.println("-----------------");
// 동일한 자료형을 사용하기 떄문에 두번째 변수명 앞의 자료형은 생략함.
int a = 10, b = 20;
int result = a + b;
System.out.printf("result = %d%n", result);
// 숫자 + 숫자 -> 연산
// 문자열 + 숫자 -> 연걸
// 숫자 + 문자열 -> 연결
// 문자열 + 문자열 -> 연결
System.out.println("result = " + result);
// 주의사항
System.out.println("결과 : " + a + b); // 연결
System.out.println("결과 : " + (a + b)); // 연산
// 변수 선언
int no;
// 변수 선언 후 출력 또는 연산하기전에 반드시 변수 초기화를 해야함
//System.out.println(no);
}
}
17
---------------
20
40
-----------------
result = 30
result = 30
결과 : 1020
결과 : 30
package kr.s01.basic;
public class VariableMain02 {
public static void main(String[] args) {
/*
* [실습]
* 정수를 담을 수 있는 변수 3개를 지정한다.
* 변수명은 각각 a,b,c 라고 지정하고 원하는 정수로 초기화한다.
* a + b 연산 후 출력할 떄
*
* [출력예시]
* 결과 = 50 형식으로 출력한다.
*
* c 에 저장 된 데이터를 80으로 변경한다.
* c = 80 형식으로 출력한다.
*
*/
int a = 20, b = 30, c = 40;
System.out.printf("결과 = %d%n",a + b);
c = 80;
System.out.printf("c = %d", c);
}
}
결과 = 50
c = 80
package kr.s01.basic;
public class VariableTypeMain01 {
public static void main(String[] args) {
System.out.println("===논리형===");
//논리형(true. false0
boolean b = true;
System.out.println("b = " + b);
System.out.println("===문자형===");
//문자형, 크기 : 2byte, 표현범위 : 0 ~65,535
//다국어 처리를 위한 유니코드(unicode) 방식
char c1 = 'A'; //내부적으로 아스키코드값 65가 2byte로 변수 c1에 담김
System.out.println("c1 = " + c1);
char c2 = 65; //A에 해당되는 아스키코드값 65를 직접 대입
System.out.println("c2 = " + c2);
char c3 = '\\u0041'; //A를 의미하는 유니코드
System.out.println("c3 = " + c3);
char c4 = '자';
System.out.println("c4 = " + c4);
char c5 = '\\uc790'; //자를 의미하는 유니코드
System.out.println("c5 = " + c5);
System.out.println("===정수형===");
//byte, 크기 : 1byte, 표현범위 : -128 ~127
byte b1 = 127;
System.out.println("b1 = " + b1);
//short, 크기 : 2byte, 표현범위 : -32,768 ~ 32,767
short s1 = 32767;
System.out.println("s1 = " + s1);
//int, 크기: 4byte, 표현범위 : -2,147,483,648 ~ 2,147,483,647
int in = 1234;
System.out.println("in =" +in);
//long, 크기 : 8byte
long lg = 1234L; //L은 long형 데이터를 의미. 소문자도 가능
System.out.println("lg =" +lg);
System.out.println(23); //int로 인식
System.out.println(23L);// long으로 인식
System.out.println("===실수형===");
//float, 크기: 4byte
float f1 =9.1f; //기본이 double이기 때문에 f를 써줌
System.out.println("f1 = " + f1);
//double, 크기: 8byte
double du = 9.8;
System.out.println("du = " + du);
System.out.println("===문자열 표시===");
//문자열 표시(기본자료형이 아님, 참조자료형)
String str = "Hello world!!"; //S는 대문자
System.out.println("str = " + str);
}
}
===논리형===
b = true
===문자형===
c1 = A
c2 = A
c3 = A
c4 = 자
c5 = 자
===정수형===
b1 = 127
s1 = 32767
in =1234
lg =1234
23
23
===실수형===
f1 = 9.1
du = 9.8
===문자열 표시===
str = Hello world!!
package kr.s01.basic;
public class VariableTypeMain02 {
public static void main(String[] args) {
//확장 특수 출력 문자(escape sequence)
char single = '\\''; // 따옴표같은 특수문자를 출력할 땐 역슬레쉬를 쓰면된다.
System.out.println(single);
String str = "오늘은 \\"월요일\\" 입니다.";
System.out.println(str);
//문자열에 '를 표시하면 자동으로 일반문자로 변환됨
String str2 = "오늘은 '서울'에 비가 와요!";//작은따옴표는 큰따옴표 안에 있을 때는 자동으로 문자열로 인식됨
System.out.println(str2);
String str3 = "C:\\\\javaWork\\\\workspace"; //역슬레쉬 출력을 하려면 앞에 똑같이 하나를 더 붙여줘야됨(따옴표 안에서 복붙하면 자동으로 됨)
System.out.println(str3);
String str4 = "오늘은 월요일\\n 내일은 화요일 ";// %n은 printf에서만 사용. 보통 \\n으로 줄바꿈을 사용
System.out.println(str4);
String str5 = "이름\\t나이\\t취미";
System.out.println(str5);
String str51 = "이름\\r나이\\r취미"; // \\r 동일한 줄의 맨앞칸으로 커서만 옮긴다.
System.out.println(str51);
}
}
'
오늘은 "월요일" 입니다.
오늘은 '서울'에 비가 와요!
C:\\javaWork\\workspace
오늘은 월요일
내일은 화요일
이름 나이 취미
이름
나이
취미
package kr.s01.basic;
public class VariableTypeMain03 {
public static void main(String[] args) {
System.out.println("===묵시적 형변환(자동 형변환)===");
//더 큰 자료형으로 승격이 일어나는 형태, 정보의 손실이 전혀 없으며 자동적으로 발생
byte b1 = 127; //byte의 표현범위 : -128~127
byte b2 = 127;
//32bit 미만 byte형 데이터를 연산하면 자동으로 32bit로 변환
int result1 = b1+b2;
System.out.println("result1 = " + result1);
short s1 = 32767; // short 표현범위 : -32,768~32,767
short s2 = 32767;
//32bit 미만 short형 데이터를 연산하면 자동으로 32bit로 번환
int result2 = s1+s2;
System.out.println("result2 = " + result2);
int in1 = 1234;
long lg1 = 5678L;
//in1 : int -> long 자동적으로 형변환
long result3 = in1 + lg1;
System.out.println("result3 = " + result3);
int in2 = 245;
double du1 = 98.2;
//in2 : int -> double 자동적으로 형변환 why? 정수보다 실수가 더 크다고 판단함.
double result4 = in2 + du1;
System.out.println("result4 = " + result4);
}
}
===묵시적 형변환(자동 형변환)===
result1 = 254
result2 = 65534
result3 = 6912
result4 = 343.2
package kr.s01.basic;
public class VariableTypeMain04 {
public static void main(String[] args) {
System.out.println("===명시적 형변환(강제 형변환)===");
//더 작은 자료형으로 강등이 일어나는 형태, 정보의 손실이 발생할 수 있음.
byte b1 = 127;
byte b2 =127;
byte result1 = (byte) (b1+b2); //(b1+b2)는 int형으로 자동으로 형변환된 것을 다시 byte로 강제 형변환함.
System.out.println("result1 = "+ result1); //결과값이 -2 로 완전 왜곡됨.
short s1 = 32767;
short s2 = 32767;
//32bit 미만 short형 데이터를 연산하면 자동으로 32bit로 변환
//자동적으로 int형으로 형변환 된 것을 다시 short로 강제 형변환
short result2 = (short) (s1+s2);
System.out.println("result2 = "+ result2);
float f1 = 3.14f;
int in1 = 15;
//f1: float -> int강제 형변환
int result3 = (int)(f1 +in1);
System.out.println("result3 = "+ result3); //정수로 형변환을 했기 때문에 18.14가 아닌 18로 0.14가 손실됨.
long lg1 =1234L;
int in2 = 59;
//lg1 : long -> int 강제 형변환
int result4 = (int) (lg1 +in2);
System.out.println("result4 = "+ result4);
}
}
===명시적 형변환(강제 형변환)===
result1 = -2
result2 = -2
result3 = 18
result4 = 1293