반응형

 

에러명 : the selection did not contain any resources that can run on a server

 

해당 프로젝트 우클릭후 들어가준다.

 

 

다음과 같이 [Project Facets] 에서 Dynamic Web Module 체크 후 저장해준다.

 
반응형
반응형

상속이란 ?

 

자식 클래스는 부모 클래스에서 정의된 변수나 메소드를 자기 자신 것처럼 사용할 수 있다.

 

상속 형태

class 부모클래스명 {

        변수;

        메소드;

}

 

clasee 자식클래스명 extends 부모클래스명 {

        실행할 문장; 

}

 

오버라이딩

- 부모로부터 상속받은 메소드를 자식 클래스에서 자기 자신 클래스의 기능에 맞도록 재정의하는 기능

 

바로 예시로 들어가보겠습니다

동일 패키지에 존재한다는 가정하에 클래스 파일을 분리해서 만들었습니다.

 

부모클래스

GrandF.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class GrandF {
 
    public String name = "홍길동할아버지";
    protected String gahun = "열심히하자";
 
    public GrandF() {
        System.out.println("할아버지 생성자입니다");
    }
 
    public void say() {
        System.out.println("할아버지가 말씀하셨다.");
    }
 
}
 
 

3-4번 줄 : name과 gahun이라는 변수명과 변수 값을 정해줍니다.

6-7번 줄 : 생성자를 한번 더 복습해보았습니다.

10-11번 줄 : say라는 메소드를 생성해주었습니다.

 

자식클래스

gajok.java

 

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
public class Fatherr extends GrandF {
 
    public String gabo = "지역변수"// 은닉화
 
    public Fatherr() {
        super(); // 부모 생성자 호출. 아규먼트에의해 선택적으로 호출
     
    }
 
    @Override
    public void say() {
        // TODO Auto-generated method stub
        System.out.println("자바 공부를 합시다");
    }
 
    public void showData() {
 
        String gabo = "멤버변수";
 
        System.out.println("gabo : " + gabo); // 멤버변수
        System.out.println("gabo : " + this.gabo); // 지역변수
        System.out.println("gabo : " + super.name);
 
    }
 
    public static void main(String[] args) {
        Fatherr fa1 = new Fatherr();
        fa1.say();
        fa1.showData();
 
    }
 
}
 
 

5번 줄 : GrandF 클래스를 gr이라는 새로운 객체로 생성해준다.

6번 줄 : super()는 부모 클래스의 생성자를 호출하기때문에 "할아버지 생성자"를 호출합니다.

10번 줄 : 기존  부모클래스에서 "할아버지가 말씀하셨다"를 호출해야하지만 자식클래스에서 상속을 받았기 때문에 "자바 공부를 합시다"가 출력됩니다.

16번 줄 : 변수별로 어떤 차이점을 가지는지 보여주기위해 작성하였습니다.

28번 줄 : 오버라이딩한 내용을 출력합니다.

 

 

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

8 - 생성자(Constructor)  (0) 2020.03.04
7 - 메소드  (0) 2020.03.04
6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
반응형

생성자란?

 

new 연산자에 의해서 객체 생성시 항상 실행하는 것으로, 객체 초기화시에 사용된다.

 

특징

 

- 객체를 생성할 때 멤버 변수의 값을 쉽게 초기화하기 위함이다.

- 클래스 이름과 동일하다.

- 클래스에 인자 있는 생성자를 정의하고, 빈 생성자도 같이 사용하고 싶다면 반드시 정의해주어야 한다.

- 하나의 클래스 안에 여러개의 생성자를 정의할 수 있다.

 

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
class ProDuctions {
 
    String name;
    int price;
 
    public ProDuctions() {
        // TODO Auto-generated constructor stub
 
    }
 
    public ProDuctions(String name) {
        // TODO Auto-generated constructor stub
        this.name = name;
    }
 
