'2018/11'에 해당되는 글 13건

  1. 2018.11.05 C# 기초다지기 - 변수
  2. 2018.11.04 Object 클래스에 대해
  3. 2018.11.04 자바 표준 입력 클래스 Scanner 사용법 1

C# 기초다지기 - 변수




안녕하세요 열코입니다.

이번 시간에는 C# 프로그래밍 변수에 대해 알아보도록 하겠습니다.

변수는 프로그램에서 조작 할 수 있는 저장 영역에 주어진 이름을 말합니다.

C#의 각 변수에는 특정 유형이 있습니다. 다음과 같이 정의합니다.


내장된(Integral) 타입 : sbyte, byte, short, ushort, int, uint, long, ulong, char

(변수 앞에 u는 unsigned를 의미합니다.)

부동소수점(Floating Point) 타입 : float, double

10진수(Decimal) 타입 : decimal

불린(Boolean) 타입 : true, false

Nullable 타입 : Null 값을 가질 수 있는 데이터 유형

* C# 또한 enum과 같은 값의 정의 및 클래스와 같은 참조유형을 정의할 수 있습니다.


변수 정의하기

C#에서 변수 정의 구문은 다음과 같습니다.


1
<data_type> <variable_list>;
cs


여기서 data_type은 char, int, float, double... 또는 사용자 정의 데이터를 포함하는 유효한 C# 데이터 형식이며,

variable_list는 쉼표로 구분된 하나이상의 식별자 이름으로 구성됩니다.


예를들어 다음과 같이 변수를 정의할 수 있습니다.


1
2
3
4
int i, j, k;
char ch;
float f, lf;
double d; 
cs


변수 초기화하기

변수는 등호(=) 뒤에 상수를 붙여 초기화할 수 있습니다.

초기화는 변수의 값을 지정하는 행위를 말합니다. 일반적인 변수 초기화 방법은 다음과 같습니다.


1
2
3
4
5
6
7
int i;
= 10;
 
char ch;
ch = 'c';
 
double d = 1.0;
cs


1번째 줄 : int 형 변수 이름 i 선언

2번째 줄 : 변수 i의 값을 10으로 지정

4번째 줄 : char 형 변수 이름 ch 선언

5번째 줄 : 변수 ch의 값을 'c'로 지정

7번째 줄 : double 형 변수 이름 d를 선언과 동시에 값을 1.0으로 지정


변수를 초기화하는것은 매우 중요한 작업이며, 선언시 사용하지 않더라도 초기화하는 습관이 중요합니다.

기본적으로 정수형은 0, 참조형은 null로 초기화하는것이 기본입니다.

변수를 초기화하지 않는다면 프로그램 실행 중 예기치않은 결과를 초래할 수 있습니다.


LValue와 RValue

C#에는 두가지 종류의 표현식이 있습니다.

LValue : 연산자의 왼쪽 또는 오른쪽에 나타날 수 있습니다.

RValue : 연산자의 오른쪽에만 나타납니다.

통상적으로 값을 지정 받을 수 있는 변수는 LValue가 될 수 있고, 숫자 또는 문자 리터럴은 값이 지정되어 있으므로

RValue가 될 수 있습니다.


다음과 같은 명령문은 컴파일 오류를 발생시킵니다.

1
10 = 20;
cs



이상 'C# 변수'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.

'C#' 카테고리의 다른 글

