클래스 안에는 두 개 또는 그 이상의 메서드를 사용할 수 있다.

 

main 메소드가 아닌 다른 메서드는 자동로 실행되지 않아서 main 메소드에서 호출해야만 실행된다.

 

메서드 호출

public class Example01 {

	public static void main(String[] args) {
		System.out.println("첫번째 메소드");
	}
	
	static void second(String text) {
		System.out.println("두번째 메소드");
	}

}
첫번째 메소드

위의 코드 실행결과는

"첫번째 메소드"

로 main 메서드의 print문만 실행되는데 second 메서드를 실행시키기 위해서는 main메서드에서 호출을 해줘야한다.

public class Example01 {

	public static void main(String[] args) {
		System.out.println("첫번째 메소드");
		
		second("두번째 메서드")
	}
	
	static void second(String text) {
		System.out.println(text);
	}

}
첫번째 메소드
두번째 메서드

 

메서드 호출문 작성

메서드 이름(파리미터1, 파라미터2, 파라미터3 ...)

파라미터는 없을 수도 있고, 1개 혹은 여러개 있을 수 있다

 

return 값을 받는 메서드 호출문

public class Example01 {

	public static void main(String[] args) {
		int result; // 변수 선언
		
		result = add(3,4);
		System.out.println(result);
	}
	
	static int add(int a, int b) {
		int sum = a + b;
		
		return sum;
	}
}

main 메서드에서 3과 4라는 파라미터를 add로 넘기면 add 메서드에서는 파라미터 값을 계산하고 호출한 곳으로 리턴 값을 넘겨준다.

뿐만 아니라 메서드의 실행을 종료하고 메서드를 호출한 곳으로 돌아가는 일도 한다.

 

메서드의 리턴 값을 계산하고 돌아감 메서드를 종료하고 호출 한 곳으로 돌아가기만 함
return sum;
return a + b;
return ;
  void 키워드가 붙은 메서드에서만 사용가능

 

반응형

'study > JAVA' 카테고리의 다른 글

[JAVA] 타입 변환  (0) 2023.02.27
[JAVA] 변수 타입과 값 할당  (2) 2023.02.26
[JAVA] 키워드와 식별자  (0) 2023.02.26

자동 타입 변환

자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 정장될 때 발생

큰 허용 범위 타입 = 작은 허용 범위 타입

 

허용범위 크기순 정렬

byte < short < int < long < float < double
	public static void main(String[] args) {
		byte byteval = 2;
		int intval = byteval;
		
		System.out.println(intval);
	}

위의 코드의 경우 정상적으로 2가 출력되지만, 아래의 경우

	public static void main(String[] args) {
		int intval = 2;
		byte byteval = intval;
		
		System.out.println(byteval);
	}

Type mismatch: cannot convert from int to byte

다음과 같은 type mismatch 오류가 발생한다. 강제 타입 변환을 통해 해당 오류를 해결할 수 있다.

 

* char 타입보다 byte 타입의 허용범위가 작지만, char 타입은 허용범위 중 음수를 포함하지 않기 때문에 변환이 되지 않는다.

 

강제 타입 변환

캐스팅 연산자를 사용해서 타입을 강제 변환할 수 있다.

작은 허용 범위 타입 = (작은 허용 범위 타입)큰 허용 범위 타입

	public static void main(String[] args) {
		int intval = 2;
		byte byteval = (byte)intval;
		
		System.out.println(byteval);
	}

다음과 같이

byte = byteval = (byte)intval;

를 입력하면 강제로 타입을 변환할 수 있다

 

연산에서의 자동 타입 변환

정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의 변수는 int 타입으로 자동 타입 변환된다.

	public static void main(String[] args) {
		byte val1 = 1;
		byte val2 = 2;
		
		byte var3 = val1 + val2; //오류 : Type mismatch: cannot convert from int to byte
        int var3 = val1 + val2 ; 
		
		System.out.println(var3);
	}

오류 : Type mismatch: cannot convert from int to byte

오류가 발생하므로 계산된 값은 int 변수에 저장해야한다.

 

피연산자 중 허용 범위가 더 큰 피연산자로 계산되므로 피연산자 중 long, double  이 있을경우 연산 결과는 범위가 큰 연산자로 저장되어야한다.

 

+ 연산자에서의 문자열 자동 타입 변환

+ 연산자는 둘 다 숫자면 덧셈연산, 하나라도 문자열이면 결합연산을 수행한다.

 

문자열을 기본 타입으로 강제 타입 변환

메소드를 이용해 강제 형 변환한다

String -> byte Byte.parseByte(str)
String -> short Short.parseShort(str)
String -> int Integer.parseInt(str)
String -> long Long.parseLong(str)
String -> float Float.parseFloat(str)
String -> double Double.parseDouble(str)
String -> boolean Boolean.parseBoolean(str)
반응형

'study > JAVA' 카테고리의 다른 글

[JAVA] 메서드 호출  (0) 2023.03.01
[JAVA] 변수 타입과 값 할당  (2) 2023.02.26
[JAVA] 키워드와 식별자  (0) 2023.02.26

변수

데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간

 

변수 선언

 

기본 형식

타입 식별자; 타입 식별자 = 초기값;

로컬 변수는 사용하기 전에 반드시 선언해야한다.

 

