#논리형
//논리형(=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 |