자바 프로그래밍 - Unit 2 자바 기본 (1)

honeyricecake·2022년 3월 27일
0

학교 수업 - 자바

목록 보기
4/16

에제 2 - 1


/*
	소스 파일 : Hello.java
 */

public class Hello {
	
	public static int sum(int n, int m)//static 메소드 : 객체의 생성 없이 호출이 가능하다.
	{
		return (n + m);
	}

	public static void main(String[] args) {
		
		int i = 20;
		int s;
		char a;
		
		s = sum(i, 10);
		a = '?';
		System.out.println(a);
		System.out.println("Hello");
		System.out.println(s);
	}

}

실행 결과 :
?
Hello
30

코드 설명 :

Hello 이름의 클래스 선언

public class Hello{

}

class 키워드로 클래스 선언
public 선언하면 다른 클래스에서 접근 가능하다.

한 줄 주석은 //
여러행 주석은 /* */

main메소드는 public static void 로 선언한다. -> 객체 생성 없이 사용, return값 X
String args[]로 실행 인자를 전달받음
모든 클래스가 main()을 가지지 않음

메소드 : 클래스 바깥에 작성할 수 없음

지역 변수 : 메소드 실행이 끝나면 자동 소실

;로 한 문장의 끝을 인식

화면 출력 : 표준 출력 스트림에 메시지 출력 (System.out)
System.out.println() -> 표준 출력 스트림 System.out의 println() 메소드 호출
println()은 여러 타입의 데이터 출력 가능, 그리고 출력 후 다음 행으로 커서 이동

식별자(identifier)

클래스, 변수, 상수, 메소드 등에 붙이는 이름

식별자의 원칙

  1. 일반적으로 특수문자, 공백 또는 탭은 식별자로 사용할 수 없으나 '_' 와 '$'는 사용 가능

  2. 유니코드 문자 사용 가능, 한글 사용 가능

  3. 자바 언어의 키워드(예약어)는 식별자로 사용 불가능!!

  4. 식별자의 첫번째 문자로 숫자는 사용불가능

  5. boolean 값과 널 값(null)은 식별자로 사용불가능

  6. 대소문자 구별

Java의 이름 붙이는 관습

기본 : 가독성 높은 이름 사용/ 충분히 긴 이름으로 붙이기

자바 언어의 이름 붙이는 관습 : 헝가리안 표기법

클래스 이름 : 첫번째 문자는 대문자로 시작 -> 대문자로 안 만들면 만들어지지 않는다.
변수, 메소드 이름 : 첫 단어는 소문자로 시작, 이후 각 단어의 첫번째 문자는 대문자로 시작
상수 이름 : 모든 문자를 대문자로 표시

Java의 기본 타입

기본 타입 : 8개
boolean / char / byte / short / int / long / float / double

레퍼런스 타입 :
C/C++의 포인터와 비슷한 개념, 실재 주소를 가지진 않음

배열에 대한 레퍼런스, 클래스에 대한 레퍼런스, 인터페이스에 대한 레퍼런스

기본 타입들은 크기가 정해져 있다.

논리 타입 : boolean 1비트
문자 타입 : char 2바이트(C언어와 가장 큰 차이! 아스키 코드가 아닌 유니코드)
정수 타입 : byte, short, int, long(각각 1, 2, 4, 8바이트)
실수 타입 : float, double(각각 4, 8 바이트)


public class Byte {

	public static void main(String[] args) {
		
		System.out.println(Character.BYTES);
		System.out.println(Short.BYTES);
		System.out.println(Integer.BYTES);
		System.out.println(Float.BYTES);
		System.out.println(Long.BYTES);
		System.out.println(Double.BYTES);
		
	}

}

실행결과 :
2
2
4
4
8
8

자료형 char,int등과 구분하기 위해 클래스는 Character, Integer 로 자료형과 다른 형태이다.

문자열 : String 클래스

문자열은 기본 타입이 아님
String 클래스로 문자열 표현

리터럴

프로그램에서 직접 표현한 값(데이터 그 자체, 값)

정수, 실수, 문자, 논리, 문자열 값이 있음

정수는 int형으로 컴파일

long 타입은 숫자 뒤에 L 또는 l을 붙여 표시
ex. long g = 24L;

실수 타입은 double로 컴파일

문자 : 글자 하나

단일 인용 부호 ('')로 문자 표현 : 글자 하나를 표현

1바이트는 8비트 -> 2자리 16진수
따라서 2바이트는 4자리 16진수이다.

따라서 \u0041 등의 유니코드값을 사용하여 나타낼 수도 있다.

특수문자는 백슬래시로 시작
\b : 백스페이스
\t : 탭
\n : 개행문자
\f : 폼피드 -> 프린트 출력시 현재 페이지를 마침
\r : 캐리지 리턴 -> 행의 처음으로 커서를 이동
\"": 이중 인용부호
\'': 단일 인용부호
\ : 역슬래시(\만으로는 뒤에 n이 오면 개행문자로 인식되는 등의 문제가 생기므로)

논리값과 boolean 타입

논리값은 2개뿐 -> true, false
boolean 타입 변수에 치환하거나 조건문에 이용

기본 타입 이외의 값
null : 클래스의 레퍼런스에 대입 사용

문자열 스트링 : 이중 인용부호로 묶어 표현
ex. "Good", "Morning", "자바"...

문자열은 String 객체로 자동 처리

String str = "Good";

var 키워드를 사용하여 변수 타입 생략 ->
Java 10부터 도입된 키워드, 지역 변수의 선언에만 사용 -> 컴파일러가 변수 타입을 추론

사용 예 :
var price = 200;//price는 int 타입으로 결정

var 키워드를 사용하여 변수 타입을 생략할 시에는 변수 선언문에 반드시 초기값을 지정해야 한다!

상수 선언

final 키워드 사용
(C언어의 #define PI 3.141592)
선언 시 초기값 지정

실행 중 값 변경 불가!!

final double PI = 3.141592;//C언어와 달리 데이터 타입이 필요하다.

예제

public class CircleArea {

	public static void main(String[] args) {
		final double PI = 3.141592;
		double radius = 10.0;
		
		double circleArea = radius * radius * PI;
		
		System.out.println("원의 면적 = " + circleArea);

	}

}

자동 타입 변환

작은 타입은 큰 타입으로 자동 변환 -> 컴파일러에 의해 이루어짐.

치환문이나 수식 내에서 타입이 일치하지 않을 때

long m = 25;//25는 int 타입, 25가 long 타입으로 자동 변환

double d = 3.14 * 10;//실수 연산을 하기 위해 10이 10.0으로 자동 변환
//다른 피연산자 3.14가 실수이기 때문!! -> 이는 숫자들 중 하나만 실수라도 자동으로 실수 연산이 됨을 의미한다.

강제 타입 변환

ex.
double d = 1.9;
int n = (int)d; //n = 1

강제 타입 변환으로 소숫점 이하 0.9는 손실된다.

0개의 댓글