Full-Stack 개발자가 되려는 작은 개발자의 블로그
Java 기초 실습2 본문
Java의 명명 규칙
대소문자가 구분되며, 길이의 제한이 없다 | ▶ int Grade와 int grade는 서로 다른 변수이다. |
예약어는 사용 할 수 없다. | ▶ true는 예약어라 변수로 사용 불가! 단 True는 사용 가능 |
숫자로 시작 할 수 없다. | ▶ int num1은 가능 하지만 int 1num은 사용 불가 |
특수문자는 '_'와 '$'만 사용 가능 | ▶ first_num, $num |
※ 권장사항
1. 클래스는 대문자로, 변수 및 메소드는 소문자로 시작한다.
2. 문자 두 개를 연결 할 때는 두 번째 문자를 대문자로 시작한다.
3. 상수는 대문자 두 개를 연결 시 '_'사용
변수, 상수, 리터럴
변수(Variable) | 변하는 값 |
int num1=10; num1=20; |
상수(Constant) | 변하지 않는 값 |
final int MAX=100; MAX=200; (X) |
리터럴(literal) | 그 자체의 값 | int num1=10; String str="안녕하세요" |
자료형변환
자동(암시적/묵시적)형변환 | 작은 메모리 데이터를 큰 메모리에 저장 |
명시적형변환 | 큰 메모리에서 작은 메모리로 값을 저장 할 때(데이터 손실을 감수) |
int n1=5;
int n2=2;
//나눗셈 : /
System.out.println((float)n1/(float)n2); //정수는 소수점이 없어 소수점을 버린다.
float f1=3.14f;
//int nf=f1; 이 경우는 자동 형변환이 이루어지지 않는다.
int nf=(int)f1;
//정수 < 실수 < 문자열
//숫자의 문자열 변환
String str4="";
int ntoa=10;
str4=""+ntoa; //문자열 + 정수 ->정수가 문자열로 자동형변환된다.
System.out.println(str4);
/*
* 문제1.다음 중 캐스트연산자((자료형)다른자료형)의 생략이 가능한 문장은
* int num1=10;
* 1)byte로 변환
* -byte b=(byte)num1;
* 2)double로 변환
* -double d=num1;
* 3)short로 변환
* -short s=(short)num1;
* 4)long으로 변환
* -long l=num1;
*/
byte b=(byte)num1 //명시적
double d=num1;
short s=(short)num1; //명시적
long l=num1;
오버플로우/언더플로우
//오버플로우
byte ob=127; //최대 크기 127
ob++; //메모리 크기보다 값이 커짐 -> -128로 순환
System.out.println(ob);
//언더플로우
byte ub=-128;
ub--;
System.out.println(ub);
printf() 출력 메소드 활용
▶ 정수 출력의 경우
//금액 출력
System.out.printf("당첨 %,d원\n",10000000);
//공백 대체(0으로 출력)
System.out.printf("%010d\n",123);
System.out.printf("%10d\n",123);//...???
//10진수 -> 16진수
System.out.printf("10진수 : %d -> 16진수 : %x\n",123,123);
//10진수 -> 8진수
System.out.printf("10진수 : %d -> 8진수 : %o\n",123,123);
▶ 실수 출력의 경우
System.out.printf("%f\n",3.14); //3.140000
System.out.printf("%05.2f\n",3.14); //03.14
System.out.printf("%05.2f\n",1003.1467); //1003.14 공백이 없다면 굳이 0으로 채울 필요가 없다
연산자(Operator)
1. 산술 연산자
+ | 피연산자들끼리 더한다. |
- | 피연산자들끼리 뺀다. |
* | 피연산자들끼리 곱한다. |
/ | 피연산자들끼리 나눈다. |
% | 피연산자들끼리 나눈 후 나머지 값을 구한다. ▶ 정수인 경우만 해당, 암호화/복호화에 자주 사용된다. |
Scanner scan=new Scanner(System.in);
int number1=0; //피연산자1
int number2=0; //피연산자2
int result=0; //연산결과를 담을 변수
System.out.println("간단한 계산기 프로그램");
System.out.println("================================================");
System.out.print("계산할 첫 번째 숫자를 입력하세요 : ");
number1=scan.nextInt();
System.out.print("계산할 두 번째 숫자를 입력하세요 : ");
number2=scan.nextInt();
System.out.println("=============== 계산 중 ===============");
result=number1+number2;
System.out.printf("%d + %d = %d\n",number1,number2,result);
result=number1-number2;
System.out.printf("%d - %d = %d\n",number1,number2,result);
result=number1*number2;
System.out.printf("%d * %d = %d\n",number1,number2,result);
result=number1/number2;
System.out.printf("%d / %d = %d\n",number1,number2,result);
result=number1%number2;
System.out.printf("%d %% %d = %d\n",number1,number2,result);
2. 증감 연산자
전위 | 후위 | |
++ | 값을 증가 시킨 후 대입한다. | 대입 후 값을 증가 시킨다. |
-- | 값을 감소 시킨 후 대입한다. | 대입 후 값을 감소 시킨다. |
//후위연산
int i=0;
i++;
System.out.println("i = "+i); //1
i+=1; //단축연산자 i=i+1과 같은 의미
System.out.println("i = "+i); //2
System.out.println("i = "+ i++); //2 를 출력 후 i의 값은 3으로 증가
System.out.println("i = "+i); //3
System.out.println("=========================");
//전위연산
i=0;
++i;
System.out.println("i = "+i); //1
System.out.println("i = "+ ++i); //2 i의 증가가 먼저 이루어진 후 출력
System.out.println("=========================");
//전위,후위 비교
int j=0;
int k=0;
int l=0;
k=j++; //후위 연산을 대입이 먼저 이루어진후 연산이 된다.
System.out.println("j = "+j);
System.out.println("k = "+k);
j=0;
l=++j; //전위 연산 후 대입된다.
System.out.println("l = "+l);
3. 비교 연산자
== | 피연산자들끼리 값이 같은지 비교 |
!= | 피연산자들끼리 값이 다른지 비교 |
< | 피연산자1이 피연산자2보다 작은지 비교 |
> | 피연산자1이 피연산자2보다 큰지 비교 |
<= | 피연산자1이 피연산자2보다 작거나 같은지 비교 |
>= | 피연산자1이 피연산자2보다 큰거나 같은지 비교 |
int n1=4;
int n2=5;
System.out.println("n1 == n2 ->"+ (n1==n2));
System.out.println("n1 != n2 ->"+ (n1!=n2));
System.out.println("n1 > n2 ->"+ (n1>n2));
System.out.println("n1 < n2 ->"+ (n1<n2));
System.out.println("n1 >= n2 ->"+ (n1>=n2));
System.out.println("n1 <= n2 ->"+ (n1<=n2));
//윤년 계산
//윤년의 조건
//1.년도가 4년으로 나누어 떨어지면서 100년으로 나누어 떨어지지 않는다.
//2.년도가 400년으로 나누어 떨어진다.
int dal=2020;
System.out.println((dal%4==0 && dal%100!=0)||dal%400==0);
4.논리 연산자
AND(논리곱) | 모두 참일 떄만 참 | |
OR(논리합) | 모두 거짓일 때 만 거짓 | |
NOT | 값의 반대 | |
XOR | 값이 서로 다를 때만 참 |
※ AND 연산을 수행 할 때 첫 번째 조건에서 거짓이 나온다면 뒤에 조건을 수행하지 않음
※ OR 연산을 수행 할 때 첫 번째 조건이 참이면 뒤에 조건을 수행하지 않음
System.out.print("숫자를 입력해주세요 :");
int number=scan.nextInt();
boolean flag=false;
flag=(number>0)&&(number<5); //AND연산
//flag=(number>0)&&(number++<5); 사용하지 말 것
System.out.println("("+number+">0)&&("+number+"<5) = "+flag);
//입력한 값이 숫자인지 문자인지 판별하는 프로그램
char ch='\0';
//문자열 입력받기
System.out.print("비교할 문자를 입력하세요 : ");
String str=scan.next();
//문자열 -> 문자 변환
//문자열의 0번째 자리의 값을 가져온다.
ch=str.charAt(0);
boolean flag=((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z'));
System.out.println(ch+"는 "+flag);
5.조건 연산자
삼항연산자 : (조건식)?결과문1:결과문2; ▶ 조건식이 참이면 결과문1, 거짓이면 결과문2
//절대값 구하기(-10 -> 10)
int x=0; //입력 값을 담을 변수
int absX=0; //입력 값의 절대값을 담을 변수
System.out.println("절대값으로 변환할 값을 입력 : ");
x=scan.nextInt();
absX=(x>0)?x:-x;
System.out.println(x+" -> "+absX);*/
System.out.print("점수를 입력하세요 : ");
int score=scan.nextInt();
String str=(score>=60)?"합격":"불합격";
System.out.println(str);
System.out.print("점수를 입력하세요 : ");
int score =scan.nextInt();
String str=score>=90?"A":((score>=80)?"B":((score>=70)?"C":((score>=60)?"D":"F")));
System.out.println("당신의 학점은 "+str+"입니다^^");
System.out.print("윤년을 확인할 년도를 입력하세요 : ");
int year=scan.nextInt();
String str=((year%4==0 && year%100!=0) || year%400==0)?"윤년입니다." : "평년입니다.";
System.out.println(year+"년도는 "+str);
'강의 정리 > Java' 카테고리의 다른 글
Java 기초 실습5 (0) | 2020.03.09 |
---|---|
Java를 이용한 달력 프로그램 (0) | 2020.03.08 |
Java 기초 실습4 (0) | 2020.03.05 |
Java 기초 실습3 (1) | 2020.03.04 |
Java 기초 실습1 (2) | 2020.03.02 |
Comments