    public ProDuctions(int price) {
        // TODO Auto-generated constructor stub
        this.price = price;
    }
 
    public ProDuctions(String name, int price) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.price = price;
    }
 
}
 
public class ProductionMain {
 
    public static void main(String[] args) {
        ProDuctions pd = new ProDuctions();
        System.out.println("pd.name : " + pd.name + "   pd.price : " + pd.price);
 
        ProDuctions pd1 = new ProDuctions("감자");
        System.out.println("pd1.name : " + pd1.name + "   pd1.price : " + pd1.price);
 
        ProDuctions pd2 = new ProDuctions(50000);
        System.out.println("pd2.name : " + pd2.name + "   pd2.price : " + pd2.price);
 
        ProDuctions pd3 = new ProDuctions("고구마"123456);
        System.out.println("pd3.name : " + pd3.name + "   pd3.price : " + pd3.price);
 
    }
 
}
 

 

6-8 줄 : 빈 생성자를 정의

11-13 줄 : 객체 생성시 name 값을 초기화 시키고 this 생성자를 통해 자신 객체를 참조한다. this의 생성 이유는 클래스에서 정의된 멤버 변수임을 정의하기 위해서이다.

 

16-18 줄 : price 값을 초기화시키면서 객체를 생성할 수 있는 생성자를 정의하는 부분

21-24 줄 : name과 price 값을 초기화시키고 생성자를 정의

 

32-42 줄 : 각 다른 생성자를 호출해서 객체를 생성하고 각 변수 값을 출력한다.

 

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

9 - 상속  (0) 2020.03.04
7 - 메소드  (0) 2020.03.04
6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
반응형

클래스

자바에서 생성되는 프로그램의 최소 단위

 

클래스를 만드는 주된 이유

- 나만의 타입 코드를 클래스를 생성하기 위해서

 

 

클래스 형식

class 클래스명 {

     변수 정의;

     메소드 정의;

 

}

 

클래스 형식 예시

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Bank {
    
    // 클래스에서의 변수 지정
    String name;
    int num;
    int addmoney;
    
    // 메소드 지정
    void addMoney() {
        System.out.println("돈을 넣었습니다.");
    }
    
    void minusMoney() {
        System.out.println("돈을 뺏습니다.");
    }
 
 
}
 
 

객체 생성

Car mycar1; // Car 클래스 타입인 mycar1 레퍼런스 변수를 선언

mycar1 = new Car(); // new 연산자를 사용해서 메모리상에 mycar1 객체를 생성

그림으로는 다음과 같이 표현이 가능합니다

 

 

 

 

객체를 생성하고 객체의 변수와 메소드 사용하는 예시를 들어보겠습니다.

 

변수와 메소드를 정의해준 클래스

Car.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Car { // 접근지정자 class 클래스명(대문자로 시작하고 source명과 동일해야함)
    // 멤버 필드(전역변수) : 속성(특성, 구성 요소)
 
    
    int speed; 
    public String irum; 
    
    //메소드 정의
    void speedUp() {
        speed++;
    }
    
    void speedDown() {
        speed--;
    }
 
}
 
 

객체를 생성하고 위에 만든 Car.java를 사용해보겠습니다.

MyCar.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MyCar { 
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Car myCar = new Car();
        
        //변수 사용
        myCar.speed = 60;
        myCar.irum = "홍길동";
        
        //메소드사용
        System.out.println("차주인은 : "+myCar.irum + " 현재 속도는 : " +myCar.speed);
        myCar.speedUp();
        System.out.println("speedUp하였습니다. 현재 속도는 : " + myCar.speed);
        
        myCar.speedDown();
        System.out.println("speedDown하였습니다. 현재 속도는 : " + myCar.speed);
        
    }
 
}
 
 

 

6번째 줄 - Car 클래스를 새로운 객체 myCar로 생성합니다.

9-10번째 줄 - Car 클래스에 정의되어있는 변수를 사용합니다.

