JAVA

[JAVA] 변수, 사칙 연산, 자료형, 조건문, 반복문, 입출력

멍정 2023. 9. 6. 16:56

멍하

돌아온 자바공부 2일차입니다.

첫번째 강의는 변수 선언, 오버플로우, 사칙연산입니다.

https://youtu.be/cOHYKJD_-bc?si=vritZ6DFrS37V5xw 

public class Main {
	
	final static double PI = 3.141592; //final은 변경 불가 static은 클래스에서 공유하는 파일
	final static int INT_MAX = 14747367;

	public static void main(String[] args) {
		
		int intType = 100;
		double doubleType = 150.5;
		String stringType = "hello";

		System.out.println(intType);
		System.out.println(doubleType);
		System.out.println(stringType);
		
		int a = 1;
		int b = 2;
		System.out.println("a + b = " + (a + b));
		System.out.println("a - b = " + (a - b));
		System.out.println("a * b = " + (a * b));
		System.out.println("a / b = " + (a / b));

	}

}

출력결과

변수 선언, 사칙 연산은 다른 언어랑 비슷하게 사용하는 것 같으니

기억해둘만한 내용은 메인함수 밖에서 final로 상수 선언하는 부분!

public class Main {
	
	final static int num = 0;

	public static void main(String[] args) {

그리고 println으로 줄바꿈 출력을 한다정도!

public class Main {

	public static void main(String[] args) {
		
		int intType = 100;
		System.out.println(intType);

그리고 언급이 있었으니 기록으로 남기는 오버플로우.

전자계산기에서 사칙(四則)연산의 결과가 레지스터 계수기로 다룰 수 있는 수의 범위에서 벗어나는 것. 또는 그 결과 최상위의 자릿수에서 생긴 초과한 수.

[네이버 지식백과] 오버플로우 [overflow] (원자력용어사전, 2011., 한국원자력산업협회)

간단하게 변수가 담을 수 있는 수 이상을 담게되면 한바퀴 셔플이 돌듯 가장 작은 값이 나온다는 의미인데

예를들어 이 동그라미 변수가 +100부터 -100까지 담을 수 있기 때문에 101을 담는 순간 -100이 나오게 됩니다.

변수에 따라 담을 수 있는 크기는 모두 다르니 상황에 맞는 변수를 사용하는게 중요하겠죠.


3강 자료형

https://youtu.be/ROGaSmBggzY?si=Q6kwIFDEu0LyiIJW 

자바 변수 상식

1. 변수 초기화를 하지 않으면 사용할 수 없음
2. 정수 변수에 실수를 넣으면 정수부분만 저장됨.

정수 변수에 실수를 넣고 싶으면 형변환을 해주면 됨.


자료형(Date Types)

- C언어와 유사함(boolean, string제공됨)

- 소수점 표기 형식을 지수형식으로 출력할 경우 %e

- String은 char배열로 이루어짐 //4기가 정도 담을 수 있음

반복문

a부터 z까지 출력하기

public class Main {
	

	public static void main(String[] args) {
		for(char i = 'a'; i <= 'z'; i++)
		{
			System.out.print(i + " ");
		}
	}

}

진수 변환 //형식지정

public class Main {
	public static void main(String[] args) {
		int a = 200;
		System.out.println("10진수 : " + a);
		System.out.format("8진수 : %o\n", a); //8진수 형식지정자 %o
		System.out.format("16진수 : %x", a); //16진수 형식지정자 %x
	}
}

String의 substring함수 활용

public class Main {
	public static void main(String[] args) {
		String name = "John Doe";
		System.out.println(name);
        	//substring(시작점, 마지막 부분)을 출력
		System.out.println(name.substring(0, 3));
		System.out.println(name.substring(3, 6));
		System.out.println(name.substring(4, 8));
	}
}


4강 연산자

https://youtu.be/LHRNa3OthRc?si=tquALOUGaUxdtFoX 

+ 더하기
- 빼기
* 곱하기
/ 나누기(몫)
% 나누기(나머지)

증가감소연산자

//증가감소연산자
//++num의 형식으로 변수의 앞에 있을 경우 해당 열이 실행되기 전에 증가/감소하고
//num++의 형식으로 변수의 뒤에 있을 경우 해당 열이 실행된 후에 증가/감소 함.
public class Main {

	public static void main(String[] args) {

		int a =10;
		System.out.println(a); //10
        System.out.println(++a); //11
        System.out.println(a++); //11
        System.out.println(a); //12
		
	}

}

논리연산자

a == b a와 b가 같은가
a > b a가 b보다 큰가
a >= b a가 b보다 크거나 같은가
a && b (and) a와 b가 true라면 true
a || b (or) 둘 중 하나가 true거나 둘 다 true라면 true
둘 다 거짓이라면 false
!a (not) a가 true라면 false
a가 false라면 true

삼항연산자

조건 ? 참 : 거짓

조건이 참이면 참 위치의 값을 반환, 거짓이면 거짓 위치의 값을 반환

int max(int a, int b){ //더 큰 값을 반환하는 함수
	int result = (a > b) ? a : b; // a가 b보다 크면 a반환, 아니면 b반환
    return result;
    }

pow 함수 활용

Math.pow(a, b); == a^b


5강, 6강 조건문&반복문

https://youtu.be/eWx-5x_xVjM?si=kgVF_HG1xbSNyyfJ https://youtu.be/x47Oll7WHJY?si=vJFNWKahBAetX5Z6 

Primitive Type(원시 타입) & Reference Type(참조 타입)

- Primitive Type : 일반적인 자료형으로 실제 데이터 값을 저장(정수, 실수...)

- Reference Type : 메모리 주소로 객체를 참조함. (객체, 배열, 함수..)

조건문

public class Main {
	public static void main(String[] args) {

		String a = "I Love You.";
		if(a.contains("Love")) //해당 단어를 포함하는가
		{
			//포함하는 경우에 실행.
		}
		else
		{
			//포함하지 않는 경우 실행.
		}
	}
}

+ 문자열(String)이 특정 문자열을 포함하는지 확인 equals()

public class Main {

	public static void main(String[] args) {

		String a = "Man";
		int b = 0;
		
		//String은 Primitive Type가 아니기 떄문에 equal()사용
		if(a.equals("Man"))
		{
			System.out.println("남자입니다.");
		}
		if(a.equalsIgnoreCase("man")) //대소문자 구별 없이 사용
		{
			System.out.println("남자입니다.");
		}
	}
}

반복문

while문

public class Main {

	public static void main(String[] args) {

		int i = 1, sum = 0;
		while(i <= 1000)
		{
			sum += i++;
		}
		System.out.println(sum);
	}
}

for문

public class Main {
	final static int N = 30;
	public static void main(String[] args) {
		for(int i = N; i > 0; i--)
		{
			for(int j = i; j > 0; j--)
				System.out.print("*");
			System.out.println();
		}
	}
}

무한루프

for(;;) //무한루프
{
	break; //가장 가까운 반복문을 탈출
    }

7강 기본 입출력

https://youtu.be/Jmrx1h8Ba0M?si=4B_R8U-qerAw2_Ti 

 

키보드를 통한 정수 입력

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.print("정수를 입력하세요 : ");
		int i = sc.nextInt();
		System.out.print("입력된 정수는 "+ i +"입니다.");
		sc.close();
	}
}

file 읽어오기

 

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {

	File file = new File("input.txt"); //파일 읽어오기
    
	//파일 읽기 예외처리
	try { //만약 파일이 있다면
		Scanner sc = new Scanner(file);
		while(sc.hasNextInt()) //다음 값이 있다면
		{
			System.out.println(sc.nextInt()*100);
		}
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		System.out.println("파일을 읽어오는 도중에 오류가 발생했습니다.");
	}
	}
}