Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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
Archives
Today
Total
관리 메뉴

개발자

[JAVA 2일차]메소드,지역변수/현재시각 메소드/자료형,초기화,변수 선언,형변환/import(아직) 본문

개발자/JAVA

[JAVA 2일차]메소드,지역변수/현재시각 메소드/자료형,초기화,변수 선언,형변환/import(아직)

GoGo개발 2022. 6. 24. 23:43
메소드

 

1. instance mathod (인스턴스 메소드)  

 

  인스턴스 변수를 이용해서 작업을 하므로 변수의 묶음인 객체를 생성해야 인스턴스 메소드를 호출 할 수 있다.
인스턴스 생성후, "참조 변수.메소드명()" 으로 호출한다.

 

- 리턴값 없는 메소드 (void)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void showInfo_1() {   
        
         int hopeMoney = 6000;    // 지역변수(local variable) hopeMoney 가 지역변수
                                // 지역변수(local variable)는 {} 내에서만 사용되는 것으로써 {} 을 벗어나는 순간 지역변수를 자동적으로 메모리(RAM)에서 삭제가 되어진다.
                                //지역변수는 반드시 초기화를 해주어야 한다. 만약에 초기화를 안해주면 오류가 발생한다.
         
         
        System.out.println("===="+name+"님의 회원정보====\n"
                + " 1. 아이디 : " + id + "\n"
                + " 2. 비밀번호 : " + pwd + "\n"
                + " 3. 성명 : "+ name + "\n"
                + "4. 이메일 : "+ email +"\n"
                + "5. 나이 : "+ age +"세\n"
                + "6. 신장 : "+ height +"cm\n"
                + "7. 등급 : "+ grade +"\n"
                + "8. 희망연봉 :" + hopeMoney + "만원\n");
}
cs

호출 할때는 ==> ma2.showInfo_1();   // "참조 변수.메소드명()"

 

 

-리턴값 있는 메소드(String,doble 등)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String showInfo_2() {
         
         int hopeMoney = 7000;    
                               
 
         
         return " ====" + name + "님의 회원정보 ======\n"
                 + "1. 아이디 :"+ id +"\n"
                 + "2. 비밀번호 : "+ pwd +"\n"
                 + "3. 성명 : "+ name +"\n"
                 + "4. 이메일 : "+ email + "\n"
                 + "5. 나이 : "+ age +"\n"
                 + "6. 신장 : " + height +"\n"
                 + "7. 등급 : "+ grade + "\n"
                 + "8. 희망연봉 : "+hopeMoney+"만원\n";
     }
cs

호출 할때는 ==>

String info = ma2.showInfo_2(); //스트링타입으로 호출시
                            System.out.println(info);

 

 

2. static mathod (스테틱 메소드 = 클래스 메소드)

인스턴스 메소드와 달리 인스턴스 변수가 필요 없으므로 객체를 생성하지 않고도 호출할 수 있다. 
객체 생성없이 '클래스명.메소드 명()'으로 호출이 가능하다. 인스턴스 멤버와 관련되지 않은 작업을 한다.
메소드 내에서 인스턴스 변수를 사용할 수 없다.

 

호출 할때는 ==> MyUtil.currenTime();  // '클래스명.메소드 명()'

MyUtil util = new MyUtil(); 이렇게 객체를 생성해줄 필요가 없다.

 

 

- 현재시각을 리턴시켜주는 Static 메소드 생성하기

<리턴값있는 String 타입으로>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package my.util;
 
import java.text.SimpleDateFormat;
 
import java.util.Date;
import java.util.Random;
 