타입

 

변수의 타입 - 기본 타입

  • 정수 타입 : byte, char, short, int, long
  • 실수 타입 : float, double
  • 논리 타입 : boolean

정수리터럴 : 소스 코드에서 프로글래머에 의해 직접 입력된 값

2진수 : 0b or 0B로 시작, 0과 1로 구성

8진수 : 0으로 시작, 0~7로 구성

10진수 : 소수점이 없는 0~9로 구성

16진수 : 0x or 0X로 시작, 0~9 숫자와 a,b,c,d ,e,f 로 구성

 

	public static void main(String[] args) {
		int var1 = 0111;
		int var2 = 111;
		
		System.out.println(var1);
		System.out.println(var2);
	}
73
111

8진수의 경우엔 0111을 출력하는게 아닐까 생각했지만 0으로 시작된다면 8진수로 인식하고 73으로 10진수 변환되어 출력되었다.

 

실수리터럴

소스 코드에서 소수점이 있는 숫자 리터럴은 10진수 실수로 인식

알파벳 e, E 가 포함되어 있는 숫자 리터럴은 지수와 가수로 표현된 소수점이 있는 10진수 실수로 인식

	public static void main(String[] args) {
		double var1 = 10e2;
		
		System.out.println(var1);
	}
1000.0

 

 

*char 타입은 문자리터럴 이라고 하며 유니코드로 변환되어 자징되어서 정수 타입에 넣었습니다...

	public static void main(String[] args) {
		char var1 = "A";
		System.out.println(var1);
	}

오류: Type mismatch: cannot convert from String to char

 

자바에서 ""로 감싼 문자는 문자열로 char 타입이 아닌 String 타입으로 변수를 저장한다. 

char 타입에 ""로 감싼 문자열을 입력하면  type mismatch 에러가 발생한다.

 

식별자

자바 식별자 명명 규칙

  • 하나 이상의 글자로 이루어져야 한다
  • 첫 번째 글자는 문자이거나 $, _ 여야 한다
  • 두 번째 이후의 글자는 숫자, 문자, $, _dudi gksek
  • $, _ 이외의 특수 문자는 사용할 수 없다
  • 길이의 제한은 없다
  • 키워드는 식별자로 사용할 수 없다
  • 상수 값을 표현하는 단어는 식별자로 사용할 수 없다

값 저장

변수에 값을 저장할 때는 대입연산자 = 를 사용

오른쪽 값을 왼쪽에 저장한다는 의미

값을 저장하는 것을 변수 초기화라고 하며, 이 때 사용된 값을 초기값이라고 한다

	public static void main(String[] args) {
		int var1;
		
		System.out.println(var1 + 10);
	}

오류 :Unresolved compilation problem:The local variable "변수명" may not have been initialized

변수의 초기값을 할당하지 않고 사용하면 다음과 같은 오류가 발생한다.

해결방법 : 변수 초기화를 해준다

 

값을 바꿀 수 없는 변수

변수 앞에 final 키워드를 사용하면 해당 변수에 딱 한번만 값을 대입할 수 있다.

	public static void main(String[] args) {
		final double pi = 3.14;
		pi = 3-141592;
		
		System.out.println(pi);
	}

오류 : The final local variable "변수명" cannot be assigned. It must be blank and not using a compound assignment

final로 이미 한번 초기화 된 변수를 변경하려고 하니 다음과 같은 오류가 발생한다.

반응형

'study > JAVA' 카테고리의 다른 글

[JAVA] 메서드 호출  (0) 2023.03.01
[JAVA] 타입 변환  (0) 2023.02.27
[JAVA] 키워드와 식별자  (0) 2023.02.26

자바 프로그램의 구성요소

 

키워드

  • 자바에서의 예약어로 자바에서 키워드를 만들 때 정한 사용 목적 이외의 용도로를 쓸 수 없다.
  • 소문자로 되어있다

 

식별자

  • 클래스, 인터페이스, 변수, 메소드, 배열, 문자열을 구분할 수 있는 이름
  • 대소문자를 구분하여 사용

 

public class Hello {

	public static void main(String[] args) {
		System.out.println("Hello, Java");
	}

}

public class Hello {

public static void main(String[] args) {

System.out.println("Hello, Java");

}

}

키워드 : 메소드 앞에 반드시 써주어야 하는 것

식별자 : 키워드와 달리 클래스, 메소드, 변수에 붙이는 이름은 프로그래머가 정할 수 있음

 

키워드 종류

자바의 키워드

abstrack continue for new switch
assert default if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while

상수 값을 표현하는 단어

true false null

(지금 외울 필요 x)

 

 식별자 명명 규칙

  • 특수문자와 공백은 사용할 수 없다
  • 식별자로 한글을 사용할 수 있다(잘 사용하지 않는다)
  • 키워드는 식별자로 사용할 수 없다
  • 첫번째 문자로 숫자를 사용할 수 없다
  • 길이 제한이 없다
  • 대, 소문자를 구분한다
반응형

'study > JAVA' 카테고리의 다른 글

[JAVA] 메서드 호출  (0) 2023.03.01
[JAVA] 타입 변환  (0) 2023.02.27
[JAVA] 변수 타입과 값 할당  (2) 2023.02.26

+ Recent posts