13-18번째 줄 - Car 클래스에 정의되어있는 메소드를 불러와서 사용합니다.

 

출력 결과

1
2
3
4
차주인은 : 홍길동 현재 속도는 : 60
speedUp하였습니다. 현재 속도는 : 61
speedDown하였습니다. 현재 속도는 : 60
 

 

이번에는 변수의 종류에 대해서 알아보도록 하겠습니다.

 

default 현재 패키지 내에서 호출 가능
private 캡슐화 - 현재 클래스 내에서만 홏출 가능
public 현재 프로젝트 내에서 호출 가능

 

 

 

 

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

8 - 생성자(Constructor)  (0) 2020.03.04
7 - 메소드  (0) 2020.03.04
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
반응형

반복문

 

for문

반복 횟수가 정해져 있는 문장을 실행할 때 사용

예를 들도록 하겠습니다

        int a;
        int sum=0;
        
        for (a = 1; a <= 10 ; a+=2) { //for( 초기; 조건; 증감) for문은 초기치와 목적치에만 영향을 받게 해줘야 함
            System.out.print(a + " ");
            sum += a; // 누적        
       }

해당 소스를 보면 변수 a는 1부터 10까지 2씩 증가한다는 조건을 확인할 수 있습니다.

 

        System.out.println("\nfor 탈출 후 a값은 ? " + a);
        System.out.println("합은 " + sum);

1 3 5 7 9 를 출력하게 된다.

 

 

다른 몇가지 예를 들어보겠습니다.

 

 

1) for문을 통하여 아스키코드 대문자 A - Z 를 출력하는 방법을 보여드리겠습니다.

 

for(int i = 65; i <=99; i++) {
            System.out.print((char)i + " ");
        }
 

i가 출력문에서 65가 들어가야하지만 앞에 (char)로 형 변환을 주었기 때문에 A를 출력하게 된다.

그러므로 결과값은 

 

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c 과 같이 출력 된다.

 

 

 

2) 거꾸로 아스키코드 문자를 정수로 출력하는 반복문을 실행해보겠습니다.

 

for(int i = 'A'; i <= 'Z'; i++) {
            System.out.print((Integer)i + " ");
        }
 

출력문에서 i가 A부터 출력 되어야 하지만 앞에 (Integer)로 형 변환을 주었습니다.

그러므로 이번 결과값은 다음과 같습니다.

 

65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 

 

 

 

3) 증감식을 다르게 주어보겠습니다.

 

for(int i = 90; i >=65; i-=2) {
            System.out.print((char)i + " ");
        }
 

이번에는 i의 조건이 90부터 65까지 줄어드는 것을 반복합니다. 그런데 증감식을 확인해보면 2씩 줄어들고 출력에서 형 변환을 준 것을 볼 수 있습니다. 그렇다면 이번 결과값은 다음과 같습니다.

 

Z X V T R P N L J H F D B 

 

 

 

4) for문 안에 초기값과 증감식을 2개씩 줘보겠습니다.

 

for(int a = 0, b = 5; a <= 5; a++, b++) {
            System.out.println(a + " " + b);
        }
 

 

초기값을 각각 a = 0 과 b = 5 주고 a++ , b++ 로 1씩 증가시키면

0 5
1 6
2 7
3 8
4 9
5 10

과 같이 출력됩니다.

a가 만족하는 값 5까지 반복하고 for문을 탈출합니다.

 


 

다중 for문

 

 

for문 안에 for문에 들어가있는 것을 다중 for문이라고 합니다.

바로 예를 들어보도록 하겠습니다.

for(int m = 1; m <= 3; m++) {
        System.out.println("m : " + m);
        for(int n = 1; n<=4; n++) {
            System.out.print("n = " + n);
        }
        System.out.println();
    }
r

돌아가는 방식은 이렇습니다.

 

- m이 1인 경우 m 값을 출력하고 다음 for문으로 들어갑니다.

