국비학원/공부

14일차 java(2)

mikan- 2023. 5. 10. 23:10

#논리형

//논리형(=boolean)(불린),문자형(char)-한글자 저장,한글이상 저장->String
public class VarTest3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("논리적인 값저장");
		boolean b=true;//소문자만 입력이 가능=>True,TRUE(X)
		boolean b2=2>3;//false (관계연산자)를 통해서 값저장가능
		//변수의 자료형=>메모리를 알맞게 사용하는 목적
		System.out.println("b=>"+b+",b2=>"+b2);
		System.out.println("문자형");//char,String
		char c1='A';//->내부적으로 숫자 65로 저장
		char c2=65;//A를 가리키는 아스키코드값 65,int c2=65(숫자 65)
		//문자형태의 16진수형태로 입력을 받아서 문자로 저장
		//1~9,10(A),11(B),12(C)~15(F)
		//\u0000~\uFFFF (RAM)
		//\u0041=>4자리중에서 뒤에서부터 자리수를 계산(u 16진수형문자)
		char c3='\u0041';//A
		System.out.println("c1->"+c1+",c2->"+c2+",c3=>"+c3);
		//문자열+문자열=>문자열,문자+문자=>문자열
		//숫자+문자열=>문자열
		String s1="자바 기초 문법";//String->기본 자료형이 아님(참조형)
		String s2="연산자";
		String s3=s1+" "+s2;//문자열 결합 || (오라클)
		//빈문자열=>문자열 내부에 공백이 들어간 문자열
		System.out.println("s3=>"+s3);
	}

}

 

#자료형

// 변수 : 자료형(종류, 크기를 지정해 주는것) -> 변수, 상수의 특성
public class Vartest4 {

	public static void main(String[] args) {
		// 변수선언 : 같은 자료형의 변수를 여러개 동시에 선언하고 싶다.
		// int num; int num2; int num3;
		// 선언하면서 값도 같이 저장 -> ,로 나열함
		int num, num2 = 3, num3 = 4;
		num = 23;
		System.out.println(num);

		// 변수는 중간에 값이 변경되기 때문에 맨 마지막 값만 저장됨
		num = 45;
		System.out.println(num);
		// 상수(constant)는 값이 정해지면 중간에 값이 변경되지 않음
		int num4 = 5, num5 = 6;

		/*-
		 * 상수화된 변수는 일단 값을 저장하게 되면 중간에 값이 변경 안됨
		 * 변수 앞에 final을 붙이면 상수화된 변수가 됨
		 * 상수화된 변수는 전부 대문자로 사용함
		 */
		final int NUM6 = 90;

		// NUM6 = 100; : 이미 상수화 됐기 때문에 에러남
		/*-
		 * 서로 다른 변수에 똑같은 값을 반복적으로 넣어줄때 편하게 값을 저장할 수 있음 
		 * num2 = 70; 
		 * num3 = 70; 
		 * num4 = 70;
		 * num5 = 70;
		 */
		num2 = NUM6; 
		num3 = NUM6;
		num4 = NUM6;
		num5 = NUM6;

		System.out.println("num = " + num + ", NUM6 = " + NUM6);
	}

}

 

#지역변수, 멤버변수

/*
 * 변수의 종류 
 * 지역변수 : 정해진 범위 내에서만 사용이 가능한 변수
 * 멤버변수 : 클래스 내부에 선언된 변수(클래스 편)
 */
public class VarTest5 {
	// 멤버변수 : 자바스크립트의 전역변수처럼 모든 메소드에서 사용 가능함(인스턴스 변수)
	int su3;

