상세 컨텐츠

본문 제목

JAVA 기본형 (자료형, 기본자료형) ValueType, Wrapper Class, MAX_VALUE, MIN_VALUE, SIZE, Shift 연산자, 포매팅(printf)

BackEnd/JAVA

by H_Develop 2022. 7. 19. 16:33

본문

데이터 타입 (1byte : 8bits)

1Byte 2Byte 4Byte 8Byte
byte short int long
    float double
  char    

 

프로그램 실행에서 변수 값을 외부에서 주면서 함께 실행시키는 변수파라미터 변수라고 한다.

 

public class java01{
	public static void main(String[] args) {
    	System.out.println("이름 : " + args[0]);
        int age = 2022 - Integer.parseInt(arge[1]);
        System.out.println("나이 : " + age)
    }
}

메모장에 작성 후,

cmd > cd C:\ 접속 > cd jwork 접속 (java file 가지고 있는 폴더) > dir 로 파일 체크

javac java01 로 컴파일 > dir 컴파일된 파일 확인 > java java01 김철수 1998로 매개변수 두가지 입력

>

이름 : 김철수
나이 : 24 
출력

 

public static void main(String[] args){
	String name = "홍길동";
    int salary = 300;
    float bonus = salary * 0.3f;
    int total = salary * 12 + (int)bonus;
    
    System.out.println("이름 : " + name + ", 월급 : " + salary + ", 보너스 : " + bonus + ", 총액 : " + total);
}

// bonus를 정수인 salary와 실수인 0.3의 값을 실수로 나타내기 위해 float 타입을 주고, (0.3뒤에 f를 붙여야한다.)
// int 로 하기 위해선 int bonus = (int)(salary * 0.3); 으로 형변환 해주어야 한다.

 

문자형 char
문자열 String
숫자형 byte, short, int, long
실수형 float, double
논리형 boolean

 

char String int double boolean 을 주로 사용한다.
상수는 모두 대문자로 사용하며, final을 붙여 변경할 수 없게 한다.

Final PI = 3.14;

 

public static void main(String[] args) {
	boolean b = true;
    
    System.out.println(b);
	System.out.println(!b);
	System.out.println(10>5);
	System.out.println(b==false);
}

true
false
true
false

 

 

Wrapper Class

일반 변수로는 처리할 수 없는 MAX_VALUE, parseInt, ... 등의 기능을 처리하기 위해 

내장된 Integer, Double, .. 등을 불러 사용한다.

 

public class java01 {
	public static void main(String[] args) {
		int a = 100;
        String b = "200";
        
        System.out.println(a+b);	// +는 변수 a 와 b 를 같이 나타내라는 뜻으로 해석이 됨
//		System.out.println(a-b);	// 문자열과 숫자는 계산이 되지 않기에 - 는 사용 불가
        System.out.println(a-Integer.parseInt(b));
        // parseInt()로 숫자로 변형해주는데, Integer를 앞에 붙임으로써, 
        // 형변환의 타입을 지정해준다.
		// parseInt()를 사용하기 위해서는 Wrapper Class를 사용해야 한다.
    }
}

 

public class java01 {
	public static void main(String[] args) {
		double num1 = 3.14;		// double 형은 충분히 3.14 포함.
		double num2 = Math.PI;	// Wrapper Class Math에서 PI 호출
		final double PI = 3.14;

		float num3 = 3.14f;	// 숫자 뒤에 f를 붙여서 불안정한 것을 제거해준다.
		float num4 = (float)3.14;	// 명시적 형변환.

		System.out.println(num1);
		System.out.println(num2);
		System.out.println(PI);
		System.out.println(num3);
		System.out.println(num4);
	}
}

3.14
3.141592653589793
3.14
3.14
3.14

 

 

 

MAX_VALUE,  MIN_VALUE,  SIZE

타입 별 최대 최소 수치 및 크기

 

public class java01 {
	public static void main(String[] args) {

		int num1 = 10;
		System.out.println(Byte.MAX_VALUE);
		System.out.println(Byte.MIN_VALUE);
		System.out.println(Short.MAX_VALUE);
		System.out.println(Short.MIN_VALUE);
		System.out.println(Integer.MAX_VALUE);	// Integer를 Wrapper Class로 부른다.
		System.out.println(Integer.MIN_VALUE);
		System.out.println(Long.MAX_VALUE);
		System.out.println(Long.MIN_VALUE);
		System.out.println();
		System.out.println(Float.MAX_VALUE);
		System.out.println(Float.MIN_VALUE);
		System.out.println(Double.MAX_VALUE);
		System.out.println(Double.MIN_VALUE);
		System.out.println();
		System.out.println(Byte.SIZE);
		System.out.println(Short.SIZE);
		System.out.println(Integer.SIZE);
		System.out.println(Long.SIZE);
		System.out.println(Float.SIZE);
		System.out.println(Double.SIZE);
	}
}
결과

127						Byte
-128					Byte
32767					Short
-32768					Short
2147483647				Integer
-2147483648				Integer
9223372036854775807		Long
-9223372036854775808	Long

3.4028235E38			Float 
1.4E-45					Float
1.7976931348623157E308	Double
4.9E-324				Double

