728x90

 

2.다항연산자

1)산술연산자 :

2)비교연산자 : >, <, =, >=, <=, ==, !=

3)논리연산자 : and(&&), or(\\) ||

4)복합대입연산자 : +=, -=, *=, /=, %=

5)삼항연산자 : 조건식 ? 식1 : 식2;

 

 

1)산술연산자

기호 : + - * / %

% : 모듈러라고 부름. 몫을 뺀 ‘나머지’ 연산

연산시, 곱하기 나누기 모듈러 먼저 계산사칙연산

	public void method1() {
        int num1 = 10;
        int num2 = 3;
        System.out.println("num1 + num2 = " + (num1 + num2));
        System.out.println("num1 - num2 = " + (num1 - num2));
        System.out.println("num1 * num2 = " + (num1 * num2)); // 나누기(/)는 나눗셈에 대한 몫 계산
        System.out.println("num1 / num2 = " + (num1 / num2));
    //	System.out.println("num1 / num2 = " + (num1 / num0)); error 0을 나눌 수 없으므로 에러
        System.out.println("num1 % num2 = " + (num1 % num2)); // %(모듈러)는 나눗셈에서 발생하는 나머지 계산	
    
    	double add = a + b;	// 45.0
        double sub = a - b;	// 25.0
        double mul = a * b;	// 350.0
        double div = a / b;	// 3.5	// 변수를 int로 바꾸면 3.0나옴
        double mod = a % b;	// 5.0
}

 

2)비교연산자

기호 : >, <, >=, <=, ==, !=

<=, >=에서 =가 뒤에와야함. 에러발생

 

짝수 & 홀수 만들기

2로 나누어서 0이면 짝수 2로 나누어서 1이면 홀수

 

짝수 판별 구분식

  1. b % 2 == 0
  2. b % 2 != 1

 

홀수 판별 구분식

1)b % 2 == 1

2)b % 2 != 0

3) !(b % 2 == 0)

int a = 10;
int b = 25;

boolean result1 = (a == b); // false
boolean result2 = (a <= b);	// true
boolean result3 = (a > b);	// false

System.out.println("b가 짝수인가? " + (b % 2 == 0));
System.out.println("b가 짝수인가? " + (b % 2 != 1));
System.out.println("b가 홀수인가? " + (b % 2 == 1));
System.out.println("b가 홀수인가? " + (b % 2 != 0));
System.out.println("b가 홀수인가? " + !(b % 2 == 0)); // ()안이 true/false 결과이기에 결과 역전 !으로 홀수판별

 

 

3)논리연산자

기호 : && ||

논리값 비교

비교 연산 후의 결과 값은 항상 논리값(boolean, true/false) 값임

조건문 연결하는 중요 역할

  • and연산자( && ) :~고, 이며, ~동시에ex) 이름이 박신이고 키가 160cm이며 성별은 여자고 신발사이즈 230mm인 사람을 찾아라
  • 모든 연산이 true여야 true값 반환
  • or 연산자 ( || ) : ~이거나, 또는
  • 논리 값 중 하나라도 true여야 true값 반환

 

Scanner sc = new Scanner(System.in);
System.out.print("정수 하나 입력 : ");
int num = sc.nextInt();

System.out.println(num + " 숫자가 1~100사이 숫자인가? "
                    + (num >= 1 && num <= 100));
                    
System.out.println("계속 하겠다고 하셨습니까? " + (yn == 'Y' || yn == 'y'));

 

4)복합대입연산자

기호 : +=, -=, *=, /=, %=

성능면에서 일반 대입연산자 사용한 것보다 유리

int a = 1; 

a = a + 3; // 1+3 = 4 // a += 3; 복합대입연산자
a = a - 3; // 4-3 = 1 // a -= 3;
a = a * 3; // 1*3 = 3 // a *= 3;
a = a / 3;            // a /= 3;
a = a % 3;            // a %= 3;

*증감 연산자(++,- -)는 1이 고정이지만 복합대입연산자는 제한x

		int a = 10;
		a = a + 4;
		a += 4;
		System.out.println(a);
		
		int b = 8;
		b = b - 3;
		b -= 3;
		System.out.println(b);
		
		int c =15;
		c = c * 2;
		c *= 2;
		System.out.println(c);
		
		int d = 42;
		d = d / 7;
		d /= 7;
		System.out.println(d);
		
		int e = 24;
		e = e % 4;
		e %= 4;
		System.out.println(e);

 

