몰랐거나 헷갈렸거나 중요한것같은 개념 위주로 정리했다!
1. 스코프
스코프(Scope)란?
변수의 접근 가능한 범위
스코프 존재 이유?
- 효과적인 메모리 사용
- 코드 복잡성 감소
2. 스캐너(Scanner) 학습
사용자가 변수에 값을 입력 받고싶으면 어떻게 코드를 작성해야할까?
scanner
자바는 Sysyem.in을 통해 입력을 받을 수 있지만 해당 방법은 복잡하다.
따라서 이런문제를 해결하기 위한 클래스가 Scanner클래스이다.
package scanner;
import java.util.Scanner;
public class Scannner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요:");
String str = scanner.nextLine(); //입력을 String으로 가져온다
System.out.println("입력한 문자열: "+ str);
System.out.print("정수을 입력하세요:");
int intValue = scanner.nextInt();
System.out.println("입력한 정수: "+ intValue);
System.out.print("실수를 입력하세요:");
double doubleValue = scanner.nextDouble();
System.out.println("입력한 실수: "+ doubleValue);
}
}
입력 및 출력:
[예제1] 두 숫자의 합
package scanner;
import java.util.Scanner;
public class Scanner2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫번째 숫자를 입력하세요: ");
int num1 = scanner.nextInt();
System.out.print("두번째 숫자를 입력하세요: ");
int num2 = scanner.nextInt();
int sum=num1+num2;
System.out.println("두 숫자의 합: "+ sum);
}
}
[예제2] 두 숫자 입력받고 더 큰 숫자 출력하기
package scanner;
import java.util.Scanner;
public class Scanner3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫번째 숫자를 입력하세요: ");
int num1 = scanner.nextInt();
System.out.print("두번째 숫자를 입력하세요: ");
int num2 = scanner.nextInt();
if(num1>num2)
System.out.println(num1);
else if (num1<num2) {
System.out.println(num2);
}
else
System.out.println("동일한 숫자입니다,");
}
}
[예제3] 사용자가 입력한 문자열 출력하기
exit이라는 문자가 입력되면 프로그램을 종료한다.
프로그램은 반복해서 실행된다.
package scanner;
import java.sql.SQLOutput;
import java.util.Scanner;
public class ScannerWhile1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true){
System.out.print("문자열 입력:");
String str = scanner.nextLine();
if(str.equals("exit")){
System.out.println("프로그램 종료");
break;
}
System.out.println("입력된 문자열:"+str);
}
}
}
3. 배열
package array;
public class Array1 {
public static void main(String[] args) {
int[] students; //1. 배열 변수 선언
students = new int[5]; //2. 배열 생성 (배열의 참조값 생성)
System.out.println(students); //참조값 확인가능
//3. 배열 초기화
students[0] = 100;
students[1] = 90;
students[2] = 80;
students[3] = 70;
students[4] = 60;
}
}
배열 생성과 초기화 동시에 하는 법
package array;
public class Array1 {
public static void main(String[] args) {
int [] students; //배열 변수 선언
students = new int[][90, 80, 70, 60, 50]; //배열 생성과 초기화
}
}
4. 메서드(Method)
자바에서는 함수를 메서드라한다.
메서드 정의
public static int add(int a, int b){
// 메서드 본문, 실행 코드
}
제어자 반환타입 메서드이름 (매개변수 목록){
메서드 본문
}
[코드]
package method;
public class Method1Ref {
public static void main(String[] args) {
//계산 1
int sum1 = add(5,10);
System.out.println("결과1 출력 "+ sum1);
System.out.println("=========");
//계산 2
int sum2 = add(15,20);
System.out.println("결과2 출력 "+ sum2);
}
//add 메서드 정의
public static int add(int a, int b){
System.out.println(a + "+" + b + "연산 수행");
int sum = a+b;
return sum;
}
}
1) 메서드 선언(Method Declaration)
메서드 이름, 반환 타입, 파라미터(매개변수) 목록을 포함한다.
public static int add(int a, int b);
+ 메서드 선언을 통해 다른 곳에서 해당 메서드를 호출할 수 있다.
* 매서드 호출
메서드 이름에 입력값을 전달해 실행하는 것
int sum1 = add(5, 10);
int sum2 = add(15, 20);
2) 메서드 본문(Method Body)
메서드가 수행해야하는 코드 블록이다,
{
System.out.println(a + "+" + b + "연산 수행");
int sum = a+b;
return sum;
}
메서드 본문은 블랙박스이다.
메서드를 호출하는 곳에서는 메서드 선언은 알지만 메서드 본문은 모르기 때문
3) 용어정리 - 인수(Argument) vs 매개변수(Parameter)
호출: call("hello", 28);
메서드 정의: int call(String str, int age);
- 인수: "hello", 28처럼 넘기는 값
- 매개변수: 메서드를 정의할때 선언된 변수인 String str, int age
4) 메서드 오버로딩(Overloading)
오버로딩(Overloading)이란?
이름이 같고 매개변수가 다른 메서드를 여러개 정의하는 것
add(int a, int b)
add(int a, int b, int c)
add(double a, double b)
오버로딩 규칙
메서드의 이름이 같아도
- 매개변수의 타입이 다른 경우 → O
- 매개변수의 순서가 다른 경우 → O
- 반환 타입이 다른 경우
int add(int a, int b)
double add(int a, int b)
→ X
[예제1] 매개변수의 개수가 다른 오버로딩
public class Overloading1 {
public static void main(String[] args) {
System.out.println("1: "+ add(1,2));
System.out.println("2: "+ add(1,2,3));
}
public static int add(int a, int b){
System.out.println("1번 호출");
return a+b;
}
public static int add(int a, int b, int c){
System.out.println("2번 호출");
return a+b+c;
}
}
[예제2] 매개변수의 타입이 다른 오버로딩
public class Overloading2 {
public static void main(String[] args) {
myMethod(1, 1.2);
myMethod(1.2, 1);
}
public static void myMethod(int a, double b){
System.out.println("int a, double b");
}
public static void myMethod(double a, int b){
System.out.println("double a, int b");
}
}
[예제3]
public class Overloading3 {
public static void main(String[] args) {
System.out.println("1: "+ add(1,2));
System.out.println("2: "+ add(1.5,2.4));
}
public static int add(int a, int b){
System.out.println("1번 호출");
return a+b;
}
public static double add(double a, double b){
System.out.println("2번 호출");
return a+b;
}
}
'[김영한 자바 강좌] 정리 > 입문' 카테고리의 다른 글
[김영한의 자바 입문] - 코드로 시작하는 자바 첫걸음(섹션0 ~ 5) (0) | 2024.04.09 |
---|