본문 바로가기

개발일지/Java + Spring

[java] 다양한 복습 예제(문자열 자르기, 상수, 함수, 연산자)

 

<함수 만들고 불러와서 사용>

public class Main2 {
	
	final static double PI=3.141592; //final 상수형
	public static void main(String[] args) {
		int r = 30; //반지름
		System.out.println(r * r * PI); //원의 넓이 구하기
	}

}

final static double PI=3.141592;

상수형을 함수로 만듦
상수형 = PI 대문자


<오버플로우(overflow) 현상>

public class Main3 {
	final static int INT_MAX = 2147483647; //변하지 않는 상수
	public static void main(String[] args) {
		int a = INT_MAX; //상수를 안에 넣음
		System.out.println(a); //a 숫자를 넣음
		System.out.println(a + 1); //overflow
		
		/*
		 * int는 2147483647 이상 저장할 수 없어서 넘쳐 흘렀고 
		 * overflow 현상이 일어남
		 */

	}

}

int형의 경우 담아 낼 수 있는 숫자가 21474835647까지이다. 그러니 1이라도 초과가 되면 오버플로우 현상(넘쳐흐르다)이 일어난다. 때문에 엉뚱한 값이 출력된다.


<형변환>

public class Main4 {

	public static void main(String[] args) {
		double b = 0.5;
		int a = (int)(b + 0.5); 
		//1.0을 int에 넣고싶은데 double이 데이터 크기가 커서
		//(64bit=8byte) int형변환을 해줬음
		System.out.println(a);

	}

}

double = 8byte

int = 4byte

int 안에 1을 넣기엔 충분하지만 double 데이터 크기가 커서 받아들이지 못 한다. 때문에 (int) 형변환을 해주고 넣어주면 끝!


<연산자 우선순위>

public class Main5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double a = 10.3;
		double b = 9.6;
		double c = 10.1;
		
		System.out.println((a+b+c) / 3);
		//연산자 우선순위
		
		//답이 10.0인 이유 실수형이라서 
	}

}

실수형 값들을 계산하려고 한다. (괄호) 안에 넣지 않았다면 c/3부터 했을텐데 (a+b+c) 안에 넣어줘서 더하기 먼저 하고 3으로 나눴다.


<a부터 z까지 출력>

public class Main6 {

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

	}

}

앞으로 많이 사용하게 될 반복문(for)


<10진수 8진수 16진수>

public class Main7 {

	public static void main(String[] args) {
	int a = 200;
	
	System.out.println("10진수 : " + a);
	System.out.format("8진수 : %o\n",  a); //%o는 8진수, \n은 줄바꾸기
	System.out.format("16진수 : %x", a); //%x는 16진수
	}

}

10진수 -> 8진수 : %o (소문자 o)

10진수 -> 16진수 : %x

\n 줄바꿈 

 

System.out.format -> .println 아니니까 주의!


<문자열 자르기>

public class Main8 {
	public static void main(String[] args) {
		
		String name = "John Doe";
		
		System.out.println(name);
		System.out.println(name.substring(0, 1));
		System.out.println(name.substring(3, 6));
		System.out.println(name.substring(5, 8));
		System.out.println(name.substring(0, 4));
		// substring 칼로 a부터 시작해서 b까지 잘라라
	}
}

name.substring(0, 1)

name의 0부터 1까지 자르기 = J

name.substring(3, 6)

name의 3부터 6까지 자르기 = n D

name.substring(5, 8)

name의 5부터 8까지 자르기 = Doe


<연산자 복습>

public class Main9 {

	public static void main(String[] args) {
		
		int a = 50;
		int b = 50;
		
		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가 30보다 큰가요? " + ((a == b)&&(a > 30)));
		System.out.println("a가 50이 아닌가요? " + !(a == 50));
		System.out.println("a가 50이 아닌가요? " + (a != 50)); //이걸 더 많이 씀

	}

}

<함수 선언-삼항연산자>

public class Main10 {

	public static void main(String[] args) {
		
		int x = 50;
		int y = 60;
		
		System.out.println("최대값은" + max(x,y) + "입니다.");
		//max라는 함수를 부른다. (x,y = 인수)
		}
	//함수를 만듭니다.
	//반환형, 함수이름, 매개변수
	static int max(int a, int b) { //더블로 바꾸면 실수도 받을 수 있음
		int result = (a > b)? a : b;
		return result;
	}
}

 

함수를 만들 때 필요한 것은 반환형, 함수 이름, 매개 변수이다. Jquery에서 사용할 때 처럼 functio 대신 static으로 써준다. 두 개를 부르면 두 개를 선언하는 게 법칙이다.