5)삼항연산자

// 조건식 ? 식1 : 식2;
ex) a > b ? a++ : b--;

조건식 결과값 : boolean true/false

결과값이 true라면 수행되는 식 : 식1

결과값이 false라면 수행되는 식 : 식2

삼항연산자 중첩

조건식1 ? 식1 : (조건식2 ? 식2 : 식3);

조건식1이 true면 조건식1이 수행됨

조건식1이 false면 조건식2가 수행되고 거기서 또 true/false\

int a = 3;
int b = 2;

a > b ? a++ : b--;
// a>b가 true면 a++ 수행 or 변수로 들어감
// a>b가 false면 b-- 수행 or 변수로 들어감

int result1 = a > b ? a++ : b--;
// a>b가 true라면, a++이 result1변수로 대입
int result1 = a++;

int a = 3;
int b = 2;
a < b ? a++ : (b == 0 ? a-- : b++);   // b++ 실행
// 조건식1 false -->조건식2 수행. b != 0이므로 false 실행. b++실행

 

728x90
반응형
728x90

 

 

연산자(operator)

1.단항연산자

2.다항연산자

1+1에서 1하나가 1항

 

1.단항연산자

1)논리부정연산자

2)증감연산자

 

1)논리 부정연산자 : !

not으로도 부름

논리를 프로그램에서는 true/false를 말하며, 부정의 의미는 뒤집어 놓는다

true면 false로 false면 true로 값을 뒤집는 단항연산자

!false = true

!true = false

 

2)증감연산자 : ++, - -

피연산자의 값을 1 증가/감소시키는 연산자(operator)

-고정된 값 1씩만 증가/감소된다

-앞에 붙으면 전위 증감연산자(=전치) : 자신의 연산(++뜻함) 먼저하고 다른 연산 진행

-뒤에 붙으면 후위 증감연산자(=후치) : 다른 연산 먼저하고 자신의 연산(++뜻함) 진행

ex)

int a =3;
int b = 3;
int c = ++a; // 전위 : a는3. ++의 계산 먼저니, 1+3=4하고 c로 넘어가는 대입연산자가 나중에 연산됨
int d = b++; // 후위 : b는3. ++의 계산이 후니, 3인 b가 대입연산자 연산 먼저해서 d에 3이 들어가고 b는+1되서 4. 후에 출력해보면 b는 4나온다 

 

전위

a는3. ++의 계산 먼저니, 1+3=4하고 c로 넘어가는 대입연산자가 나중에 연산됨

후위

b는3. ++의 계산이 후이니, 3인 b가 대입연산자 연산 먼저해서 d에 3이 들어가고 b는+1되서 4. 후에 출력해보면 b는 4나온다

*후치의 경우 계산 적용이 나중이기 때문에 출력이나 값에 반영되는게 느리므로 주의

 

 

*후치 다른연산 먼저라는게 범위가 어디까지?

코드 한줄 기준 가장 마지막

 

 

문제 연습

package com.kh.operator;

// 증감 연산자
// 1.단항 연산자
// 2.다항 연산자
public class B_InDecrease {

		// 1.단항연산자
	public void method1() {
		// 1)전위 증감 연산자
		int num1 = 10;
		System.out.println("전위 증감 연산자 적용 전 : " + num1);		  // 10	
		System.out.println("++num1을 1회 수행 후 결과 : " + ++num1); 	// 11
		System.out.println("++num1을 2회 수행 후 결과 : " + ++num1);	  // 12
		System.out.println("++num1을 3회 수행 후 결과 : " + ++num1);  	// 13
		System.out.println("++num1을 4회 수행 후 결과 : " + ++num1);	  // 14
		System.out.println("++num1을 5회 수행 후 결과 : " + ++num1);  	// 15
		System.out.println("++num1을 5회 수행 후 결과 : " + (++num1)); // ++을 ()로 묶어도 괜찮
		System.out.println("후위 증감 연산자 적용 후 : " + (++num1));	    // 15  
	
		// 2)후위 증감 연산자	
		int num2 = 10; 
		System.out.println("후위 증감 연산자 적용 전 : " + num2);			// 10
		System.out.println("num2++을 1회 수행 후 결과 : " + num2++);	 // 10 출력은 10이나 실제값은 11
		System.out.println("num2++을 2회 수행 후 결과 : " + num2++);	 // 11
		System.out.println("num2++을 3회 수행 후 결과 : " + num2++);	 // 12
		System.out.println("num2++을 4회 수행 후 결과 : " + num2++);	 // 13
		System.out.println("num2++을 5회 수행 후 결과 : " + num2++);	 // 14
		System.out.println("num2++을 5회 수행 후 결과 : " + (num2++)); // ++을 ()로 묶어도 no prob
		System.out.println("후위 증감 연산자 적용 후 : " + num2++);	    // 15  
	}
	