- n이 1부터 시작하고 for문이 만족하는 4까지 반복 출력해주고 내부 for문을 빠져나갑니다.

위와 같은 과정을 m이 3이 될 때까지 반복하고 나옵니다.

 

출력값은 다음과 같습니다.

 

m : 1
= 1n = 2n = 3n = 4
m : 2
= 1n = 2n = 3n = 4
m : 3
= 1n = 2n = 3n = 4

continue문

 

ex: for(초기값; 조건식; 증감식) {
        for(초기값; 조건식; 증감식) {
            
            실행문;
            continue// 안쪽 for문으로 이동            
            continue// ex for문으로 
        }
    }

 

 

여기서 ex는 라벨로 별명을 주어준것과 비슷한 의미이다.

 

 

for(int aa = 1; aa <= 10; aa++) {
            
        if(aa == 3continue;  // aa가 3이면 하단 문맥을 생략하고 다시 위로 올라감
        
        System.out.println(aa);
        
        // if(aa == 5) return; // return을 만나면 메인의 중괄호를 끝냄
        if(aa == 5break// 해당되는 구간에서 반복문을 탈출 시킴
        System.out.println("nice");
   }

 

결과

1
nice
2
nice
4
nice
5
nice
6
nice
7
nice
8
nice
9
nice
10
nice
 

break문

 

가장 가까운곳의 반복문이나 다음에 나올 내용인 switch문을 빠져나간다.

 

continue 설명때 사용한 소스코드에서 break문을 사용해보도록하겠습니다.

for(int aa = 1; aa <= 10; aa++) {
            
            if(aa == 3continue;
            
            System.out.println(aa);
 
            if(aa == 5break// 해당되는 구간에서 반복문을 탈출 시킴
            System.out.println("nice");
        }
 

 

결과값

 

1
nice
2
nice
4
nice
5

while문

 

같은 반복문이지만 for문과 달리 조건이 만족할때만 반복한다.

 

        int w = 1;
        
        while(w <= 5) {
            System.out.println("w : " + w);
            w++// 반복문 탈출 문장이 반드시 필요
        }
 

 

w의 초기값은 1로 주어졌으며, 5가 되기전까지 만족하므로 반복하여 실행하게 된다.

 

w : 1 
w : 2 
w : 3 
w : 4 
w : 5 

do ~ while문

 

while문과 동일하지만 차이점이 있다면 do~while문은 조건식이 뒤에주어집니다.

 

        w = 1;
        do {
            System.out.println("w = " + w );
            w++;
        }while(w<= 5);
 
 
결과값은동일합니다.
 
= 1
= 2
= 3
= 4
= 5

 

반복문에 관련하여 공부한 문제

2020/03/03 - [JAVA/JAVA 프로그래밍 응용] - for문을 이용하여 어떤 수1의 배수이면서 수2의 배수의 개수와 그들의 합

2020/03/03 - [JAVA/JAVA 프로그래밍 응용] - for문을 이용한 구구단 찍기

반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
2 - 연산자  (0) 2020.03.03
1 - 데이터 타입 & 형 변환  (0) 2020.03.02
반응형

연산자의 우선순위는 다음과 같다

종류 연산자 우선순위
최우선 연산자 [] , {}, ()

높음

|

|

|

|

 

낮음

단항 연산자 ++ , -- , !
산술 연산자  +, -, *, /, %
시프트 연산자 << , >> 
비교 연산자 >, <, >=, <=, ==, !=
논리 연산자 &&, ||
삼항 연산자 (조건식) ? : 
대입 연산자 =, *=, +=

사칙연산의 경우 다들 아시는 부분이니까 예시를 들도록 하겠습니다 !

 

산술연산자

        int a = 5;
        int b = 3;
 
        
        // 산술연산자
        System.out.println(a); // 5 출력
        System.out.println(b); // 3 출력
        System.out.println("a + b = " + (a+b)); // 8 출력
        System.out.println("a / b = " + (a/b));     // 1 출력    
        System.out.println("a % b = " + (a%b)); // 2 출력 (2는 나머지)
        System.out.println("a / b = " + (a/(float)b)); // 1.666.. 출력(float형식이라 소수점까지 반환!)
 
        System.out.println(a / 0.0); // Infinity
        System.out.println(a % 0.0); // 나머지 NaN 출력
        
        System.out.println(3 + 4 * 5); // 23 출력
        System.out.println((3 + 4* 5); // 35 출력
 

단항연산자

 

        //누적
        int no = 1;
        no = no + 1// 2 저장
        
        no += 1// 3 저장
        no++// 4 저장
        System.out.println("no : " + no); // 4 출력
        
        //증감 연산자
        int imsi = 5
        int result = ++imsi + 1
        System.out.println(imsi + " " + result); // 6과 7 출력
        
        int imsi2 = 5;
        int result2 = imsi2++ +1// imsi2의 값5가 1을 더하고 그 값을 result2에 준 후 imsi2 값 증가
        System.out.println(imsi2 + " " + result2); // 6과 6 출력
        System.out.println(imsi2); // 6출력
        System.out.println();
        
        
        //부호
        int imsi3 = 3;
        System.out.println(imsi3); // 3 출력
        System.out.println(-imsi3); // -3 출력
        System.out.println(-imsi3 * -1); // 3출력
 

 

소스에서 볼 수 있듯 ++imsi 는 전위 연산자이고,, imsi2++ 는 후위 연산자이다

여기서 전위 연산자란 연산 실행전에 먼저 실행 시키는 것이고, 후위 연산자란 연산 실행 후에 실행 하는 것이다.

그래서 imsi의 경우 5로 데이터 값을 주었지만 전위연산자를 통해 연산 실행 전에 실행하여 출력하였기 때문에

각각 6과 7이 출력된다.

imsi2의 경우는 후위 연산자를 사용하였기 때문에 연산을 실행하고 하여 각각 6과 6이 출력 되는 것이다.

 

추가! 문자열 사용!

        String ss1 = "대한";
        String ss2 = "민국";
        String ss3 = ss1 + ss2; // ss3에 대한민국 저장
        System.out.println("ss3 " + ss3); // 대한민국 출력
        
        System.out.println("ss3 " + ss3 + "2010"); // 대한민국2010
        System.out.println("ss3 " + ss3 + 2010); // 대한민국 2010
        
        System.out.println(10 + 20); // 30
        System.out.println(10 + Integer.parseInt("20")); // 30
        
        System.out.println(10 + "20"); // 1020
        System.out.println(10 + Integer.toString(20)); // 1020

숫자 + 숫자를 계산하는 경우 ! 30으로 출력 된다.

하지만 숫자 + "문자"와같은 경우는 10 + 문자10으로 계산하여 1020이 출력된다.

Integer.parseInt 문법은 문자를 정수로 바꿔주는 역할 !

Integer.toString 문법은 정수를 문자로 바꿔주는 역할 !

유용하게 쓰이니 알아두면 좋다

 

비교 연산자

a > b : a는 b보다 크다

a < b : a는 b보다 작다

a == b : a와 b의 값이 같은지 여부

a != b : a값이 b의 값과 다르면 true

        int a = 5;
        System.out.println(a > 3); // true
        System.out.println(a < 3); // false
        System.out.println(a == 3); // false
        System.out.println(a != 3); // true

 

논리 연산자

'참' 값이면 true를 출력 '거짓' 값이면 false를 출력

조건1 && 조건2 : 조건1도 만족하고 조건2도 만족하는 경우 true 아니면 false

조건1 || 조건2 : 조건1 또는 조건2를 만족하는 경우 true 아니면 false

        int a = 5;
        int b = 10;
        System.out.println(a > 3 && b <= 10); // true
        System.out.println(a >= 3 && b == 7); // false
        
        System.out.println(a > 6 || b <= 10 ); // true a는 6보다 크거나 b는 10보다 작거나 같다
        System.out.println(a > 3 || b < 5); // true
        
        
        System.out.println(a > 6 || b <= 10); // true
        System.out.println(a > 7 || b < ( 5 + 10)); // true
 

쉬트프 연산자

>>

 : 오른쪽으로 비트, 부호비트 이동
>>>  : 오른쪽으로 비트, 비부호 비트 이동
<<  : 좌측으로 해당하는만큼 비트 이동하고 오른쪽 비는 만큼 0으로 채운다.
 
        int ii = 8, ij;
        System.out.println("ii : " + ii + " " + Integer.toBinaryString(ii)); // 8 1000
        
        ij = ii << 1// 쉬프트 연산자 좌로 1보 남는 오른쪽은 0으로
        System.out.println("ij : " +ij); // 16
                
        ij = ii >> 2// 쉬프트 연산자 우로 2보 남는 왼쪽은 부호와 같은 값으로
        System.out.println("ij : " +ij); // 2
        
        ij = ii >>> 2// 쉬프트 연산자 우로 2보 남는 왼쪽은 0으로
        System.out.println("ij : " + ij); // 2
 

삼항 연산자

변수 = (조건) ? 참 : 거짓

조건이 참이면 : 기준 왼쪽 출력 거짓이면 오른쪽 출력

        // 삼항 연산자
        int re = (ii > 5)?100 : 50 + 20 ; // 변수 = (조건)?참:거짓
        System.out.println("re : " + re);
반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
1 - 데이터 타입 & 형 변환  (0) 2020.03.02
반응형

변수


변수란?

- 특정 타입의 데이터를 메모리상에 담을 수 있는 영역을 의미한다.

 

 

  변수를 선언하는 방식

  데이터 타입 변수이름 ;

  ex) int num;

  ex) String name;

 

  위와 같은 변수명에 데이터를 정해주는 방법

  변수이름 = 데이터 값;

  ex) num = 10;

  ex) name = 홍길동;

  변수이름 = 데이터 값;

  ex) num = 10;

  ex) name = 홍길동;

 

  2줄로 입력하지 않고 1줄로 데이터를 주는 방법

  데이터 타입 변수이름 = 데이터 값;

  ex) int num = 10;

  ex) String name = 홍길동;

 