public class MyUtil {
 
 
    public static String currentTime() {
        
        Date now = new Date(); // 현재시각 java.util.Date now (생략한거) 앞에 import 해줬으니 됐다
      
// 원하는 데이터 포맷 지정
        SimpleDateFormat sdfrmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 지정한 포맷으로 변환
        String result = sdfrmt.format(now);
        
 
        return result; // 이메소드하면 위에 2022를 돌려주겠다 String 타입으로 호출
        
    }// end of mathod currenTime--------------------------------------------------------
cs

 

SimpleDateFormat : 날짜를 원하는 포맷으로 파싱시켜주는 클래스이다. 생성자 () 안에 원하는 패턴을 입력한다.

format : format함수를 이용하여 프린트 하면 원하는 패턴의 날짜형식이 리턴되게 됩니다.(String result 형식 아닌 return sdfrmt.format(now); 이렇게 해도 된다.

 

==> 호출시 System.out.println(" 종료날짜 및 시각:" + MyUtil.currentTime()); 형식으로 호출

 

<리턴값 없는 void 타입>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package practice;
 
import java.text.SimpleDateFormat;
 
import java.util.Date;
import java.util.Random;
 
public class Tesrt2 {
 
 
    public static void currentTime() {
        
        Date now = new Date();
        
        SimpleDateFormat sdfrmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String result = sdfrmt.format(now);
        
        
        System.out.println(">> 현재시각 : " + result);                
    }
}
cs

==> 호출시 MyUtil.currentTime(); 형식으로 호출

 

 

<String 형식의 문자열을 SimpleDateFormat을 이용하여 원하는 포맷으로 출력하기>

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
package practice;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Test3 {
 
    public static void main(String[] args) {
    
        
            // 날짜 형식 변환시 parsing 오류를 try catch로 체크
            try {
                String strDate = "20200806";
                SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
                SimpleDateFormat newDtFormat = new SimpleDateFormat("yyyy-MM-dd");
                // String 타입을 Date 타입으로 변환
                Date formatDate = dtFormat.parse(strDate);
                // Date타입의 변수를 새롭게 지정한 포맷으로 변환
                String strNewDtFormat = newDtFormat.format(formatDate);
                System.out.println("포맷 전 : " + formatDate);
                System.out.println("포맷 후 : " + strNewDtFormat);
            }catch (ParseException e) {
                e.printStackTrace();
            }
    }    
}
 
cs

 

결과값 => 포맷 전 : Thu Aug 06 00:00:00 GMT+09:00 2020
              포맷 후 : 2020-08-06

 

변수의 종류

1. 인스턴스 변수

 : 클래스의 구성요소인 속성값을 저장하는 용도로, 소문자로 작성한다. 인스턴스 변수는 지역변수와는 다르게 생성 후 초기화할 필요없이 자동으로 데이터형의 기본값이 설정된다.

멤버변수 => 메소드 밖에서 선언된 instance 변수와 static 변수를 합친것을 멤버변수라고 부른다. 

 

2. 지역변수(local variable=로컬 변수) 

 

  : 한 지역내에서만 사용할 수 있는 변수로, 지역이란 중괄호 { }를 의미한다. 지역변수는 반드시 초기화를 해주어야 한다. 만약에 초기화를 안해주면 오류가 발생한다.

 

1
2
3
4
 String showInfo_2() {
         
         int hopeMoney = 7000;
}
cs

 

지역변수 int hopeMoney 를 7000으로 초기화 해주었다.  

 

자료형의 종류 및 초기화 값

 

1. 원시형 타입(Primitive Type) 

 1.1  정수형(byte, short, int, long)
    :자바에서 정수형의 기본타입은 int 이다.
그러므로 정수형의 값이 -2,147,483,648 ~ 2,147,483,647 범위를 벗어난 것     이라면 반드시 숫자뒤에 소문자 l 또는 대문자  L 을 붙여야 한다.  

 

타입 크기 범위 초기화 값
    byte  1byte == 8bit -128 ~ 127  0
 short 2byte == 16bit) -32,768 ~ 32,767 0
int 4byte == 32bit) 2,147,483,648 ~ 2,147,483,647   0
  long 8byte == 64bit  -9,223,372,036,854,775,808~  9,223,372,036,854,775,807   0
     
 

1.2 실수형(float, double) 

    :자바에서 실수형의 기본타입은 double 이다.

그러므로 실수값을 float 형태로 나타내기 위해서는 실수뒤에 반드시 소문자 f 또는 대문자 F를 붙여야 한다. 

 

타입 크기 범위 초기화 값
 float 4byte 135.3246235
소수점이하 7자리까지 표현됨
0.0
double 8byte 135.3246234502345642
수점이하 15~16자리까지 표현됨
0.0

 

 

1.3 문자형(char)
  char : 자바는 유니코드 체계를 사용한다. 그래서 char 타입에는 문자 1개 또는 숫자(0~65535)도 올 수 있다.
 
타입 크기 범위 초기화 값
char 2byte  문자 1개 or 0 ~ 65535 ' ' (공백)

