[3주차] 자바 프로그래밍

Useful·2023년 5월 5일
0

Java

목록 보기
5/10
post-thumbnail

해당글은 정리가 되어 있지 않으므로 귀찮은 필자가 다시 수정 예정입니다 😂^^

자바는 기본으로 본체가 'Class'로 이루어져있음.

public 접근지정자에 대해 설명


public class test {											
														
	public static int sum(int n, int m ) {	// ┐
		return n + m;						// │ 메서드
	}										// ┘
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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 이름의 클래스 선언

public class Hello

클래스는 2가지로 정의 되어있음

필드(인스턴스 변수)와 메서드

  • 필드
    - 뭘 알고 있는지?
  • 메소드
    - 뭘 할 수 있는지?

개에 대한 정보를 알 수 있는 클래스를 작성해보자


public class Dog {
	public String name;
	public int age;
	
	public Dog(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public void showDogName() {
		System.out.println("my name is " + this.name);
	}
	
	public static void woof() {
		System.out.println("Woof! woof!");
	}
	
	public static void main(String[] args) {
		Dog Baduk = new Dog("Baduk", 3);
		Baduk.showDogName();
	}	
}

대입연산자

System.out.println() 메서드는 콘솔에 출력을 해주는 메서드임을 인지

Java가 작동하려면 JVM이 필요함
JVM은 클래스를 객체로 만들고(실행할 수 있는 코드로 변환 시키고),

fn.java => fn.class(JVM이 알아먹느 녀석)
이 fn.class가 JVM 위에 올라가서 하는데
이때 heap 공간 위에 올라감

어쨌건간에 main() 함수는 기본이다.

메인함수 => 클래스호출 -> 힙공간 할당 ->

.class => object 라는 형태로 바뀜
class는 메모리 상에 존재하고 있다.

main method가 static 인 이유
static 메서드는 static으로 선언된 메서드밖에 가져올 수 없음

main()메서드를 가지고 있는 클래스는 하나여야 한다
main 메서드에서 new 연산자를 통해 다른 클래스를 가져오는 형식임.

변수는 메모리 공간을 할당하고 그곳에 이름을 붙인 것과 같다.
int i = 20;

레퍼런스 = 주소, 객체에 대한
https://codinglevelup.tistory.com/134

클래스 이름은 대문자로 시작

리터럴

  • 프로그램에서 직접 표현한 값

정수 리터럴

  • 10진수, 8진수, 16진수, 2진수 리터럴

    15 -> 10진수 리터럴 15
    015 -> 0으로 시작하면 8진수 .십진수로 13
    0x15 -> 0x로 시작하면 16진수. 십진수로 21
    0b0101 -> 0b로 시작하면 2진수. 십진수로 5

    정수 리터럴은 int 형으로 컴파일
    long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표시

    실수 리터럴

  • 소수점 형태나 지수 형태로 표현한 실수

  • float, double

    단일 인용부호(' ')로 문자 표현
    사례_ W, A 가, *, 3 등

기본 타입 이외의 리터럴
null 리터럴

  • 레퍼런스에 대입 사용
    int n = null; //기본 타입에 사용 불가
    String str = null;

문자열 리터럴

  • 이중 인용부호(" ")로 묶어 표현
    - 사례) "Good", "Morning", "자바", "3.19"
  • 문자열 리터럴은 String 객체로 자동 처리
    String str = "Good";

상수 선언
- final 키워드 사용
- 선언 시 초기값 지정
- 실행 중 값 변경 불가

final double PI = 3.141592

자동 타입 변환

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

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

    long m = 25;

    강제 타입 변환

    circleArea.java

    import java.util.*;

public class CircleArea {

public static void main(String[] args) {
	final double PI = 3.14;

	double radius = 10.0;
	double circleArea = radius * radius * PI;
	Scanner sc = new Scanner(System.in);
	sc.nextInt();
	System.out.println("원의 면적 = " + circleArea);

}

}


Scanner를 이용한 콘솔입력받기
```java
import java.util.Scanner;

public class ScannerEx {
	public static void main(String[] args) {
		System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여, 입력하세요.");
		Scanner sc = new Scanner(System.in);
		
		String name = sc.next();
		System.out.println("이름은 " + name + ", ");
		
		String city = sc.next();
		System.out.println("도시는" + city + ", ");
		
		int age = sc.nextInt();
		System.out.println("나이는 " + name + "살, ");
		
		double weight = sc.nextDouble();
		System.out.println("체중은" + weight + "kg, ");
		
		boolean single = sc.nextBoolean();
		System.out.println("독신여부는  " + single + "입니다.");
		
		sc.close();
	}
}

profile
1 commit = 1 life

0개의 댓글