데이터 타입


컴퓨터도 10인 영역에 2만 사용하면 영역을 낭비하는 일이 발생한다.

그 영역 낭비를 방지하고 효율적으로 사용하기 위해서 데이터 타입이 나뉘어진다.

기본형 데이터 타입

정수형

byte 8비트(1byte) 범위 :  ( -128 ~ 127 )
short 16비트(2byte) 범위 : ( -32768 ~ 32767 )
int 32비트(4byte)
long 64비트(8byte)
// 1byte = 8bit
        byte var1;
        var1 = 127;
 
        System.out.println(Byte.MAX_VALUE);    // 127 출력
        System.out.println(Byte.MIN_VALUE);    // -128 출력
        
        short var2 = 20;                     // short 2byte 정수 기억 -32768 ~ 32767
//      short var22 = 222222;                // short 범위를 벗어나기 때문에
        System.out.println("var2 : " + var2);
        
        int var3 = 2147483647;        // int 4byte 정수 기억 -2147483648 ~ 2147483647
//      int var33 = 21474836477;    // int 범위를 벗어나기 떄문에 컴파일 오류
        System.out.println("var3 : " + var3);
        
        
        long var4 = 8999999999999999999L;
        System.out.println(Long.MAX_VALUE); // long형의 최대값이 출력
        System.out.println("var4 : " + var4);  // var4에 89999999999를 준 값 출력

