자료형
import java.util.Random;
//난수발생 객체
Random rand = new Random();
float f = 1.234567890123456789F; //.이하가 7자리까지 표시
double d = 1.234567890123456789; //.이하가 16자리까지 표시
System.out.printf("%.20f\n", f);
System.out.printf("%.20f\n", d);
//byte b = 100; //01100100
//stack memory영역에 1byte할당
//그곳의 이름 b부여 그리고 값을 100을 넣어줌
// 나머지(%)
z = x % y ;
// %를 문자로 인식 : %%
// "를 문자로 인식 : \"
System.out.printf("\"%d %% %d = %d\"\n", x, y, z);
// System.out: 출력객체
// System.in : 입력객체
//name = scan.next();//문자열 받기(공백없이 받을때)
name = scan.nextLine();//공백포함해서 받기
age = scan.nextInt();// scan으로부터 정수값 받기
// scan.nextDouble()
// scan.nextFloat()
// scan.nextBoolean()
scan.nextLine();//키보드버퍼에 남아 있는 엔터를 제거
addr = scan.nextLine();//공백포함해서 받기
변수를 선언하는 이유 : 차후에 사용하거나 값을 변경하기 위해
%c : 문자형 (대표적으로 char)
%s : 문자열 (캐릭터 배열 or String)
%f : 실수형 (double, float)
%o : octal (8진수)
%d : 정수 (10진수)
%x : hexa (16진수)
8진수 앞에 0을 붙인다.
16진수 앞에 0x 붙인다.
// 연산시 자동형변환
/*
### int 형보다 작은자료형의 연산결과는 int
byte + byte => int
byte + short => int
short + short => int
byte + int => int
### int 형 이상자료형은 큰쪽으로 변환
byte + long => long
int + long => long
1 + 1L =>
int + float => float
int + double => double
*/
// 키보드버퍼 = 큐
//형변환 연산자: (cast) 강제형변환
/*
형변환
자동형변환(묵시적형변환)
- 대입시 : 좌변항쪽으로 맞춰진다(자료형 클경우)
- 연산시 : 자료형이 큰쪽으로 맞춰져서 연산
강제형변환(명시적형변환)
(자료형)값
*/
class 단항연산자
{
public static void main(String[] args)
{
// ~ (tilde:틸드) : 이진논리 Not 연산자 <= 1보수
int n = 10; // 1010
// 0101
System.out.printf("[%32s]\n", Integer.toBinaryString(n));// 2진법 계산
System.out.printf("[%32s]\n", Integer.toBinaryString(~n));// 1보수(~를 붙이면 됨)
n=0xf0f0f0f0;//16진수
System.out.printf("[%32s]\n", Integer.toBinaryString(n));// 2진법 계산
System.out.printf("[%32s]\n", Integer.toBinaryString(~n));// 1보수(~를 붙이면 됨)
n = -1;
System.out.printf("[%32s]\n", Integer.toBinaryString(n));// 2진법 계산
System.out.printf("[%32s]\n", Integer.toBinaryString(~n));// 1보수(~를 붙이면 됨)
n = 10;
System.out.printf("[%32s]\n", n);
System.out.printf("[%32s]\n", ~n);
// ! : 일반논리 Not연산자
boolean bYes = !(3>2);
System.out.printf("bYes=%b\n", bYes);
// ++, -- : 증감연산자 <= 자신의 값을 1씩 증(감)하는 연산자
// 변수++(후위형) : 모든 연산이 종료되고 연산됨
// ++변수(전위형) : 가장먼저 연산되고 종료됨
int m =10;
System.out.printf("m=%d\n", m);
++m; // m = m + 1
System.out.printf("m=%d\n", m);
m--; // m = m - 1
System.out.printf("m=%d\n", m);
int z;
int x=10;
int y=5;
//복합적인 연산에서 전(후)위형의 의미가 있다
z= ++x + y++;
// 연산순서
// 1) ++x => x=11
// 2) z = x + y => z=11+5
// 3) y++ => y=6
System.out.printf("x=%d y=%d z=%d\n", x, y, z);
System.out.printf("--z=%d z++%d\n", --z, z++);
// - : 부호연산자
x = -10;
System.out.printf("|%d|=%d\n", x, -x);
x = -x; // x = x * (-1)
System.out.printf("|%d|=%d\n", x, -x);
//형변환 연산자: (cast) 강제형변환
/*
형변환
자동형변환(묵시적형변환)
- 대입시 : 좌변항쪽으로 맞춰진다(자료형 클경우)
- 연산시 : 자료형이 큰쪽으로 맞춰져서 연산
강제형변환(명시적형변환)
(자료형)값
*/
// 좌변항 = 우변항
double b = 10; // 1) 10->10.0 변환
System.out.println(b);
// 강제형변환
float f = (float)10.0;
// 연산시 자동형변환
/*
### int 형보다 작은자료형의 연산결과는 int
byte + byte => int
byte + short => int
short + short => int
byte + int => int
### int 형 이상자료형은 큰쪽으로 변환
byte + long => long
int + long => long
1 + 1L =>
int + float => float
int + double => double
*/
byte b1 = 1;
byte b2 = 2;
byte b3;
b3 = (byte)(b1 + b2);
// 키보드버퍼 = 큐
}
}
class 자료형_double
{
public static void main(String[] args)
{
//실수형 : 기본형은 double
//상수 : 0.0 1.2E+001(지수)
// : 0.0F <= float상수
//출력서식: %f %e<= 소숫점 6자리를 출력
// : %g <= 자릿수가 적은쪽으로 출력
// : %m.nf
// : %m: 전체자릿수 n:소숫점이하 자릿수
double d= 123.45;
System.out.printf("퍼센트 f : %f\n", d);
System.out.printf("퍼센트 e : %e\n", d);
System.out.printf("퍼센트 g : %g\n", d);
System.out.printf("퍼센트10.1f : [%10.1f]\n", d);//.이하 1자리까지 출력하되 반올림
System.out.printf("퍼센트010.1f : [%010.1f]\n", d);//빈공간은 0으로 채워라
System.out.printf("퍼센트.1f : [%.1f]\n", d);
}
}