	public void method2() {
		int num1 = 20;
		int result1 = num1++ * 3;					// 후치
		System.out.println("result1 : " + result1);	// 20*3=60 : 대입연산자로 대입되고 변수값 출력되고 후에 +1되기에 출력에 +1 미반영
		System.out.println("num1 : " + num1);		    // 21 : 위 계산 후 +1된 상태가 반영되서 출력값21
		
		int num2 = 20;
		int result2 = ++num2 * 3;					// 전치
		System.out.println("result2 : " + result2);	// 20+1=21*3=63
		System.out.println("num2 : " + num2);		    // 21 : 20+1된게 반영되서 21
		 
	}
	public void method3() {
		int a = 10;
		int b = 20;
		int c = 30;
		
		System.out.println(a++);// 10
		// a=11 b=20 c=30
		System.out.println((++a) + (b++));	// 32
		// 					         12 		20
		// a=12 b=21 c=30
		System.out.println((a++) + (--b) + (--c));// 61
		//					        12		  20   		29
		// a=13	b=20 c=29
		
		System.out.println(a);	// 13
		System.out.println(b);	// 20
		System.out.println(c);	// 2
	}
}
728x90
반응형
728x90

데이터 형변환

 

1.형변환

문자열과 숫자의 +연산

문자열과 숫자가 연산하면 str화된다

<button onclick="testPlus();">문자열과 숫자의 +연산</button>
<script>
  function testPlus(){
    var test1 = 7 + 7;          // 14
    var test2 = 7 + '7';        // 77
    var test3 = '7' + 7;        // 77
    var test4 = '7' + '7';      // 77
    var test5 = 7 + 7 + '7';    // 147
    var test6 = 7 + '7' + 7;    // 777
    var test7 = '7' + 7 + 7;    // 777

    console.log(test1);
    console.log(test2);
    console.log(test3);
    console.log(test4);
    console.log(test5);
    console.log(test6);
    console.log(test7);
    // 자바와 문자열+string의 로직 동일
		// 콘솔창 결과에서 글씨색이
    // 숫자나 불린값의 살짝 푸른빛
    // str은 검은색

		// 강제 형변환 : Number(), parseInt(), parseFloat()...
    console.log(test2 + 1);                 // 771
    console.log(Number(test2) + 1);        // 78 // 문자이기에 형변환 필요
    console.log(parseInt(test2) + 2);       // 79
    console.log(parseFloat(test2) + 3);     // 80
  }
</script>

2.강제 형변환

강제 형변환 : Number(), parseInt(), parseFloat()...

// 강제 형변환 : Number(), parseInt(), parseFloat()...
    console.log(test2 + 1);
    console.log(Number (test2) + 1);        // 78 // 문자기에 형변환 필요
    console.log(parseInt(test2) + 2);       // 79
    console.log(parseFloat(test2) + 3);     // 80

 

C.연산자

다른 연산자들은 자바와 비슷한게 많음

자바와는 다른 연산자

 

===와 !==

=== : 값과 자료형 둘 다 일치하는지 비교 !== : 값과 자료형 둘 다 일치하지 않는지 확인할 때 사용

<button onclick="opTest();">확인하기</button>
<script>
    function opTest(){
        var check1 = 1;
        var check2 = '1';

        console.log('check1 == 1 :' + (check1 == 1));       // check1 == 1 :true
        console.log('check1 == "1" :'  + (check1 == '1'));  // check1 == "1" :true
        console.log('check2 == 1 : ' + (check2 == 1));      // check2 == 1 :true
        console.log('check2 == "1" : ' + (check2 == '1'));  // check2 == "1" :true
        // 값을 비교할 때, 위처럼 숫자로 변환 가능한 문자를 숫자랑 비교하면 true로 인지해줌
        // 어느정도 허용적인거지 나중에 철저히 해야 에러발생x // 애매해서 안하는걸 추천
        // JS에서는 비교를 순수 값으로 함. 주소값으로 비교하지 않음
}        
</script>