여기서 각 타입의 최대값과 최소값을 보고 싶다면

데이터 타잊 최소값 최대값
byte Byte.MIN_VALUE Byte.MAX_VALUE
short Short.Min_VALUE Short.MAX_VALUE
int Integer.MIN_VALUE Integer.MAX_VALUE
long Long.MIN_VALUE Long.MAN_VALUE

형변환

        //promotion : 자동 형변환(작은기억장소 -> 큰 기억장소)
        //cast : 강제 형변환(큰기억장소 -> 작은기억장소)
        byte b1 = (byte)128;
        System.out.println("b1 : " + b1);
        
        int b2 = 10;
        byte b3 = (byte)b2; // cast : 강제 형변환
        // 변수 형태만 본거기 때문에 int가 들어가면 byte보다 큰값도 있으므로
        // 실제 값은 byte형을 충족하여도 오류가 뜬다
        // int형으로 충족시키고 싶다면 (byte)b2 를 기입하여야함
        System.out.println("b3 : " + b3);
        
        short s1 = 10;
        int i1 = s1; // promotion : 자동 형변환
        System.out.println("i1 : " + i1);

실수형

float 32비트(4byte)
double 64비트(8byte)
double d1 = 10.5;
       d1 = 5// 실수형의 저장장소가 정수형 저장장소의 크기보다 크다
        System.out.println("d1 : " + d1); // 5.0 출력
        