표현 안되는 것 : "", ab , 'a '   / 되는 것 : ' '   ==> 두 글자 불가, 한 글자만 가능하다. 

UNICODE 표 참조 : http://www.tamasoft.co.jp/en/general-info/unicode.html 

 

Unicode Table

 

www.tamasoft.co.jp

 

1.4 논리형(boolean)

  boolean : 참(true) 또는 거짓(false) 값

 

타입 크기 범위 초기화 값
 boolean 1byte  true or false false
Boolean(Object)의 기본값은 null이고boolean(primitive)의 기본값은 false입니다.

<boolean 참조 블로그>

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Boolean

 

Boolean - JavaScript | MDN

Boolean 객체는 불리언 값을 감싸고 있는 객체입니다.

developer.mozilla.org

https://docs.microsoft.com/ko-kr/dotnet/api/system.boolean?view=net-6.0 

 

Boolean 구조체 (System)

부울(true 또는 false) 값을 나타냅니다.

docs.microsoft.com

 

 

2. 참조형 타입(Reference Type)

 : 참조형은 기본형 8종류를 제외한 모든 데이터 유형이고, 클래스 객체(==object ==instance) 타입으로 java.lang.Object를 상속 받는다. 참조 유형의 변수는 데이터를 그대로 저장하지 않고 데이터를 저장하는 메모리의 주소만 저장한다. 즉, 메모리상에 저장되어진 객체의 메모리 주소를 참조하는 것이다. 변수는 데이터를 다른 영역에 저장하고 그 주소만을 이용하는 것이다.

 

 

String : 문자열 타입으로 클래스는 참조형에 속하지만 기본적인 사용은 기본형처럼 사용한다. 그리고 불변(immutable) 객              체이다. String 클래스에는 값을 변경해주는 메소드들이 존재하지만, 해당 메소드를 통해 데이터를 변경한다면 새                로운 String 클래스 객체를 만들어내는 것이다.

         일반적으로 기본형 비교는 == 연산자를 사용하지만 String 객체간의 비교는 .equals() 메소드를 사용해야 한다.

 

타입 크기 범위 초기화값
String 4byte 문자열 null
 
변수선언

 

 

<변수의 명명규칙>
 1. 변수명의 길이에는 제한이 없다. 
 2. 대,소문자 구분이 있다.
 3. 첫글자가 숫자는 안된다. 
 4. 특수문자는 '_' 와 '$' 만 사용이 가능하다.
 5. 예약어(예 package, import, public, class, String, int, float ....)는 변수명으로 사용불가하다.  
 6.<권장사항이지 규칙은 아니다> 첫글자는 소문자로 시작하고 단어와 단어가 결합된 경우이라면 두번째 단어는 대문자로 시작하는것이 일반적이다.
 

단어와 단어가 결합된 경우 => mypoint
                                        myPoint (카멜기법)
                                        my_point (스네이크기법)

 

형 변환

 

자바에서 그 데이터 타입이 byte 또는 short 또는 char 인 변수가 사칙연산(_ - * /)을 만나면 자동적으로 그 변수의 데이터 타입은 int로 변하게 되어있다. int(4byte) 아래의 크기인  byte(1byte), short(2byte), char(2byte) 타입이 사칙연산(+ - * /)을 만나면 자동적으로 int 타입으로 자동 형변환이 발생된다.

 

'A' => 65     'a' => 97                                '0' => 48                       '9' => 57
'B' => 66     'b' => 98                                '1' => 49                        ' ' => 32
'C' => 67     'c' => 99                                '2' => 50

 

 '대문자' + 32 => 소문자에 해당하는 숫자
'소문자' - 32 => 대문자에 해당하는 숫자

 

<예시>

Kor+eng+math ==> 자동적으로 int 타입으로 형변환(casting) 된다. 

(short)(kor+eng+math) ==> 강제 형변환(casting) 된다. short로 강제형변환.

 

<기타 개념>

1. 정수/정수는 정수가 나온다. 

 : 예를 들어 10/4 는 실수인 2.5가 아니라 2.5에서 소수인 0.5를 잘라버린 정수인2가 나온다. 즉, 10/4는 몫인 2가 나온다. 이때 byte, short 안됨 / (사칙연산) 만나면 int로 바뀌었으니까 실수로 바꾸면 int안되거 double 실수타입을 바꿔준다.