본문 바로가기

IT/개발공부

Java 기본 문법 (배열, 문자열, Scanner 클래스와 입출력, 클래스 정의)

반응형

개인 공부용 포스트 입니다.

 

 

 

 

배열

배열 : 같은 자료형의 원소를 정해진 개수만큼 가지고 있는 객체

  • 선언할 때 크기를 지정하는 것이 아니라 초기화 또는 생성할 때 정해짐
  • 숫자 인덱스를 사용하여 특정 원소를 다룸
  • 참조형 변수 (포인트 변수와 비슷함 -> 주소값을 가지고 있음)

 

배열 선언 형식 -> 자료형[] 변수이름;   또는    자료형 변수이름[];

자료형 변수이름[숫자] -> X (선언할때 크기지정 안됨)

 

배열 초기화 예)

// 선언과 동시에 중괄호를 이용하여 초기값 지정
int a[] = {1, 2, 3, 4, 5};
int anArray[][] = {{1, 2, 3}, {4, 5, 6}};
int b[]; b = {1, 2, 3};		//오류

//new 연산자를 이용 -> 원소가 숫자인 경우 0, 참조형인 경우 null로 자동 초기화됨
int a[] = new int[3];
int b[]; b = new int[10];
int AnArray4[][] = new int[3][2];

 

배열의 크기 -> 배열이름.length

 

 

문자열

String 클래스

  • String 클래스 : 문자열을 표현하고 처리하기 위한 참조형
  • String 형의 변수는 참조형이지만 기본형 변수처럼 사용 가능 (원래 참조형 변수는 new 연산자를 이용하여 공간 할당을 받아야함)
String s1 = "Java";
String s2 = new String("Java");		// 생성자 사용

//참조형 변수에는 null이라는 특별한 값 지정 가능
if(s1 != null){}

 

문자열에서 + 연산자 -> 두 문자열을 연결함

문자열로 자동 형변환이 되는 것!

예)

System.out.println("result=" + " " + result);
System.out.println("A" + 0);		//A0이 출력됨
System.out.println('A' + 0);		//char형이기 때문에 A가 65가 되고 0이랑 더하기 연산이 이루어짐 -> 65가 출력됨

 

 

Scanner 클래스와 입출력

Scanner 클래스

  • 키보드나 파일로부터 다양한 자료를 입력 받을 때 사용 (기봊넉으로 공백 문자로 구분되는 단어 단위로 입력됨)
  • 문자열이나 기본형 값의 입력을 위해 next000() 메소드를 제공
  • 키보드 입력 -> System.in을 이용하여 Scanner 객체를 만들고 사용함
Scanner sc = new Scanner(System.in);
String name = sc.next();

 

Scanner 클래스의 입력용 메소드

  • boolean hasNext() - 다음 단어가 있으면 true를 변환
    • String next() - 단어를 읽어 String으로 변환
  • boolean hasNextInt(), int nextInt() - int값을 입력 받음
  • boolean hasNextDouble(), double nextDouble() - double 값을 입력 받음
  • boolean hasNextLine(), String nextLine() - 문자열을 입력 받음

예제

import java.util.Scanner;

public class ScannerDemo2{
	public static void main(String args[]){
    	Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()){
        	System.out.println(sc.nextInt());
            }
        }
    }
    
// 123 456 hello 를 입력하게 되면
// while 문이 돌면서 123과 456은 int형으로 true이기 때문에 출력이 되지만, hello는 false여서 while문이 안돌게 된다.
// 따라서 123 456만 출력됨

 

 

클래스 정의

클래스 정의 문법

[접근 제어자] class 클래스이름 [extends 부모클래스이름] [implements 인터페이스이름]{
	데이터필드 선언 ...
    생성자 선언 ...
    메소드 선언 ...
    }

접근 제어자 - public, protected, private (생략 가능)

  • 생략된 경우 - 같은 패키지에 있는 다른 클래스에서 사용 가능
  • public - 어디서나 사용 가능

비접근 제어자 - abstract, final(상속이 안됨)

 

인스턴스 변수 : 객체가 먼저 생성되어야함.

클래스 변수 : 해당 클래스의 객체들이 공유하는 변수 (데이터값이 1개만 있음)

 

 

클래스의 사용

  • 클래스형 변수를 선언할 때 (클래스는 객체의 자료형)
  • 객체를 생성할 때
  • 상속받아 클래스를 정의할 때

 

예제

Class Circle{								//같은 패키지 안에서 사용 가능
	private double r;
	public Circle(double a) {
		r = a;
	}
	public double getArea() {
		return r * r * 3.14;
	}
	public double getRadius() {
		return r;
	}
}


public class CircleArea2 {

	public static void main(String[] args) {
		Circle c = new Circle(5);
		System.out.println(c.r);				//오류
		System.out.println(c.getRadius());
		System.out.println(c.getArea());
	}

}

 

 

데이터 필드의 접근 제어자

- 클래스 정의에서 데이터 필드나 메소드를 정의할 때도 접근 제어자 사용가능

  • private 필드 - 같은 클래스에서만 사용 가능
  • 접근 제어자가 생략된 필드 - 같은 패키지에 있는 다른 클래스에서 사용 가능
  • protected 필드 - 같은 패키지와 자식 클래스에서 사용 가능
  • public 필드 - 모든 클래스에서 사용 가능

 

접근 제어자 정리

 

 

 

 

 

[참고 자료]

방송통신대학교 Java 프로그래밍

반응형