20221018 :
자바의 연산자
*산술 연산자 + 더하기, - 빼기, * 곱하기, / 나누기, % 나머지
*증감 연산자 ++, -- 변수(i)의 값을 1씩 증가시키거나 1씩 감소시킴 : ++i / i++ , -- :--i / i--
*삼항 연산자(= 조건선택연산자)
age>=18?"성인":"미성년"
조건식 ? true : false
* boolean 비교연산자 : true, false
* 논리연산자 (boolean)
and && 교집합 ∩
or || 합집합 ∪
true 1 false 0
x || y 논리합
x && y 논리곱
*전위연산자 후위연산자
int i = 10;
i++; // 1증가
System.out.println(i); // 후위연산 보통 요렇게 쓰기로 하자.
// 연산에 따라 값이 변함.
//i--; // 1감소
//System.out.println(++i); // 전위연산
// System.out.println(i--);
System.out.println(--i);
*대입연산자 op ( i += 3 )복합대입연산자
int i = 10;
// i += 3;
i = i + 3;
// i -= 3;
i = i - 3;
20221019 :
print println : 문자열 포맷팅 만들때 범용적으로 씀니다.
printf : 쓰는 사용환경에서만 사용
System.out.println
: 내용을 출력한 후 자동으로 줄바꿈 처리를 한다
System.out.print
: 출력후 줄바꿈 처리를 하지 않는다. 만약 줄바꿈을 하고 싶다면
\n을 추가한다
System.out.printf
: 출력내용을 서식에 맞춰 출력할때 사용하며 자체적인 줄바꿈 기능은 없다.
줄바꿈 처리를 위해 \n 혹은 %n 두가지를 사용할 수 있다.
조건문 if( else if, else ), switch
광범위 범위 비교 예 점수, 나이대 등 같은 것에 사용
if , else if , else
if(age > 120) System.out.println("출생년도 입력 오류");
else if(age >= 18) System.out.println("성인입니다.");
else if(age >= 14) System.out.println("청소년입니다.");
else if(age >= 0) System.out.println("어린이입니다.");
else System.out.println("출생년도는 "+CURRENT_YEAR+"를 넘을 수 없습니다.");
swirch
switch(sel) {
case 1:
System.out.println("1번 기능 선택됨");
break;
case 2:
System.out.println("2번 기능 선택됨");
break;
case 3:
System.out.println("3번 기능 선택됨");
break;
case 4:
System.out.println("4번 기능 선택됨");
break;
default:
System.out.println("잘못된 번호 선택입니다.");
}
* Math.random
public class RandomEx {
public static void main(String[] args) {
System.out.println(Math.random()*10); // Math.random() 0 ~ 1 난수 발생 //0~10까지 하고 싶으면 *10
System.out.println(Math.random()*10+1); // 1~10까지 하고 싶으면 *10+1
System.out.println((int)(Math.random()*10)); // 0~10까지 int 강제 형변환
System.out.println(Math.round(Math.random()*10)); //반올림
System.out.println(Math.ceil(Math.random()*10)); // 올림 Math.ceil double로 나옴
System.out.println(Math.floor(Math.random()*10)); // 자름 Math.floor double로 나옴
}
}
반복문 while, for
* for 과 while 무엇이 다른가요?
제약조건이 어디서 걸리는가, 변수의 위치
증감연사자위치!
보통 for문이 더 좋지만, 무한루프문의 경우는 while!
public class LoopEx {
public static void main(String[] args) {
for(int i = 0; i<100; i++){
System.out.println("반복합니다."+i); //0~99까지 100개나옴
}
// i = 10; i는 for문 안에 생성되어있기때문에 밖에서 사용못함 (변수의지역성)
int j = 0;
int value = 10; //<< 3.은 변수 중복으로 오류가 뜸. main안에 while사용포함이 되어버림
while(j < 10){
int value = 10; //<< 1. while문 지역 안에 value라서 사용가능
System.out.println("while 반복 "+j+"번째");
j++; // j++;을 빼먹을수 있음! 주의 필요!
}
// j = 10; j는 main문 안에서 사용되어 있기 때문에 바깥쪽에서 사용가능
int value = 10; // <<2. main문 전체 안에서 value라서 사용가능 (1. 2.번 서로 다른것으로 됨.)
}
}
for 문과 while문으로 구구단
// 구구단 7단 만들기
for(int i=1; i<10; i++){
System.out.println("7 x"+i+"="+(7*i));
}
int i = 1;
while(i < 10){
System.out.println("7 x"+i+"="+(7*i));
i++;
}
이중 반복문(중첩반복문), for문안에 for문으로 구구단
public class NestedLoop {
public static void main(String[] args) {
// for(int i=0; i<4; i++){
// for(int j=0; j<3; j++){
// System.out.println("i : "+i+" / j : "+j);
// }
// }
//변수의 이름으로 명칭을 특정을 많이 해요 ex i 루프 등.
//2차원 반복문 2차원적인 표를 조회할때 요런너낌으로 사용
for(int i=0; i<5; i++){ //i루프
for(int j=0; j<5; j++){ //j루프
System.out.print(" * ");
}
System.out.println();
}
}
}
스캐너를 이용한 for문으로 구구단
import java.util.Scanner;
public class NestedLoop {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("시작 단을 입력하세요 : ");
int begin = s.nextInt();
System.out.print("끝 단을 입력하세요 : ");
int end = s.nextInt();
//구구단
if (begin > end) {
System.out.println("시작 단은 끝 단 보다 클 수 없습니다.");
return; //메서드(함수)실행 종료
// 이 return은 main메서드의 실행을 종료시키므로, 프로그램이 종료
}
for(int i=begin; i<=end; i++){
System.out.println("=== "+i+" 단 ===");
for(int j=1; j<=9; j++){
System.out.println(i+" x "+j+" = "+i*j);
}
}
// //중첩반복문
// for(int i=0; i<3; i++){
// for(int j=0; j<2; j++){
// System.out.println("i : "+i+" / j : "+j);
// }
// }
}
}
* for while do-while ( for a while ~하는 동안)
* do-while 은 주로 특수목적으로 쓰입니다.
break : 조건이 수행되면 종료되게 함
public class LoopEx2 {
public static void main(String[] args) {
for(int i=0; i<10; i++){
System.out.println(i+"반복합니다.");
if(i == 5)
break;
}
int i = 0;
int sum = 0;
while(true){ //while(true) 무한 반복
sum = sum + i;
if(sum >= 1000) // while문 안에 조건을 넣음,
break; // 조건이 수행되면 종료.
i++;
}
System.out.println("반복 횟수 : "+i+" / 총 합 :"+sum);
}//main
}
반복문과 제어문!
public class LoopEx01 {
public static void main(String[] args) {
// 3번 Hello Wolrd를 화면에 표시하는 반복
for (int i=0; i<3; i++){
System.out.println("Hello World");
}
// for(int i=1; i<=9; i++){
// System.out.println("5 X "+i+" = "+5*i);
// }
for(int i=0; i<9; i++){ // 될수 있는 한 조건식은 건드리지 않고
System.out.println("5 X "+(i+1)+" = "+5*(i+1)); //명령문에서 바꿔준다. 조건식이 덜 헷갈릴수있다.
}
// int i = 0;
// while(i<3){
// System.out.println("Hello World");
// i++;
// }
// break 제어문
String str = "Hello World! Java";
for(int i=0; i<str.length(); i++){
if(str.charAt(i) == 'a'){
System.out.println("'a' detected!");
break;
}
System.out.println(i +" : "+ str.charAt(i));
}
// continue 제어문
// 1~100 사이 숫자 중 짝수만 출력하는 예시
for(int i=1; i<=100; i++){
if(i % 2 == 1){
continue;
}
System.out.printf("%5d ",i); // 문자 포맷팅 %5d (공간5개문자출력)-> 00002
if(i % 10 == 0){
System.out.println();
}
}
int i = 1;
while(i<=10){
if(i%2 == 0){
i++; //i++;가 없으면 이안에서 무한루프에 걸릴 수 있음! 주의 !
continue;
}
System.out.println(i);
i++;
}
// 의도적인 무한반복
// while(true), for(;;)
Scanner s = new Scanner(System.in);
int sum = 0, cnt = 0;
while(true){
System.out.print("입력 (0 to quit) : ");
int input = s.nextInt();
if(input == 0){
break;
}
sum = sum + input;
cnt++;
}
System.out.println("합계 : "+sum+" / 평균 : "+sum/(double)cnt);
s.close();
// Scanner s = new Scanner(System.in);
int sum = 0, cnt = 0, input = 0;
do{
System.out.print("입력 (0 to quit) : ");
input = s.nextInt();
sum = sum + input;
cnt++;
}while(input != 0); // 0 != 0 false , 20 !=0 true
System.out.println("합계 : "+sum+" / 평균 : "+sum/(double)cnt);
s.close();
// do whlie을 쓰지 않고 while 문으로 할경우
Scanner s = new Scanner(System.in);
int sum = 0, cnt = 0, input = -1; // 초기화 input = -1로 설정
while(input != 0){ // 3. 그다음 반복시 비교하고, false가 됨
System.out.print("입력 (0 to quit) : ");
input = s.nextInt();
sum = sum + input; // 1. 0입력시 0누적!
cnt++;// 2. 횟수 추가됨
}
cnt--; // 4. 이쪽에서 0에 대한 횟수는 1개 빼줘야함.
// 감소값도 넣어야 함으로 굳이 do while이 아니라 while을 쓸필요가
System.out.println("합계 : "+sum+" / 평균 : "+sum/(double)cnt);
s.close();
}
}
무한반복? 그게뭐죠?
while(sum < 1000){ // sum이 1000이 될때까지}
while(true) { // 무한 반복 : false가 나오지 않으므로}
for( ; ; ){ //무한 반복}
VSCode 디버깅 해보기 : 어디서 문제가 생겼나요?
debug F5 빨간점 누르고 for문 옆에 F10 < 하나씩 진행되는거 확인
shift + F5 빠져나오는거
ctrl+c or Ctrl+z 강제종료
빠져나올수 없는 상태 무한루프/데드락/무한대기상태
'JAVA SPRING > java' 카테고리의 다른 글
JAVA_005) 객체지향개념_2 개념적인 메소드 설계&실행 (0) | 2023.03.16 |
---|---|
JAVA_004) 객체지향개념 (0) | 2023.03.16 |
JAVA_003) 배열 (0) | 2023.01.26 |
JAVA_001) 기본 용어 설명(변수, 상수, 명명규칙, 파라미터, 함수, 메서드) (1) | 2022.12.15 |
JAVA 설치 + 추가확장설치 & VScode단축키 (0) | 2022.12.15 |