==과 === 차이

== 연산자를 이용하여 서로 다른 유형의 두 변수의 [값] 비교

==='는 엄격한 비교를 하는 것으로 알려져 있다 ([값 & 자료형] -> true)

// == 비교
console.log('check1 == 1 :' + (check1 == 1));       // check1 == 1 :true
console.log('check1 == "1" :'  + (check1 == '1'));  // check1 == "1" :true
console.log('check2 == 1 : ' + (check2 == 1));      // check2 == 1 :true
console.log('check2 == "1" : ' + (check2 == '1'));  // check2 == "1" :true
// 값을 비교할 때, 위처럼 숫자로 변환 가능한 문자를 숫자랑 비교하면 true로 인지해줌
// 어느정도 허용적인거지 나중에 철저히 해야 에러발생x // 애매해서 안하는걸 추천
// JS에서는 비교를 순수 값으로 함. 주소값으로 비교하지 않음
// === 비교 
console.log('check1 === 1 :' + (check1 === 1));       // check1 == 1 :true
console.log('check1 === "1" :'  + (check1 === '1'));  // check1 == "1" :false
console.log('check2 === 1 : ' + (check2 === 1));      // check2 == 1 :false
console.log('check2 === "1" : ' + (check2 === '1'));  // check2 == "1" :true

추가자료

https://velog.io/@filoscoder/-와-의-차이-oak1091tes

 

 

728x90
반응형
728x90

JAVA 제어문 - 6. 논리 연산자(logical operator)

 

 

비교연산자

1 == 1 같은가?

좌항과 우항을 비교하여 true 또는 false 반환하는 연산자

 

논리연산자 마찬가지이나 특징이 있다

좌항과 우항에 모두 boolean 와야한다

 

 

1.AND 연산자 : &&

양 쪽 다 포함해야 true

// AND 연산자 : 그리고, 둘 다
System.out.println(1 == 1);
System.out.println(true &&  true); // true
System.out.println(true &&  false); // false
System.out.println(false &&  false); // false
System.out.println();

 

2. OR 연산자 : ||

둘 중 하나만 true여도 true를 결과값으로 돌려준다

// OR 연산자 : 또는, 둘 중 하나
// true와 false가 섞여있으면 true 따라감
System.out.println(true || true); // true
System.out.println(true || false); // true
System.out.println(false || true); // true
System.out.println(false || false); // false
System.out.println();

 

3. not 연산자 : !

논리값인 불리안(boolean) 값을 반대로 바꾸는 역할을 한다

true는 반대인 false로 false는 true로

// not
System.out.println(!true); // false
System.out.println(!false);// true

 

 

 


 

 

*변수 처리로 코드 줄이기!

한줄이 너무 복잡한 로직과 코드면 관리가 어려우니 변수로 심플로하게

ex)

