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

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

JAVA 제어문(Flow Control) - 3. 비교연산자(Comparison Operator)

 

1+1=2

+ 산술 연산자로써 2 만들고

 

"1"+"1"="11"

여기서 + 문자열을 만들어내는 연산자

 

이번 시간 알아볼 것은

불리언 데이터 타입들 간의 연산을 하는 친구

 

비교연산자(Comparison Operator)

왼쪽에 있는 값과 오른 쪽에 있는 값을 비교해서 결과가 무엇이냐에 따라서 True 또는 False 하나의 값을 만들어 내는 연산자(operator)

 

종류

1)대소 비교연산자

<

>

<=

>=

2)등가 비교연산자

== : 같다 (call by reference & value 참조)

!= : 같지않다

728x90
반응형
728x90

 

JAVA 제어문(Flow Control) - 1. 수업소개

 

시간의 흐름에 따라서

사용자의 동작에 따라서

조건에 따라서 실행되는 순서를 제어한다 : 조건문(Conditional Statements)

 

처리할 데이터 1억개

이런 데이터를 '반복적'으로 처리할 사용

 

간의 순서 따라서 실행되는 프로그램 물이 흐르도록하는 '중력'이라고 한다면,

조건문 반복문 물의 흐름 바꾸는 , 수문 같은

 

이를 통해서 마음대로 로직의 흐름을 조작할 있다

(조건문과 반복문) 조작하기 위해서 먼저 알아야 것은

boolean data type, 비교연산자(comparison operator)

 

< 기능들의 비유>

불리언 데이터타입을 만드는 유일한 연산자 비교연산자(comparison operator) 거쳐서

교차로 같은 조건문(conditional statement) 찍고

순환도로라고 있는 반복문(looping statement)까지 이어지는 여행을 시작할

 

 


 

 

JAVA 제어문 - 2. 불리안(Boolean) Data type

boolean data type 두가지 : true, false

 

"" 감싸지지 않은 true, false boolean이라는 약속이 되어있기 때문에, 변수명으로 사용불가

reserved word : 컴퓨터언어에서 이미 쓰임이 있는 단어들 또는 앞으로 채택될 가능성이 있는 키워드들은 컴퓨터언어가 사용하기로 예약되어 있다고 해서 리저브드 워드라 부름

 

 

이클립스에서 코딩하다가 JAVA API 연결해서 보는

foo까지 쓰고 .찍으면 있는 명령어 목록들이 우측하단에 박스처럼 뜬다

쓸려는 명령어를 클릭하고 오른쪽에 노란바탕에 사용법과 설명들이 뜨는데,

노란 바탕에 우클릭 한번 하면 스샷 아래 동그라미 메뉴가 새로 생기고 자바API 가서 있게끔 링크를 연결해준다

 

 

String foo = "Hello world";
System.out.println(foo.contains("world"));

변수명.contains() : 지정 변수에 해당 글자가 들어가있는지 여부에 따라 true or false 반환

   - 위의 코드에서는 foo라는 변수에 world 문자열(str)있는지 체크하고 있기에 true 반환

String foo = "Hello world";
System.out.println(foo.contains("egoing")); // 반환값 false

 

 

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
반응형

+ Recent posts