Java

[Java] 환경변수 설정 / Hello World / 변수(데이터)의 종류와 크기(byte, short, int, long, float, double, char, boolean)

소댓 2023. 3. 2. 17:53

* 환경변수 설정

 

* jdk 설치

> 자바의 소유가 오라클로 넘어갔기 때문에 오라클에서 받기 / 혹은 오픈소스로 받기 가능

 

* java 다운받은 후!

시스템 속성 고급 환경변수 들어가서 시스템변수-path-‘새로 만들기~~bin 경로 추가

그리고 시스템변수-CLASSPATH에 경로 . 추가

> javac.exe

> javac -version

cmd에서 위의 명령어로 확인 가능

 

* eclipse 다 되는 버전으로 다운 받은 후,

경로는 c:\dev\eclipse\workspace로 설정

 


* Hello Java 출력

> TestHello.java 파일을 생성 / TestHello 클래스를 작성 / "안녕하세요~~"라는 문자열을 화면에 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
package basic;
// 주석 : 실행되지 않는 코드 > 편리한 관리를 위해 코드에 대한 설명
 
public class Hello { // Hello 클래스 시작
    // main method : 자바 응용 프로그램의 시작점
    // public static void main ~~~
    public static void main(String[] args) { 
        System.out.println("Hello Java World"); // 1줄 출력
    }
    
 
}
 
cs
1
2
3
4
5
6
7
8
9
package basic;
 
public class TestHello { // TestHello class 시작
    // main method
    public static void main(String[ ] args) {
        // 표준 출려장치에 1줄 출력
        System.out.println("안녕하세요~~"); // 단축어: sysout+ctrl+spacebar    
    }// main method end
}// TestHello class end
cs

 


 

* 변수 : 변하는 수, 이름이 부여된 메모리 영역

- primitive type(기본형) : 논리형, 문자형, 정수형, 실수형
- reference type(참조형)

종류/크기 1byte(=8bit) 2byte(=16bit) 4byte(=32bit) 8byte(=64bit)
논리형 boolean      
문자형   char    
정수형 byte
(-128~127)
short
(O:-32768~32767)
(X:0~65535)
int
(-20억~20억)
long
(-800경~800경)
실수형     float
(정밀도 - 7자리)
double
(정밀도 - 15자리)

(**정수형에서는 int, 실수형에서는 double이 디폴트 타입) 

 

 

* 정수형 변수 : byte(8bit), short(16bit), int(32bit), long(64bit)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package basic;
// 정수형
// byte(8bit) short(16bit) int(32) lonv(64)
 
 
//VArEx1 클래스 시작
public class VarEx1 {
    //main method 시작 > 단축키:main+ctrl+space+enter
    public static void main(String[] args) {
        // 자료형 변수명;
        // 10이라는 숫자를 저장
        byte b1; // b1 이라는 이름의 byte 크기 변수를 선언
        b1 = 10// 대입연산자
                 // b1 변수에 10의 값을 대입해
 
        // 표준 출력 장치에 b1을 출력
        System.out.println(b1);
        System.out.println("----------------");
        // b1 변수에 20의 값을 대입
        // = : 대입연산, 할당연산자
        b1 = 20;
        // b1 변수를 출력
        System.out.println(b1);
        System.out.println("----------------");
        
        // b2 라는 변수 byte 선언
        byte b2;
        //100을 대입
        b2 = 100;
        // 화면에 출력
        System.out.println(b2);
        System.out.println("----------------");
        
        // byte형 변수 b3 만들고 127 값을 할당 후 출력
        byte b3 = 127// 선언과 대입 식 결합
        System.out.println(b3);
        System.out.println("----------------");
        
        // byte 형 변수 b4 -128을 할당 후 출력
        byte b4 = -128;
        System.out.println(b4);
    }
}
cs

 

- byte b3 = 10; > 1010진수로 표현하면? 1010

0 0 0 0 1 0 1 0

: 부호자리

 양수 : 0

 음수 : 1

- byte b4 = 20; > 0001 0100(2진수)

 - 그럼 byte에서 가장 큰 값은? >> 0111 1111 = 127 >> 따라서 byte127까지 대입 가능

 

- 그럼 음수는?

> 1000 0000이라면? = -128로 여김

>> 따라서 byte가 가질 수 있는 값의 범위 : -128 ~ 127

- short의 최대값은? > 0111 1111 1111 1111 > 32,767

 

 

 

 

* 실수형 변수 : float(32bit) / double(64bit)

- float(32bit) : 부호(1bit) + 지수(8bit) + 가수(23bit) = 32bit = 4byte