if (inputId.equals(id) &&  (inputPass.equals(pass) || inputPass.equals(pass2)   ) {

↓↓↓

boolean isRightPass = (inputPass.equals(pass) || inputPass.equals(pass2)
if (inputId.equals(id) && isRightPass ) {

 

 

728x90
반응형
728x90

 

 

 

JAVA1 6.1. 데이터와 연산

 

데이터의 종류(type) 있고 이와 연산이 관련있다

자바에서 어떤 데이터 타입들이 있고 각각 데이터들마다 어떤 연산 방법들이 존재하는지 알아보자

 

 

 

JAVA1 6.2. 데이터 타입

프로젝트 생성

sysout하고 ctrl+space하면 출력코드를 풀로 자동채워준다

System.out.println();

 

숫자 number

문자 String

"" 묶으면 숫자도 문자로 바뀜

ex) System.out.println("6"); // 데이터타입이 str 6

 

System.out.println("1111".length()); // 문자열의 길이를 알려주는 .length()

 

프로그램에서는 데이터별로 타입이 있고 그에 정해진 연산법이 있어서 구분을 해야한다

 

실력을 쌓고 스킬을 올린다는 것은 크게 두가지의 흐름을 갖는다

1.내가 지금 다루는 시스템에는 어떤 종류의 데이터타입이 존재하는가를 알아가는

2.각각의 데이터 타입별로 어떤 연산 방법들이 존재하는가

 

둘을 통해 폭발적인 퍼포먼스가 발생

 

 

 

 

JAVA1 6.3. 숫자와 연산

클래스 생성 : 우클릭 new-class

 

사칙연산 : + =+- * / 이들을 연산자(operator)라고 부름

 

System.out.println(Math.); 에서 Math.까지 쓰면 이클립스에서는 Math.에서 있는 여러가지 연산방법들을 보여주니 적극 활용할

 

Math.PI : 3.14 blahblah

Math.floor() : () 값을 내림하는 메소드

Math.ceil() :   () 값을 올림하는 메소드

ex) System.out.println(Math.ceil(a));

 

 

 

JAVA1 6.4. 문자열의 표현

큰따옴표와 작은 따옴표의 차이를 알아둘 필요가 있다

다른 언어에서는 '' 감싸던 "" 감싸던 호환이 되지만 자바에서는 에러

'작은 따옴표 Character 나타내며 한글자만

" 따옴표 String 나타내며, 복수의 글자. 한글자도 가능

 

 

줄바꿈하기 : 문자열 사이에 \n 넣기

  - \n : newline이라는 의미

" 출력하고 싶을 경우 \ 붙이기

 ex) hello "world" 출력하고 싶다면

        System.out.println("hello \"world\"");

 

 

이스케이프코드(escape) : \

 

 

 

JAVA1 6.5. 문자열 다루기

.length() : 문자열 개수 세기

.replace( , ) : 문자 바꾸기

 

System.out.println("Hello World".length());  // 결과값 11

System.out.println("Hello, leezhe leezhe leezhe bye".replace("leezche", "egoing"));

System.out.println("Hello, [[[name]]] bye".replace("[[[name]]]", "Mr")); // 대량 이메일 보낼 있음

 

 

 

 

 

 

JAVA1 7. 작심삼일 공학

 

선생님인 이고잉님이 공부를 어떻게 생각하고 수업을 어떻게 만들었는지 전략 소개

1)학생일 전략

낯선 분야를 공부할 작심삼일이 오면, 순간을 '나는 의지가 박약해'라고 생각하지 않고 대신 '공부를 그만하라는 뇌의 명령이다'라고 생각하고 과감하게 진도를 나가지 않고 지금까지 배운 것과 삶의 문제의 접점을 찾기 위해 노력함. 배운 것만으로 여러가지로 쓸모 있다고 뇌에게 증명하기 위해 여기저기 뛰어다님

뇌의 흥분도가 점점 고조되고 다시 공부하라는 명령이 떨어짐. 뇌를 이기는 장사는 없다

 

 

2)선생님일 때의 전략

중도하차하면 아무 것도 없는 무능함에 빠지고, 완주하면 무엇부터 해야될지 모르는 무기력함에 빠진다. 요새 강의를 만들 때는 참여자가 뇌의 명령으로 공부를 그만두어도 지금까지 배운 것만으로도 자신의 문제를 해결할 있는 수업을 만들기 위해 노력. 또한 다시 공부하라는 명령이 뇌에서 떨어지면 다시 공부를 시작할 있도록 노력함

우리가 배우는 수업자체는 하나하나가 그것 자체로 쓸모 있는 수업. 언제든지 공부는 그만하고 일을하고 언제든지 일을 그만하고 공부를 해라.

 

 

728x90
반응형
728x90

004. 연산자 in (Membership Operators) 

 

 

 

전 review에서 변수값의 True를 사용한 것과 연산자 in을 사용한 코드

연산자 in은 tuple, list, str(문자열)만 사용가능!

in

not in

 

세부설명

if문의 True or False로 나누어지는 결과값을 가지고,

in 연산자에 pocket을 받고 pocket 변수 list 안에 있는 값 중에 money가 있는지 찾는다

728x90
반응형
728x90

003. 연산자 in (Membership Operators) 

 

 

 

in 연산자는 list, tuple, 문자열(str)만 가능!

 

 

 

 

 

728x90
반응형

+ Recent posts