	public static void main(String[] args) {
		System.out.println("변수의 사용범위(scope)");
		/*-
		 * su1 = 지역변수 지역변수의 특징 
		 * 	1. 특정범위 내에서만 사용 
		 * 	2. 반드시 초기값을 넣어줘야 됨
		 */
		int su1 = 10;
		// 초기화 : 변수 만들고 맨 처음 저장된 값
		System.out.println("su1 = " + su1);
		
		// 블럭처리(어디서부터 더시까지 사용한다(범위지정))
		{
			int su2 = 20;
			System.out.println("su2 = " + su2);
		}
		// 에러 뜨는 이유는 su2가 있는 범위 바깥에서 사용하기 때문(참조)
		// System.out.println("su2 = " + su2);

		// su1은 범위 안에 있기 때문에 가능
		System.out.println("su1 = " + su1);
	}
}

 

#산술, 증감연산자

public class Op1 {

	public static void main(String[] args) {
		/*-
		System.out.println("산술, 증감연산자");
		
		int a = 3, b = 4;
		
		// 연산의 기본 단위 : int
		int c = a + b;
		System.out.println("c : " + c);
		*/
		// +, -, *, / 의 결과 값이 int 범위를 벗어나지 않는 한 기본자료형은 int로 고정
		double area = 5 * 5 * 3.141592;
		System.out.println("area = " + area);

		// ++, -- : 증감
		/*-
		 * int b = a; -> int b = 4;
		 * 2 = a + 1; -> a = 4 + 1; -> a = 5;
		 */
		int a = 4;
		int b = a++;
		System.out.println("a의 중간값 : " + a + ", b의 중간값 : " + b);
		/*-
		 * a = a+1; -> a = 5 + 1 -> a = 6
		 * int c = a; int c = 6;
		 */
		int c = ++a;
		System.out.println("a = " + a + ", b = " + b + ", c = " + c);
	}

}

 

#연산자

public class Op2 {

	public static void main(String[] args) {
		byte b1 = 5;
		short s = -4;
		int i = 8;
		System.out.println("b1 = " + b1);

		// () : 연산자 우선순위
		System.out.println("-s = " + (-s));
		System.out.println("i = " + i);
		// i = i+1 -> i = 8+1 -> i = 9
		System.out.println("++i = " + (++i));
		// System.out.println(i) = 9;
		// i = i+1 -> i = 9+1 -> i = 10
		System.out.println("i++ = " + (i++));
		
		System.out.println("중간 i = " + i);
		// i = i-1 -> i = 10-1 = 9
		// System.out.println(i)
		System.out.println("--i = " + (--i));

		System.out.println("i-- = " + (i--));

		System.out.println("최종 i = " + i );
		
		int a = 4;
		int b = --a;
		System.out.println(b + ", " + a);
		int c = b--;
		System.out.println(c + ", " + b);
		int d = c;
		System.out.println(a + ", " + b + ", " + c + ", " + d);
	}

}

 

#관계연산자, 논리연산자

public class Op3 {

	public static void main(String[] args) {
		// 관계연산자(=대소 비교연산자) : >, <, >=, <=, !=(같지않다), ==(컴퓨터언어2개)
		// 논리연산자(=참, 거짓 판별(boolean)) : &&, ||, ^(XOR)
		System.out.println("관계, 논리연산자");
		
		int t1 = 3, t2 = 5, t3 = 7;
		int t4;
		// 변수는(b1,b2,b3)는 선언되어 있지만 아직 값이 저장 안됨 = 초기화 X
		boolean b1, b2, b3;
		// b4 = 초기화 O
		boolean b4 = true;
		
		System.out.println("(t1 > t2) : " + (t1 > t2)); // false
		System.out.println("(t2 < t3) : " + (t2 < t3)); // true
		
		// 관계연산자 와 논리연산자 의 혼합
		// && and 조건평가
		b1 = (t1 > t2) && (t2 < t3);	// false + true = false
		System.out.println(b1);
		
		// || or 조건평가
		b2 = (t1 > t2) || (t2 < t3);	// false + true = true
		System.out.println(b2);
		
		// 변수앞에 ! 붙어 있으면 NOT (T -> F, F -> T)
		b3 = !b4;
		System.out.println(b3);	// b4 = true -> false
		
		// | or 모두평가
		b2 = (t1 > t2) | (t2 < t3);	//
		System.out.println(b2);
		
		// ^ T+T = F, F+F = F, T+F = T, F+T = T
		b3 = (t1 > t2) ^ (t2 < t3);	// false + true = true;
		System.out.println(b3);
	}
}

 

