<Java> 3. 프로그램 기본 구조와 자료형

정지민·2023년 9월 23일

Java

목록 보기
1/12

기본구조

  • java는 클래스들로 구성
  • 클래스는 하나 이상의 메소드(함수)들을 포함
  • 메소드는 클래스 안에 들어가 있어야, 독립 존재 x
  • main 메소드를 갖는 클래스부터 시작됨

클래스

  • 대문자 시작, 대소문자 구분
  • 파일 이름과 일치해야 함
  • 변수, 상수, 메서드 포함
  • 구성: 멤버필드(변수, 상수) + 메서드(함수)
public class practice {//클래스 몸체  
	public static void main(String[] args) {//메서드 몸체
		System.out.println("Hello world");  
	}
}//; 없음 주의!, c++와 달리 세미콜론으로 안끝남 **

- 키워드(예약어) : 컴파일러에 의해 미리 예약된 단어

ex) const, goto

- 식별자 : 식별위한 고유 이름

  • 키워드 불가(bool, null등)
  • 첫 문자로 숫자 불가
  • _ , $ 제외 특수문자 불가
  • 대소문자 구별
  • 한글 가능

업로드중..


관례적인 식별자 명명

- 클래스

  • 첫문자 대문자, 두단어 이상일때 첫단어들만 대문자
class JavaTest

- 변수와 메서드

  • 첫문자 소문자, 두단어 이상일때 두번째 첫단어 대문자
String myName; //변수
public void showName() //메서드

- 상수

  • 모든문자 대문자, 두단어 이상 합쳐질때 필요시 _ 사용
final int JAVATEST=10;
final int JAVA_TEST=10;

-함수

  • 첫 문자 대문자
public class Println {
	public static void main(String[] args) {
		System.out.println("hello");
		System.out.println("3.14");
		System.out.println(); //빈줄을 출력!!
		System.out.println("1234");
		System.out.println(true); //true 출력
	}
}
//println() == print("\n")
//println: 자동줄바꿈 o

//출력결과

//hello
//3.14
//
//1234
//true

주석

  • 단행 : //
  • 다행: /* */ (중첩 불가!!)
/*    /*   */끝났다고 생각    */ 

변수

  • 지역변수
    • 함수안에서 선언, 함수안에서 사용 가능
  • 매개변수
    • 함수 정의부에 선언된 변수
    • 꼭 사용해야함
  • 멤버변수
    • 클래스 안에서 선언된 변수
    • 객체 만들어져 사용될때까지 유지

자료형

차이점 유의!

  • 기본 자료형 - 하나의 값 나타냄
    • 수치형 byte int float
    • 문자형 char
    • 논리형 boolean
  • 참조 자료형 - 실제값 또는 참조값을 나타냄
    • 배열형
    • 클래스형 string
    • 문자열 null로 끝나지 않음

정수형 (고정소수점수형)

  • byte, short, int, long
  • 정수 상수 다음에 L또는 l붙임: long형태
  • int형 기본임

실수형 (부동소수점수형)

  • float, double
  • float형일 경우 숫자 뒤에 F또는 f붙임
  • double형 기본임

문자형

  • char
  • 문자열 : String 클래스 이용
  • 특수문자 : \ + 문자

논리형(boolean)

  • boolean
  • 부울상수: true/false
  • 0/1을 사용하지 않는다

참조 자료형

  • 배열 주소나 객체가 저장된 주소를 갖고있음 (포인터와 비슷)
  • 문자열 예
    • String 클래스 이용
      String str = "hello";
      System.out.println(str);
    • 연결연산자 +
      String str2 = str + 2; //결과 "hello1"

기본자료형의 리터럴 상수

  • 값 자체를 직접 이용
    • 정수형, 실수형, 문자형, 논리형

참조자료형의 리터럴 상수

  • null 리터럴
    • 참조자료형 변수에만 대입 가능
    • 유효한 참조값 갖지 않음 표시
      String str = null;

  • 문자열 리터럴
    - "hello","123"
    - 문자열 리터럴은 String 객체로 자동 처리
    String str = "hello";

기호상수

  • 반드시 값 지정
  • 상수라는것을 나타내기위해 final 키워드 사용
    final double PI = 3.14;
    final <데이터 유형> <상수명>=<값>;
  • static final
    • 클래스 멤버필드 영역에 선언
    • 함수 밖 선언, 함수안에는 쓰지 않음

표현식

  • 비교연산자와 논리연산자는 연산자와 연산의 결과값으로 논리자료형 값을 가짐 (true, false)

묵시적 변환

  • 서로 다른 자료형인 수가 피연산자로 나타날 경우, 한쪽 형태로 자동 형변환
  • char, short -> int
  • char + char = int
  • float -> double

명시적 변환

  • 강제적으로 바꿈
  • cast연산자 사용
(double) sum
double a = (double)sum/10; //b자체가 바뀐것 아님
  • 기존 표현식 자체의 자료형은 바뀌지 않음
  • 기본자료형과 참조자료형간 변환은 일어나지 않음

확대, 축소 형변환

  • 확대 형변환: double d=1; //자동으로 묵시적 변환
  • 축소 형변환: int m = (int)3.14; //명시해줘야함

사칙연산자 자동 형변환

  • int형보다 작을경우 int형으로 자동변환
  • 대부분 넓은 범위쪽으로 변환

콘솔 입력

  • System.in객체로 인해 바이트로 읽혀짐 (1234 -> 1,2,3,4)
Scanner s=new Scanner(System.in); -> s 객체생성
import java.utill.Scanner; -> Scanner클래스 메소드 사용시
// (string, system은 import 필요 없다)


<입력문 사용예>

import java.util.Scanner;
public class practice {
	public static void main(String[] args) {
		int i;
		double d;
		
		Scanner s = new Scanner(System.in);
		
		System.out.print("정수를 입력하세요: ");
		i=s.nextInt();
		
		System.out.print("실수를 입력하세요: ");
		d=s.nextDouble();
		
		System.out.println();
		System.out.println("입력한 정수는 "+i+"입니다.");
		System.out.println("입력한 실수는 "+d+"입니다.");
	}
}

<예제 2-15> switch 조건문

import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		System.out.print("무슨 커피 드릴까요?");
		String order = c.next();
		int price = 0;
	
		
		switch(order) {
			case "에스프레소":
			case "카페라떼":
			case "카푸치노":
				price = 3500;
				System.out.println(order + "가격은"+price+"입니다.");
				break;
				
			case "아메리카노":
				price = 2000;
				System.out.println(order + "가격은"+price+"입니다.");
				break;
				
			default:
				System.out.println("메뉴에 없습니다!");
		}
	}
}

0개의 댓글