8						Byte
16						Short
32						Integer
64						Long
32						Float
64						Double

 

쉬프트 (shift) 연산자

비트 이동 연산자

a = 12
2진수로 00000000 00000000 00000000 00001100 이다. (int 는 4Byte이기에 0이 16개 1Byte = 8 Bit)
여기서 a >> 2를 계산하면 오른쪽으로 2칸 밀리기에
00000000 00000000 00000000 00000011 이렇게 계산이 된다.
그럼 2 + 1로 결과는 3이다.
a << 2 라면,
00000000 00000000 00000000 00110000 이 되어,
48이 된다.

 

증감연산자, 기본 연산, 쉬프트 연산자(비트 이동 연산자)

public class java01 {
	public static void main(String[] args) {
		int i=5, j=0;
        j = j++;	// j가 증감되기전에 초기화인 0인 값이 j에 대입되었기에 j는 0으로 고정된다.
        System.out.println(i + ", " + j); // 위 내용으로 0이 출력된다.
		
		i = 5;
		j = ++i;	// i가 증감 된 채로 j에 대입되어 6이 됬으며,
		System.out.println(i + "," + j); // i는 위의 증감연산자로 인해 6이 출력된다.
		
		int a = 3, b = 5;
		a += 3;
		System.out.println(a);
		
		b /= 5;
		System.out.println(b);
		
		a = 12;
		a >>= 2;	
		// shift 연산자, 변수 a 의 12값을 이진수로 바꾸어 우측으로 2비트 이동한 뒤, 십진수로 변환
		System.out.println(a);
    }
}

 

public class java01 {
	public static void main(String[] args) {
		int a= 65;
		char c = 'B';
		
		System.out.println(a==c);	// boolean
		System.out.println(a=c);	// a가 변수 타입이 int이기에 c가 형변환이 되었다.
		System.out.println(a);		// 변수 a는 위에 c가 대입되었기에 위에 값과 같이 나온다.
		System.out.println(c);		// 변수 c를 변환해준적이 없기에 그대로 문자 B출력된다.
		System.out.println('B' != 65); // ASCII에 의해 B는 66이기에 65는 아니라서 결과는 TRUE
	}
}

false
66
66
B
true

 

 

논리 연산자

public class java01 {
	public static void main(String[] args) {
		int a= 7;
		System.out.println(a > 5 && a < 0); // && and 
		System.out.println(a > 5 || a < 0); // || or      vertical bar
	}
}

false
true

 

 

 

3항 연산자

 

public class java01 {
	public static void main(String[] args) {
		int a = -7;
		
		System.out.println(a > 0 ? a : -a);	
		// 3항 연산자, (조건 ? 참 : 거짓)
	}
}

// 7

 

 

String 문자열

 

public class java01 {
	public static void main(String[] args) {

		String str = "Hello " + "Java";
		System.out.println(str);
		
		String c = "AB";
//		String str = 123 + c;	
		// 이미 메모리에 str에 대한 메모리를 할당 받았기 때문에 재선언이 불가하다.
		str = 123 + c;	// 123과 c를 문자열로 처리하여 대입한다. str은 String 이기 때문.
		System.out.println(str);
	}
}

 

 

 

출력에서 포매팅(formatting)(print'f')은 print()와 println() 메써드는 서식을 지정해서 출력하는데,
print("3") // 문자열
print("%d", 3) // 서식과 상수의 대응
print("%d는 %d보다 크다\n", 2+1, 2); //서식에 대응하는 값 입력
 - print("총점 %d와 평균 %f는, 87+90+78, (87+90+78)/3");
%d 정수    %f 실수     %c 문자(' ')      %s 문자열(" ") 로 표시
"4d"는 4 자리 정수, "%04d"는 0으로 채워져 4자리, %6.2f는 전체 6자리에서 소수점 2자리
\t 는 tab으로 간격을 만듦

 

public class java01 {
	public static void main(String[] args) {
		
		int a = 10;
		double b = 3.24;
		System.out.printf("%10d\n", a);
		System.out.printf("X%9.5f\n",b);
		System.out.println("---------------");
		System.out.printf("%10f\n\n", a*b);
	}
}

              10
X  3.24000
---------------
 32.400000

 

 

Scanner를 이용한 학생 총점과 평균 구하기.

 

import java.util.Scanner;
public class java01 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String name = "김철수";
		System.out.println("국어 점수 입력");
		int kor = sc.nextInt();
		System.out.println("영어 점수 입력");
		int eng = sc.nextInt();
		System.out.println("수학 점수 입력");
		int math = sc.nextInt();

		int total = kor + eng + math;
		double avg = total / 3.0;
//		System.out.println("이름 : " + name);
//		System.out.println("국어 : " + kor + " 영어 : " + eng + " 수학 : " + math);
//		System.out.println("총점 : " + total + " 평균 : " + avg);
		
		System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
		System.out.printf("%s\t%d\t%d\t%d\t%d\t%5.2f", name, kor, eng, math, total, avg);
				// %5.2f 전체 5자리 소수점 2째자리
	}
}

관련글 더보기