#상함연산자, 대입연산자

public class Op4 {

	public static void main(String[] args) {
		// 삼항연산자 : 조건식에 따라서 변수에 저장된 값을 선택해서 저장시키는 연산자
		System.out.println("대입, 삼항연산자");

		int a = 5;
		int b = 7, x = 10, y = -10;
		// 형식 : 자료형 변수명 = (조건식)?참인값:거짓인값;

		// x가 0보다 크거나 같을경우 x의 값을 넣음
		int absX = (x >= 0) ? x : -x; // 절대값 10 -> 10, -(-10) = 10
		int absY = (y >= 0) ? y : -y; // 거짓이므로 -(-10) = 10
		System.out.println(absX);
		System.out.println(absY);

		 /*- 
		 대입연산자 : 자기변수에 값을 계산을 한 후 자기변수에 대입(저장)
		 산술, 대입 : 배정연산자 = 실행속도가 향상됨
		 ex) int c = a + b, a = a + 1, a = a - 1, a = a * 1, a = a / 1
		 a = a+1 -> a+= 1 -> a++
		 a = a+2 -> a+= 2
		 a = a+3 -> a+= 3
		 a = a-1 -> a-= 1 -> a--
		 a = a-2 -> a-= 2
		 a = a*2 -> a*= 2
		 a = a/2 -> a/= 2
		 */
		
		// int a = 5;
		// int b = 7;
		a+= b; // a = a+b
		System.out.println("a : " + a); // a = 5+7 = 12
		
		a-= b;
		System.out.println("a : " + a); // a = 12-7 = 5
		
		a*= b;
		System.out.println("a : " + a); // a = 5*7 = 35
		
		a/= b;
		System.out.println("a : " + a); // a = 35/7 = 5
		
	}
}

 

#형변환

public class Op5Cast {

	public static void main(String[] args) {
		// 묵시적인 형변환
		System.out.println("자동 형변환");

		// 1. 적은 데이터값이 큰 데이터공간으로 들어갈때 : 자료형의 크기에 맞춰서 형변환 O
		// 단점 : 저장되는것은 문제가 없지만 메모리 낭비가 발생이 된다.
		byte s = 12; // 2진수 00001100 -> 8421 부호비트 = 0(양수) or 1(음수)
		short ss = 12; // 2진수 00000000 00001100
		int n = s; // 2진수 00000000 00000000 00000000 00001100

		// 2. 계산 중간에 자료형이 변환 될때 : 적은 데이터가 큰 데이터로 변환
		char c = 'A'; // 65
		int n2 = c + 1; // char(2byte) + int(4byte) = 소+대 -> 대+대(int + int) = int
		System.out.println("n2 : " + n2); // 65 + 1 = 66
		System.out.println("(char)n2 : " + (char) n2); // 66 = B

		// 명시적인 형변환(강제형변환)
		// 단점 : 데이터 손실이 일어남
		int su = (int) 3.5; // int는 정수여서 소수점인 0.5가 저장이 안됨
		System.out.println(su); // 3
		
		int x = 123;
		float y = x + 12.3f; // int + float : 적은 데이터 + 큰 데이터 -> float + float -> float -> 123.0f + 12.3f
		System.out.println(y);
		
		// 강제형변환 주의점
		System.out.println("강제형 변환 주의할 점");
		
		byte s2 = 12;
		short s3 = 45;
		int result = s2 + s3; 	// byte + short = short + short = short(X)
								// byte + short = int + int(O)
								// +, -, *, / 는 강제로 int형으로 바뀜
		System.out.println(result);
		
		// 주의 : 수식값을 형변환 할때에는 수식 전체를 () 로 묶어줘야 한다.
		short re2 = (short) (s2+s3);
		System.out.println(re2);
	}
}

 