- double(64bit) : 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package basic;
// VarEx2 class 시작
public class VarEx2 {
    // main method
    public static void main(String[] args) {
        // short 크기의 변수 k를 선언
        short k;
        // 5000 값을 할당
        k = 5000;
        // k 변수의 값을 화면에 출력
        System.out.println(k);
        System.out.println("-------------------");
        
        // short형 변수 k에 최대값 32767 할당
        k = 32767;
        
        // 표준출력장치로 k 출력
        System.out.println(k);
        System.out.println("-------------------");
        
        k = -32768// -0 ==> -32768로 간주
        System.out.println(k);
        System.out.println("-------------------");
        
        // int 크기의 변수 m을 선언
        int m;
        // m에 int의 최대값을 대입
        m = 2147483647;
        // 화면에 출력
        System.out.println(m);
        System.out.println("-------------------");
        
        // 최소값을 대입
        m = -2147483648;
        // 화면에 출력
        System.out.println(m);
        System.out.println("-------------------");
        
        // 자료형 변수명 = 상수;
        // 변수 (항상 변수는 값을 갖는 수)
        // 상수 (항상 동일한 값을 갖는 수)
        
        int m1 = 100// int 크기의 m1변수에 100의 값을 할당(대입)
        byte b1 = 10// byte 크기의 b1변수에 10의 크기를 할당(대입)
        
        long t = 200L; // long 크기의 t변수에 200을 할당(대입)
        // 상수에 L은 2001, 200i와 유사하기 때문에 대문자를 사용; (long형 상수) 
        
        System.out.println(t);
        System.out.println("-------------------");
        
        // 1253 ==> 1.234*1000 ==> 1.253*10^3 ==> 1.253 + 3
        // floating point : 부동 소수점
        
        // 실수형 변수(지수부+가수부)
        // 실수 float형 f1 변수에 3.14를 할당
        float f1 = 3.14f;
        
        // f1 출력
        System.out.println("f1 : "+f1);
        System.out.println("-------------------");
        
        // 실수 double형 변수 d1변수에 3.25를 할당
        
        // double d1 = 3.25d;
        double d1 = 3.25d; // 실수형은 생략하면 double 타입 
        System.out.println("d1 : "+d1);
        System.out.println("-------------------");
    
        double d2 = 9.99// 상수 뒤에 d를 생략하면 자동으로 d
        
        System.out.println("d2 : "+d2);
    }
 
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package basic;
 
public class VarEx3 {
    public static void main(String[] args) {
        int i = 20;
        System.out.println("i : "+ i); // +: 연결연산자
        
        float h = 182.3f;
        System.out.println("h : "+ h);
        
        System.out.println("나이 : " + i + "살 ");
        System.out.println("키 " + h);
    
    }
    
}
cs

 

 

- 형변환 : 데이터를 변수에 저장하거나 연산 중간에 데이터의 자료형을 변환하는 것

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package basic;
 
public class VarEx4 {
    // main method
    public static void main(String[] args) {
        //byte 크기의 b1이라는 변수를 선언하고 10의 값을 할당
        byte b1 = 10;
        
        // byte 크기의 b2라는 변수를 선언하고 50의 값을 할당
        byte b2 = 50;
        
        // 두 변수의 값을 출력
        System.out.println("b1 : "+b1);
        System.out.println("b2 : "+b2);
        
        //short형 변수 sh1dp 18121를 할당
        short sh1 = 18121;
        
        // b1의 변수 안에 들어 있는 값을 sh1 이라는 변수에 대입 >> 소주잔의 값을 맥주잔에 붓는 격
        // short형 변수 sh1에 byte형 변수 b1을 할당. 이때, short형이 더 크므로
        // 암시적 형변환되어 할당된다.
        
        sh1 = b1; // 큰잔 = 작은잔 ;
        
        System.out.println("sh1 : " + sh1);
        
        // b1 = sh1; // 작은 잔 = 큰 잔 overflow
        
        // 명시적 형변환 필요
        // byte형 변수 b1에 short형 변수 sh1의 값을 byte로 형변환 후
        // 할당
        
        b1 = (byte)sh1; // (자료형)
        
        System.out.println("b1 : " + b1);
        
    }
}
cs

 

 

* 문자형 변수 : char(16bit)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package basic;
// 문자 : char : 16bit, 2byte
public class VarEx5 {
    public static void main(String[] args) {
        
        // 16 or 2byte 크기
         
        // 문자형 char로 c1변수를 선언하고 문자 a를 할당
        char c1 = 'a';
        
        // 문자형 char로 c2변수를 선언하고 문자 a에 해당하는 아스키코드를 할당 
        // A : 65
        // a : 97
        // 0 : 48
        // enter 13,10
        
        char c2 = 97;
    
        // 문자형 char c3변수를 선언하고 문자 a에 해당하는 유니코드를 할당
        char c3 = '\u0061';
        
        
        System.out.println("c1 : " + c1);
        System.out.println("c2 : " + c2);
        System.out.println("c3 : " + c3);
        
        // java라는 문자를 출력
        
        // char형 변수에 ch1, ch2, ch3, ch4 <-- j, a, v, a 출력
        char ch1 = 'j'// ch는 한 문자만 저장 가능
        char ch2 = 'a';
        char ch3 = 'v';
        char ch4 = 'a';
        
        // char t1 = 'ab' : 불가
        
        System.out.println("" + ch1 + ch2 + ch3 + ch4); // "" 없으면 오류 발생
        // +
        // 1. 산술연산자
        // 2. 연결연산자 : 문자열 뒤에 오면 (||) 의미를 가진다.
        // " 여러글자 "
        
        // c 언어 ==> 문법 ==> java 언어
        
        // String의 S는 대문자
        String str = "java";
        
        System.out.println(str);
        
        // 화면에 표시하기 어려운 키 값
        // 특수문자: 탭, 엔터
        
        // \n : 엔터
        // \t : tab
        // \b : backspace
        // \\ : \
        // \' : '
        // \\" : "
 
        // 표준 출력장치로 문자열 "오늘은" enter "즐거운" tab "목요일입니다" 를 출력
        
        System.out.println("오늘은 \n 즐거운 \t 목요일입니다");
        
    }
}
 
cs

 

 

* 논리형 변수 : Boolean(1byte) > 운영체제에 따라 1bit 할당하기도..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package basic;
 
public class VarEx6 {
    public static void main(String[] args) {
        
        // 논리 : boolean (1byte or 1bit)
        // c언어는 1 or 0 표현 가능
        // 자바 반드시 true, false로 표현
        
        // 참, 거짓 : 논리값을 저장할 수 있는 자료형
        
        // 논리형인 boolean형 b1을 선언하고 true값을 할당
        boolean b1 = true// boolean b1 = 1; xxxx
        
        // 논리형인 boolean형 b2을 선언하고 false를 할당
        boolean b2 = false// 0 의미
        
        System.out.println("b1 : " + b1);
        System.out.println("b2 : " + b2);
        
    }
}
 
cs

 

 

* 연산자 > 증감연산자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package basic;
 
// 연산자 : 자료 가공을 위해 정해진 방식에 따라 계산하고 그 결과를 얻기 위한 행위를
//           의미하는 기호들의 총칭
// 1. 증감연산자 : ++, --
 
public class OperEx1 {
    public static void main(String[] args) {
        
        // a라는 이름의 int 크기의 공간을 선언
        int a;
        
        // a에 100 값을 할당
        a = 100;
        
        // b라는 이름의 int 크기의 공간 선언하면서 10 값을 할당
        int b = 10;
        
        // a, b를 화면에 출력
        System.out.println("a  : " + a);
        System.out.println("b : " + b);
        System.out.println("--------------");
        
        a = a + 1// 우항에 위치한 값을 왼쪽의 변수에 대입(할당)하라 : 연산자 2개 사용
        // a, b를 화면에 출력
        System.out.println("a : " + a);
        System.out.println("b : " + b);
        System.out.println("--------------");
        
        ++a;
        // a++; // 자기 자신의 값을 1 증가시킴 : 연산자 1개 사용 > 권장
        //a--; // 1 감소시킴
        // a, b를 화면에 출력
        System.out.println("a  : " + a);
        System.out.println("b : " + b);
        
        System.out.println("==============================");
        a = 100;
        b = 10;
        // 멀티 라인 주석 설정, 해제 단축키 : ctrl + /
//        a = a + 1; // a <-- 101
//        b = a; // a 변수의 값을 b 변수에 대입한다.
//        b = ++a; // a를 먼저 증가시키고 b에 대입
        
//        b = a;
//        a = a + 1;
        b = a++// 대입한 뒤 증가
        
        System.out.println("a  : " + a);
        System.out.println("b : " + b);
        
    }
 
    
}
 
cs
++ 참고
- db에서 문자열은 ‘xxxx’ / 자바에서 문자열은 “문자열”
- 'alt + 방향키'는 식을 다른 줄로 옮기기

 

더보기

++ 확인 문제

 

1. 자바에서 사용되는 변수의 종류는?
- primitive type(기본형) : 논리형, 문자형, 정수형, 실수형
- reference type(참조형)

2. 각 변수의 종류와 크기는?
* 정수형 변수 : byte(8bit), short(16bit), int(32bit), long(64bit)
​* 실수형 변수 : float(32bit) / double(64bit)
* 문자형 변수 : char(16bit)
* 논리형 변수 : Boolean(1byte) 

3. byte 의 최대값과 최소값은 얼마이며 왜 그러한가? 
byte는 8bit의 크기로 총 8칸이 할당된다.
그 중에서도 맨 첫번째 칸은 부호(0:양수, 1:음수)를 나타내기 때문에
최대값은 0111 1111 즉, 127이고, 
최소값은 1000 0000로 이것은 -0, 즉 -128을 의미한다.