일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- update
- 카이제곱분포
- SQL코테
- 설명의무
- 논문리뷰
- MySQL
- 코딩테스트
- 자연어 논문 리뷰
- SQL 날짜 데이터
- NLP
- Window Function
- 표준편차
- HackerRank
- Statistics
- sigmoid
- 자연어처리
- t분포
- torch
- nlp논문
- LSTM
- airflow
- sql
- inner join
- CASE
- 서브쿼리
- 그룹바이
- 자연어 논문
- leetcode
- 짝수
- GRU
- Today
- Total
HAZEL
[ CH01. 기초자바 ] 연산자, 부호 연산자, 산술연산자, if 문, while 문, do - while 문, for문 본문
[ CH01. 기초자바 ] 연산자, 부호 연산자, 산술연산자, if 문, while 문, do - while 문, for문
Rmsid01 2021. 3. 27. 19:57CH01. 기초 자바
: 패스트 캠퍼스 강의를 공부하고 정리한 내용입니다.
01. 자바 연산자
1. 항과 연산자
- 항 ( operand ) : 연산에 사용하는 값
- 연산자 ( operator ) : 항을 이용하여 연산하는 기호
2. 대입 연산자 ( assignment operator )
- 변수에 다른 변수나 값을 대입하는 연산자
- 이항 연산자 중 우선 순위가 가장 낮은 연산자들
3. 부호 연산자
: 단항 연산자, 변수의 부호를 유지하거나 바꿈 , 실제 변수의 부호가 변하려면 대입 연산자를 사용해야함
4. 산술 연산자
- 사칙 연산자 : +, - , *, / ( 나누어 몫을 구함 ) , % ( 나누어 나머지를 구함 )
5. 복합 대입 연산자
: += , -= , *=, /=, %=
- 비트 연산자
a. <<= : 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입
b. >>= : 비트를 오른쪽으로 이동하고 그 값을 왼쪽항에 대입
c. >>>= : 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입
d. &= : 두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입
e. |= : 두 항의 | 비트 연산 후 , 그 값을 왼쪽 항에 대입
f. ^= : 두 항의 ^ 비트 연산 후, 그 값을 왼쪽 항에 대입
6. 증가, 감소 연산자
: 단항 연산자,
: ++, --
7. 관계 연산자
: 이항 연산자
: 연산의 결과가 참, 거짓으로 반환되며 비교 연산자라고도 함.
package ch12;
public class RealtionalTest {
public static void main(String[] args) {
int num1 = 5;
int num2 = 3;
boolean value = (num1 > num2);
System.out.println(value);
System.out.println(num1 < num2);
System.out.println(num1 >= num2);
System.out.println(num1 <= num2);
System.out.println(num1 == num2);
System.out.println(num1 != num2);
}
}
8. 논리 연산자
: 관계 연산자와 같이 많이 사용되며, 결과가 참 / 거짓으로 반환 됨
a. && ( 논리곱 ) : 두 항이 모두 참인 경우에만 결과값이 참 - 그렇지 않은 경우는 거짓
b. || ( 논리합 ) : 두 항 중 하나의 항만 참이면 결과 값은 참 - 두항이 모두 거짓이면 결과 값은 거짓
c. ! ( 부정 ) : 단항 연산자. 참인 경우는 거짓으로 바꾸고, 거짓인경우는 참으로 바꿈
package ch12;
public class LogicalTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag);
flag = (num1 < 0 ) && (num2 > 0);
System.out.println(flag);
flag = (num1 > 0) || (num2 >0);
System.out.println(flag);
flag = (num1 < 0 ) || (num2 > 0 );
System.out.println(flag);
flag = !(num1 > 0);
System.out.println(flag);
}
}
* 단락 회로 평가 ( short circuit evaluation ) : 논리 연산에서 모든 항이 실행되지 않는 경우
- 논리 곱 (&&) 은 두 항의 결과가 모두 true 일 때, 결과가 true -> 앞의 항의 결과가 false 이면, 뒤의 항을 평가하지 않음
- 논리 합 ( || ) 은 두 항의 결과가 모두 false 일 때만 결과가 false -> 앞의 항의 결과가 true 이면, 뒤의 항의 결과를 평가하지 않음
package ch12;
public class ShortCircuit {
public static void main(String[] args) {
int num1 = 10 ;
int i = 2;
boolean value = ((num1 = num1 + 10) < 10 ) && ( ( i = i + 2 ) < 10);
System.out.println(value); // false
System.out.println(num1); //20
System.out.println(i); //2
value = ((num1 = num1 + 10 ) < 10) || ( ( i = i +2 ) < 10 );
System.out.println(value); //true
System.out.println(num1); //30
System.out.println(i); // 4
}
}
9. 조건 연산자
: 삼항 연산자, 조건식의 결과가 참/ 거짓인 경우에 따라 다른 결과가 수행됨
: if (조건문) 을 간단히 표현할 때 사용할 수 있음
: 사용 방법 -> 조건식 ? 결과1 : 결과 2 ;
- 조건식이 참이면 결과1을 반환하고, 거짓이면 결과2를 반환하게 된다.
10. 비트 연산자
: 대입연산자와 다른 연산자가 함께 사용됨.
: 마스크 - 특정 비트를 가리고 몇 개의 비트 값만 사용할때
: 비트 켜기 - 특정 비트들만을 1로 설정해서 사용하고 싶을 때
: 비트 끄기 - 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
: 비트 토글 - 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
* 비트 연산자의 종류
a. ~ : 비트의 반전 ( 1의 보수 )
b. & : 비트 단위 AND
c. | : 비트단위 OR
d. ^ : 비트 단위 XOR , 두개의 비트가 서로 다른경우에 1을 반환
e. << : 왼쪽 shift
f. >> : 오른쪽 shift
g. >>> : 오른쪽 shift
02. 조건문 - if 문 ( 만약에 ... 라면 )
1. 조건문 개념
package ch14;
import java.util.Scanner;
public class IfElseTest {
public static void main(String[] args) {
int age = 7;
// Scanner scanner = new Scanner(System.in);
// int age = scanner.nextInt();
if (age >= 8) {
System.out.println("학교에 다닙니다.");
}
else {
System.out.println("학교에 다니지 않습니다.");
}
}
}
2. 조건이 여러 개 일때의 if문
: 하나의 상황에 대한 조건이 여러개로 나뉘고 각 조건에 다른 수행이 이루어져야 할 경우 사용
: 파이썬의 elif 는 자의 else if 인가 보다.
1) IF - ELSE 문
package ch15;
public class IfElseIfElseTest {
public static void main(String[] args) {
int age = 12;
int charge ;
if (age < 8) {
charge = 1000;
System.out.println("미 취학 아동입니다.");
}
else if(age < 14){
charge = 2000;
System.out.println("초등학생입니다.");
}
else if(age < 20){
charge = 2500;
System.out.println("중, 고등학생입니다.");
}
else{
charge = 3000;
System.out.println("일반인입니다.");
}
System.out.println("입장료는 " + charge + "원입니다.");
}
}
// 초등학생입니다.
// 입장료는 2000원입니다.
2) IF - IF 문
: if else 문의 경우, 해당 조건을 만족하면 아래로 내려가지 않음에 비해, if if 문은 조건이 일치하더라고 아래로 내려간다.
package ch15;
public class IfIfTest {
public static void main(String[] args) {
int age = 12;
int charge ;
if (age < 8) {
charge = 1000;
System.out.println("미 취학 아동입니다.");
}
if(age < 14){
charge = 2000;
System.out.println("초등학생입니다.");
}
if(age < 20){
charge = 2500;
System.out.println("중, 고등학생입니다.");
}
else{
charge = 3000;
System.out.println("일반인입니다.");
}
System.out.println("입장료는 " + charge + "원입니다.");
}
}
// 초등학생입니다.
// 중, 고등학생입니다.
// 입장료는 2500원입니다.
3. switch - case 문
: if - else , if - else 문을 사용할 때, 복잡한 부분을 가독성 좋게 구현하기 위해서 사용.
: 비교조건이 특정 값이나 문자열인 경우 사용
: 멈출때는 break 문을 사용하는데, 자바 14부터는 사용하지 않는다고 함.
// 한달이 며칠인지 알려주는 프로그램
package ch16;
public class SwitchCaseTest {
public static void main(String[] args) {
int month = 10 ;
int day;
switch(month) {
case 1 : case 3 : case 5: case 7 : case 8: case 10 : case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 20;
break;
case 2:
day =28;
break;
default:
day = 0;
System.out.println("존재하지 않는 달 입니다.");
}
System.out.println(month + "월은 " + day + "일입니다.");
}
}
03. 반복문
1. while 문 - 조건이 참인 동안에 반복 수행
: 무한 반복하고 싶을 땐, while(true) 로 쓰면 된다.
package ch17;
public class WhileTest {
public static void main(String[] args) {
int num = 1 ;
int sum = 0;
while ( num <= 10 ){
sum += num;
num++;
}
System.out.println(sum);
System.out.println(num);
}
}
2. Do-While 문
: while문은 조건을 먼저 체크하고 반복 수행한다면, do - while 은 조건과 상관 없이 수행을 한번 하고나서 조건을 체크
: 조건과 맞지않으면 수행을 하지 않음.
package ch18;
import java.util.Scanner;
public class DowhileTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input;
int sum = 0 ;
do {
input = scanner.nextInt();
sum += input;
}while(input != 0);
System.out.println(sum);
}
}
3. for 문
for ( 초기화식 ; 조건식 ; 증감식 )
{
수행문 ;
...
}
package ch19;
public class ForTest {
public static void main(String[] args) {
int count = 1;
int sum = 0;
for (int i = 0; i < 10; i++, count++) { // 10 번을 반복한다는 의미
// for ( int i = 0 , count = 1 ; i < 10 , i++ , count++ ) 도 가능하다
sum += count;
//count++
}
System.out.println(sum);
int num = 1;
int total = 0;
while (num <= 10) {
total += num;
num++;
}
System.out.println(total);
}
}
* if 문의 문장은 생략이 가능하다 !
a. 초기화식 생략 : 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우
for ( ; 조건식 ; 증감식 )
{
수행문 ;
...
}
b. 조건식 생략 : 반복 수행에 대한 조건이 수행문 내부에 있는 경우
for ( 초기화식 ; ; 증감식 )
{
sum += i ;
if (sum > 200) break ;
c. 증감식 생략 : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우
for ( 초기화식 ; 조건식 ; )
{
...
i = ( ++ i ) % 10 ;
}
d. 무한 반복 - 다 생략됨
4. 중첩 반복문
: 이중 for문 혹은 이중 while문을 의미함
5. break문 , continue 문
1) break문
: 감싸고 있는 제어문을 빠져나오기 위한 기능
: 여러 반복문이 중첩되어있는 경우엔 break문이 포함되어있는 반복문만 빠져나옴
package ch21;
public class BreakTest {
public static void main(String[] args) {
int sum = 0;
int num;
for (num = 1 ; ; num++ ){
sum += num;
if ( sum >= 100 ) break;
}
System.out.println(sum);
System.out.println(num);
}
}
2) continue 문
: 반복문 내에서 조건문과 같이 사용하여, 조건이 맞는 경우 이후 반목문 블럭 내부의 다른 수행문들을 수행하지 않음
// 1 부터 100까지 숫자 중에 3의 배수를 출력하세요
package ch21;
public class ContinueTest {
public static void main(String[] args) {
int num ;
for (num = 1; num <= 100 ; num++){
if ( ( num % 3) != 0) continue;
// continue 를 사용하면 아래를 무시하고, 위로 올라가라는 의미이다.
System.out.println(num);
}
}
}