#형변환(2)

public class Op6Cast2 {

	public static void main(String[] args) {
		// 형변환2 + printf() 메소드
		/*
		 * printf(출력양식... 출력할 대상자)
		 * 
		 * decimal(%d 정수값), char(%c 문자), String(%s 문자열), float(%f 소수점)
		 */
		int num1 = 20, num2 = 30;
		System.out.printf("첫번째 숫자 = %d", num1); // 첫번째 숫자 = 20
		System.out.println(); // 출력할 값이 없기 때문에 그냥 줄바꿈만 일어남
		System.out.print('\n'); // \n : 줄바꿈 특수기호
		System.out.printf("첫번째 숫자 = %d, 두번째 숫자 = %d", num1, num2);

		// 형변환
		char ch = 'A'; // 65 : char -> int
		System.out.println();

		/*-
		 * 오타(물리적인 에러), 논리적인 에러 
		 * byte, short, int, long 은 음수(-)를 포함 
		 * char(0~65535) -> int(4byte)로 자동형변환이 안됨 = 예외조항(printf)
		 */
		System.out.printf("문자 %c의 유니코드값 %d\n", ch, (int) ch);
		int ch2 = ch; // char -> int(65)
		System.out.println(ch2);

		/*-
		 * 총점 구하기 
		 * 변수를 쓰는 경우
		 * 1. 계산할때, 2. 입출력 프로그램 작성시, 3. 현재 프로그램의 상태를 저장할때
		 */
		int java = 90;
		int jsp = 85;
		int oracle = 90;
		int sum = java + jsp + oracle;
		// sum = 265입니다.
		System.out.printf("sum = %d 입니다.\n", sum);
		
		// 평균
		double avg = sum / 3; // 88.0
								// sum / 3 이 int이기 때문에 값이 88인 상태에서 double로 바꿔봤자 소수점은 0으로 나옴
		double avg2 = (double) sum / 3; // 처음부터 나누는 값을 double로 형변환 시켜서 계산하면 소수점 까지 출력이됨
		System.out.println("avg = " + avg + " 입니다.");
		System.out.println("avg2 = " + avg2 + " 입니다.");
		
		// 원하는 소수점 자리수 출력
		 /*
		  * 형식) %f -> %전체자리수.소수점자리수
		  * ex) %.2f = 소수점 둘째 자리 까지
		  * 전체 자리수는 써도 되고 안써도 되는데 쓴 경우 출력X, 값은 공백으로 채움
		  */
		System.out.printf("평균(avg) : %5.2f\n", avg2);
		System.out.println("abc\t123\b456"); // \t 탭키 만큼 거리둬서 출력
		System.out.println("\"Hello, World!\""); // \ : 문자열 앞 뒤에 "" 표시 
	}
}

 

#조건문

public class IFTest {

	public static void main(String[] args) {
		// 입출력 -> 사용자로부터 값을 입력 -> Scanner 객체를 이용
		// 짝수, 홀수 판별(수/2 == 0(2의 배수) /3 != 0(3의 배수)
		int su = 31;
		if (su % 2 == 0) { // 조건식(변수, 연산자(관계, 논리))
			System.out.println(su + " 은 짝수 입니다.");
		} else {
			System.out.println(su + " 은 홀수 입니다.");
		}

		System.out.println("삼항연산자로 변경");
		String su2 = (su % 2 == 0) ? "짝수 입니다." : "홀수 입니다.";
		System.out.println("입력받은 값 (su2) = " + su2);
		System.out.println("if 연습중"); // 순차문
	}
}

'국비학원 > 공부' 카테고리의 다른 글

16일차 java(4)  (1) 2023.05.15
15일차 java(3)  (1) 2023.05.11
13일차 java(1)  (0) 2023.05.09
13일차 oracle(6)  (1) 2023.05.09
12일차 oracle(5)  (1) 2023.05.08