float f1 = (float)4.5// 또는
        float f11 = 4.5F;      // 로 입력해주어야한다.
        f1 = 5.1F;               // 왜냐하면 (float)또는 F를 생략하면 double로 읽기때문이다.
        System.out.println("f1 : " + f1); // 5.1 출력

실수형도 정수형과 마찬가지로 최소값과 최대값을 보고싶다면

데이터 타입 최소값 최대값
float Float.MIN_VALUE Float.MAX_VALUE
double Double.MIN_VALUE Double.MAX_VALUE

 

Boolean형

Boolean true 또는 false 출력
        boolean bu = true// true 또는 false
        boolean bu1 = false;
        System.out.println("bu : " + bu); // true 출력
        System.out.println("bu1 : " + bu1); // false 출력

 

char 형

char 16비트, 유니코드(0~65535) 출력
        char c1= 'a';
        char c11 = 'A';
        
        System.out.println("c1 : " + c1); // a 출력
        System.out.println("c11 : " + c11); // A 출력
        System.out.println((int)c1); // 97 출력
        System.out.println((char)97); // a 출력

(int)c1이 왜 97일까 ? (char)97이 왜 a 일까?

https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C

 

아스키 코드 - 나무위키

UTF-8의 경우 ASCII 영역은 그대로 1바이트를 사용하기 때문에 호환이 된다. 반대로 말하자면 UTF-8 문서라도 ASCII 영역에 해당하는 문자만 적혀 있고 BOM까지 없다면 그냥 ASCII 문서와 다를 게 없다. 하지만 UTF-16은 2바이트에서 시작하기 때문에 서로 호환이 되지 않는다. 이 때문에 UTF-16에서 ASCII 문자를 나타낼 때는 앞에 0x00이 붙는다. 예를 들어 A라는 글자를 표현하려면, ASCII나 UTF-8에서는 0x41이라

namu.wiki

해당 글을 참고하면 도움이 될 것 같다. 아스키 코드를 활용해서 hex 16진수와 octal 8진수 값도 한번 출력해보았다.

        // hex 16진수
        System.out.println(0xa); // 10 출력 
        System.out.println(0xf); // 15 출력
        // octal 8진수
        System.out.println(05); // 5 출력
        System.out.println(011); // 9 출력

위 나무위키 링크에 있는 값과 예시 출력 값을 비교하면 같은 것을 알 수 있다.

 

참조형데이터타입

기본형 데이터 타입을 제외한 데이터 타입

        String irum = "홍길동";
        // 어딘가의 주소해 홍길동이라는 이름이 있고 그것을  irum이 참조하는 것
        System.out.println(irum);

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
2 - 연산자  (0) 2020.03.03

+ Recent posts