C# 기초다지기 - 문자열  (2) 2018.11.07
C# 기초다지기 - 배열  (1) 2018.11.06
C# 기초다지기 - 상수  (0) 2018.11.06
C# 기초다지기 - 캡슐화  (0) 2018.11.05
C# 기초다지기 - 프로그램 구조  (0) 2018.11.05
C# DB연동  (1) 2018.08.29
[C#] 유니코드 한글로 변환하기  (0) 2018.08.22
[C#] Visual Studio 2017 C# OpenCV 라이브러리 설치  (0) 2018.08.18

Object 클래스에 대해




안녕하세요 열코입니다.

이번시간에는 자바의 Object 클래스에 대해 알아보도록 하겠습니다.

일전에 Object 클래스에대해 언급했던적이 있는데, 자바의 모든 요소들은 클래스로 정의되어있으며,

직접 또는 간접적으로 Object 클래스에서 상속받은것이라고 언급한적이 있습니다.

자바의 모든 클래스의 부모 클래스인 Object 클래스에 대해 살펴보겠습니다.


Obejct 클래스는 java.lang 이라는 패키지(package) 내에 존재합니다.

또한 위에서 언급했듯이 모든 클래스의 부모 클래스이기 때문에 모든 클래스에서 Object 클래스의 메소드를 사용할 수 있습니다.

추가로 모든 메소드는 오버라이드(재정의) 하여 프로그램에서 적절히 사용가능합니다.

대표적인 Object 클래스의 메소드는 다음과 같습니다.


1. toString()

toString() 함수는 Object 클래스의 메소드로 객체를 String으로 변환하는데 사용됩니다.

다음과 같이 정의되어있습니다.


1
2
3
public String toString() {
    return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
cs


2. hashCode()

hashCode() 함수는 JVM으로 부터 모든 객체에 대해 고유번호(해시코드)를 생성, 반환합니다.

자바에서는 C/C++과 같이 객체의 주소값을 찾을 수 없기 때문에 이 해시코드를 사용합니다.

다음과 같이 사용할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class student
{
    static int addr = 100;
    int addr_num;
 
    student()
    {
        addr_num = addr;
        addr++;
    }
 
    public int hashCode() // 오버라이딩
    {
        return addr_num;
    }
    
    public static void main(String[] args)
    {
        student s = new student();
 
        System.out.println(s);
        System.out.println(s.toString);
    }
}
cs


3. equals()

eqauls() 함수는 매개변수로 주어진 객체를 this 객체와 비교합니다. (this 객체는 메소드를 호출한 객체를 의미합니다.)

보통 String 객체의 비교시 사용되며, 사용자 정의 클래스에서는 오버라이딩하여 사용하는것이 좋습니다.



4. getClass()

getClass() 함수는 this 객체의 실제 런타임 클래스를 가져옵니다.


1
2
3
4
5
6
7
8
9
public class semog
{
    public static void main(String[] args)
    {
        Object obj = new String("세모지");
        Class c = obj.getClass();
        System.out.println(c.getName()); // java.lang.String 
    }
}
cs


c 클래스의 getName()을 호출했는데 String 클래스가 반환되었습니다.

c 클래스는 obj객체의 클래스를 받아오며 obj 객체는 String 클래스 객체를 가지고 있습니다.

이에 대한 설명은 C/C++의 가상(virtual) 함수에 대한 내용을 확인하시면 됩니다.


5. finalize()

finalize() 함수는 객체가 가비지 컬렉터에 의해 수집되기 직전에 호출됩니다.

가비지 컬렉터 호출에 대해 대략 설명하면 객체에 대한 참조가 없다고 판단될 경우 JVM의 가비지 컬렉터가 호출됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class semog
{
    public static void main(String[] args)
    {
        semog s = new semog();
        s = null// 객체 참조가 없음
 
        System.gc(); // 가비지 컬렉터 호출
    }
    protected void finalize() // 오버라이딩
    {
        System.out.println("finalize 메소드 호출");
    }
}
cs


참고 : finalize() 함수는 해당 객체가 가비지 컬렉터를 여러번 수행했더라도 한번만 호출되게됩니다.

그외 메소드에 대해서는 자바 쓰레드 시간에 자세히 언급하도록 하겠습니다. :)



이상 '자바 object 클래스'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.






안녕하세요 열코입니다.

이번 시간에는 자바의 기본 입력 클래스인 스캐너(Scanner) 클래스에 대해 알아보도록 하겠습니다.

자바의 스캐너 클래스는 java.util 패키지 내에 존재하는 클래스로,

정수(int), 실수(double)등의 기본적인 데이터 타입 입력을 받기위한 클래스입니다.

자바에서 콘솔(Console)의 표준 입력의 대표 클래스로, 가장 간단하고 쉬운 방법으로 읽어 올 수 있습니다.

그러나 많은 양과 다수의 회수의 입력을 받아야 할 때에는 추천하지 않는 클래스입니다.

이에대한 자세한 설명은 추후에 설명하도록 하겠습니다.


스캐너 클래스를 사용하기 위해서는 다음과 같은 사항에 주의해야합니다.

1. 스캐너 클래스의 객체를 만들려면 표준 입력 스트림을 나타내는 System.in이라는 이미 정의 되어있는 객체를

전달해야 합니다. (파일로부터의 입력은 File 클래스의 객체를 전달할 수도 있습니다.)

2. 특정 데이터 유형의 값을 읽기 위해 사용하는 함수는 next~() 함수입니다.

예를들어, nextInt(), nextDouble() 등과 같은 함수를 사용할 수 있습니다.

3. 문자열, 한줄(엔터키 기준으로)을 모두 읽기 위해서는 nextLine() 함수를 사용할 수 있습니다.

4. 단일 문자(char)를 읽기 위해서 next()와 charAt() 함수를 함께 사용할 수 있습니다.



다음은 여러 데이터 유형의 입력을 받는 스캐너 클래스의 예제 소스코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
 
public class myScanner
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
 
        int i = scanner.nextInt();
        char c = scanner.next().charAt(0);
        long l = scanner.nextLong();
        double d = scanner.nextDouble();
        String s = scanner.nextLine();
    
        System.out.println("int : " + i);
        System.out.println("char : " + c);
        System.out.println("long : " + l);
        System.out.println("double : " + d);
        System.out.println("string : " + s);
    }
}
cs


또한 스캐너에 대해 입력이 있는지 확인하는 hasNext~() 함수를 사용하여,

원하는 만큼 입력을 받을 수도 있습니다.

다음은 hasNextInt() 함수를 사용한 예제 소스코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
public class myScanner
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
 
        int i = 0;
 
        while(scanner.hasNextInt())
        {
            int num = scanner.nextInt();
            i += num;
        }
 
        System.out.println("total : " + i);
    }
}
cs



이상 '자바 Scanner 클래스'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.


'Java' 카테고리의 다른 글

구글, 파파고 번역 API 성능 비교  (1) 2019.09.18
google translate api v3 사용법  (1) 2019.09.16
java spring pwa fcm web push 구현  (2) 2019.09.10
Object 클래스에 대해  (0) 2018.11.04
자바 상속  (0) 2018.10.17
자바 싱글톤 클래스(Singleton class)  (3) 2018.10.16
자바 Wrapper Class  (0) 2018.10.15
자바 파일 입출력  (0) 2018.10.04

to Top