java 개념정리 1 -변수와 타입, 입출력, 연산자

뿌이·2021년 11월 7일
0

Java 개념

목록 보기
1/19
post-thumbnail

안녕하세요 저는
스스로 복습 차원에서 배운 내용을 올리고, 확실히 이해하고 넘어가기 위해 글을 작성합니다.

변수와 타입

//식별자 : 클래스 이름, 변수 이름, 상수(final) 이름, 메소드 이름 등
int price; //price라는 이름의 변수를 정수형으로 선언 ->
정수형 데이터를 저장할 수 있는 메모리공간을 할당
double x; //x라는 이름의 변수를 double형으로 선언
double y;
//double 2z; 숫자인 경우 첫번째 자리 불가
int 가격; //한글 가능하지만 사용하지 마세요

변수는 비어있는 메모리 공간에 이름표를 붙여 데이터를 저장할 공간을 만드는 것 입니다.
위에서 price, x, y, 가격 과 같은 것이 데이터를 저장해줄 공간을 선언할꺼야!!
라고 말해주는 것입니다. 이게 바로 변수 선언 입니다.
변수를 사용할 때에는 반드시 값을 초기화 한 후 사용해야 합니다.
int x=0;
String s= null;
이런식으로요

public class Hello2 {
//class 이름하고 생성되는 소스코드의 이름은 동일( 모든 경우에 해당하는 것은 아님) 
// : 클래스 이름 바꿀때 문제날 수 있다는뜻,,

public int getAge1() { return 0; } //getAge()라는 이름의 메소드 선언, 
//다른 메소드 내부에는 메소드 선언 불가

	public static void main(String[] args) {// 메인메소드 시작

	boolean isEmptyTrue;
	boolean isEmpty;
	String strName; //strName이라는 이름의 변수를 문자열(String type)로 선언

	final int NUMBER_ONE = 1; // 프로그램 영역 내에서 바뀌지 않음 , 상수
	final double PI = 3.141592;

	}
public int getAge2() { return 0; } //getAge()라는 이름의 메소드 선언, 
// 다른 메소드 내부에는 메소드 선언 불가
public int getAge3() {return 0; } //다른 메소드 영역 바깥, 
// 클래스 내부에 선언 가능
}

제가 Hello2 라는 이름으로 class 파일을 생성하게 되면
public class Hello2라고 만들어집니다. 이 안에 메소드를 선언할 수 있는데요
항상 file이름 class 에는 메인메소드를 만들 수 있고 메인메소드에서 다른 함수들을 호출하여 코드가 실행됩니다.
저는 main 메소드 밖에다가 get Age1 이라는 메소드를 선언해줬습니다.
다른메소드의 내부에는 메소드 선언이 불가하기 때문이에요

final이라는 것은 처음에 설정한 값을 나중에 변경할 수 없다는 뜻입니다.
그래서 절대 바뀌지 않을 PI같은 값을 집어넣어 주곤 해요.
원주율 파이 다들 아시죠??ㅎㅎ

입출력

먼저 입력은 System.out.print("안녕");
처럼 "안녕" 이라는 말을 출력해줄 때 사용하고
입력은 Scanner이라는 것을 불러와서 사용해야 하는데요.
예제를 보시죠

import java.util.Scanner;

public class Exam1 {

	public static void main(String[] args) {
	// 키보드로 입력받은 정수는 시간단위의 초에 해당하고, 그 시간이 몇 시간, 
    	//몇 분, 몇 초에 해당하는지 계산한 다음 예시와 같이 출력하는 프로그램 작성
	//예를 들어, 정수 5000을 입력받은 경우 5000초에 해당하고, 이는 
    	//1시간 23분 20초이며 24시간을 넘어가는 경우는 발생하지 않음
		Scanner scan = new Scanner(System.in);
		
		System.out.print("시간을 초단위로 입력하세요 : ");
		int x= scan.nextInt(); //입력받을 초
		if(x>= 86400) //24시간을 넘어가면 실행 멈춰라
			return;
		
		int time= x/3600; //먼저 시간은 60초=1분(60초)니까 60*60해서 
        	//3600으로 나눈 몫이 시간으로 계산
		int minute= (x%3600)/60; //시간 판별 후 나머지를 60으로 나눈 
        	//나머지가 분
		int cho = x%60; //나머지가 초니까 이렇게 계산
		
		System.out.printf("%d초는 %d시간 %d분 %d초입니다",x,time,
        	minute,cho );
		
		
		
	}

}

Scanner를
Scanner scan = new Scanner(System.in);
으로 선언해줍니다.
그리고 입력받을 수를 x라는 변수에 넣어주기 위해서는

int형에 맞는 nextInt()로 입력 받습니다.
만약 String 변수에 문자형으로 입력받아서 저장하고 싶다면
next()를 사용해주는 것입니다.

증감 연산자

public class JunGamExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int opr = 0;
		opr +=3; //opr=opr+3 이므로 opr은 3이 됨
		System.out.println(opr++); //지금은 3이지만 이 행이 끝나면 4됨
		System.out.println(opr); //4
		System.out.println(++opr); //5
		System.out.println(opr); //5
		System.out.println(opr--); //지금은 5지만 이 행이끝나면 4
		System.out.println(opr); //4
		System.out.println(--opr); //3
		System.out.println(opr); //3
	}

}

증감연산자가 변수의 앞에 있는지 뒤에있는지 잘 생각해야한다

public class ThreePM {
	public static void main(String[] args) {
    int i= 97;
		String s = "Java";
		double f = 3.14f;
		System.out.printf("%d\n", i); //정수형태로 출력
		System.out.printf("%x\n", i); //16진수 정수의 형식으로 출력
		System.out.printf("%c\n", i); //char 형태(문자형태)로 출력
		System.out.printf("%5d\n", i); //5글자의 정수형태로 출력
        	//(오른쪽 정렬)
        	//(따라서 앞의 빈 공간은 공백으로 채움)
		System.out.printf("%05d\n", i); //5글자의 정수형태로 출력하지만
        	//빈 공간은 0으로 채움
		System.out.printf("%s\n", s); //String형태로 출력
		System.out.printf("%5s\n", s); //공백+5글자의 string형태로출력
		System.out.printf("%-5s\n", s); //왼쪽 정렬 5글자,빈공간은 공백
		System.out.printf("%f\n", f); //실수형태로 출력
		System.out.printf("%e\n", f); //지수 표현식의 형식으로 출력
		System.out.printf("%4.1f\n", f); //4글자, 소수점이하는 
        	//1자리까지만 출력(오른쪽 정렬), 빈공간은 공백
		System.out.printf("%-4.1f\n", f); // 왼쪽정렬 4글자, 
        	//소수점이하는 1자리까지만 출력(빈 공간은 공백)
	}
}


위의 코드를 실행하면 이런 결과가 나옵니다, 보통 자바 책에서는 print("")를 사용하는 경우가 많은데 println이나 print보다는 printf를 강추합니다.
그 이유는 %로 어떤 형태로 출력할지만 설정해 준다면 한글과 함께 사용할 수 있어서 편리합니다.
ex) System.out.printf("%d+%d=%d입니다",x,y,result);
를 printf로 작성한다고 생각해보세요.
System.out.print(x+"+"+y+"="+result+"입니다");
인데 점점 복잡해집니다 ... +로 붙여줘야하고 ,, 필자는 그래서 printf함수를 강추합니다.

profile
기록이 쌓이면 지식이 된다.

0개의 댓글

관련 채용 정보