티스토리 뷰
:계산하는 문자
:사칙연산, 비트연산, 대소비교 , 특별한 기능(타입 체크)
메서드 호출하거나 변수를 호출하는 기능
배열을 호출할때도 사용
5 + 3 * 2
#실습 1.
package inputex;
import java.util.Scanner;
public class InputTest {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.print("이름을 입력하세요 :");
String str = sc.nextLine();
System.out.println("이름 :" +str);
//문자열은 순번이 매겨져 있음
//이 순 신
//0 1 2
//각각의 문자열을 부르기 위해서 사용하는 메서드 charAt(번호)
"이순신".charAt(0); //이
"이순신".charAt(1); //순
"이순신".charAt(2); //신
System.out.println("이름에서 성만 가지고 온다 :" +str.charAt(0));
System.out.print("성별 남자:남/ 여자:여 라고 입력 : ");
char gender = sc.nextLine().charAt(0);
System.out.println(gender);
}
}
operator : 연산시키는 문자
operand + operand
항 항
-->연산자가 혼자 있을 때는 상관없는 데 여러개 있을 때는
누구부터 하는지 우선순위 따져야한다
1.우선순위
< 최 단 산 쉬 관 리 삼 대 >
1) 최우선 : Op1.java
2) 단항 : Op2.java
3) 산술 : Op3.java
4) 쉬프트 : Op4.java
5) 관계 : Op5.java
6) 논리 : Op6.java
7) 삼항 : Op7.java
8) 대입 : Op8.java
=>Op1.java는 최우선 연산자
[ ]연산자-대괄호 연산자 =>배열챕터
.연산자 -==> 클래스
( )연산자-소괄호연산자 ==>메서드
#실습2.
1) 최우선 연산자
최 단 산 쉬 관 리 삼 대
package opex;
import java.util.Scanner;
public class Op1 {
public static void main(String[] args) {
//배열
int [] ar ={10,20,30};
//int 변수를 3개 만들고 각각 그 저장소에 10,20,30 을 넣어놈
//저장소는 이름을 가져야 함
//ar[0] --> ar배열의 첫번째라는 의미
System.out.println(ar[0]); //10이라는 요소를 꺼내왔다
System.out.println(ar[1]); //20이라는 요소를 꺼내왔다
System.out.println(ar[2]); //30이라는 요소를 꺼내왔다
//#실습
// ar배열에서 두번째 요소를 불러다가 200을 넣어보자
//-->수식으로 바꿀줄 알아야 함
ar[1]=200;
// ' = ' 대입연산자 우선순위 8순위
// 배열 중에서 두번째 "호출 - 불러다 놓고 (호출연산)"
//==> 대입시킴
System.out.println(ar[1]);
Scanner sc=new Scanner(System.in);
sc.nextLine();
// . 연산자 (점 연산자) : ~의 해석
//sc의 (소유격)sc가 갖고 있는 것 중에서 nextLine() "호출"해라
//메서드 호출 -> 최우선 연산자
// . : 호출
// () : 메서드를 호출하는 연산자
}
}
2) 단항 연산자 (unary)
+B
최 단 산 쉬 관 리 상 대
#실습 3.
package opex;
import java.util.Scanner;
public class Op2 {
public static void main(String[] args) {
int num = -5;
//+, - 부호를 유지하거나 부호를 변경할 때 사용
System.out.println(+num);
//(+1)*num
System.out.println(-num);
//(-1)*num
System.out.println(-(num+5));
// -5+5 --> 0 --> (-1)*0 --> 0
//()도 최우선 연산자이다.
//()는 메서드 호출 연산자, 우선순위를 변경하는 연산자 : 최우선
// 형변환 시키는 연산자 (강제 형변환연산자) : 단형에 속한다
}
}
#실습 4.
!, ~ 연산자 : 대상을 반대로 만드는 연산자
! : 논리값 (true | false) 값을 반대로 뒤집는다.
System.out.println(10<3);
//false
System.out.println(!10<3);
--> 에러가 남
-->(!(10<3)); 소괄호로 10<3 이 먼저 연산되도록 만들어 주어야함
System.out.println(!false);
boolean isOff = false;
System.out.println("꺼졌니?(isOff) :"+isOff);//-->꺼진 것
System.out.println("꺼졌니?(isOff) :"+!isOff);//-->켜진 것
System.out.println("꺼졌니?(isOff) :"+!!isOff);//-->꺼진 것
System.out.println("꺼졌니?(isOff) :"+!!!isOff);//-->켜진 것
boolean isOff = false;
isOff = false ;
isOff = !isOff; //오른쪽을 먼저하고 왼쪽으로 집어넣음 우변의값을 좌변에 집어넣음
System.out.println("꺼졌니?(isOff) :"+isOff);//-->켜진 것
isOff = !isOff; //오른쪽을 먼저하고 왼쪽으로 집어넣음 우변의값을 좌변에 집어넣음
System.out.println("꺼졌니?(isOff) :"+isOff);//-->꺼진 것
isOff = !isOff; //오른쪽을 먼저하고 왼쪽으로 집어넣음 우변의값을 좌변에 집어넣음
System.out.println("꺼졌니?(isOff) :"+isOff);//-->켜진 것
isOff = !isOff; //오른쪽을 먼저하고 왼쪽으로 집어넣음 우변의값을 좌변에 집어넣음
System.out.println("꺼졌니?(isOff) :"+isOff);//-->꺼진 것
~ 연산자 : 비트를 반대로 뒤집어
비트 부정 연산자,
틸드 연산자 : 물결 연산자
비트 --> 십진수
십진수 --> 비트
s 64 32 16 8 4 2 1 ->레이블
0 0 0 0 0 0 0 0 => 0
s : sign 부호를 나타냄
* 0-->양수
1-->음수
< 양수계산 >
그 앞 레이블보다 하나 작은수로 계산
ex)
0000 1111 ->15
0001 1111 ->31
0011 1111 -> 63
0111 1111 -> 127
0111 1111
+ 1
-------------
10000 0000 --> 음수가 되버림
* overflower 현상 *
※ 음수비트일 때 10진수 해석방법
( 레이블로는 불가능 )
2의 보수법
1. 오른쪽에서 왼쪽 방향으로 내려적음
2. 최초의 1을 만나면 그 다음 비트부터 1은 0으로 0은 1로 바꿈
3. 바꾼 숫자들을 레이블로 해석하면 됨
ex)
*0101 1110 ->127-(32+1)=94
*1100 1100
--------------
-011 0011
32+16+4
=-52
s 64 32 16 8 4 2 1
40 ->0 0 1 0 1 0 0 0
80 ->0 1 0 1 0 0 0 0
※ 80을 틸드 --> 비트 부정
(1의 보수 0->1/1->0)
1. 1의 보수로 변환
1010 1111
2. 2의 보수로 계산
-101 0001 --> -81
※ 40을 틸드 --> -41
수에 틸드를 걸면
-(수+1) : 수에다 1을 더하고 부호를 바꾸어 준다
#실습 틸드
int value = 10;
System.out.println(~value);
System.out.println(~100);
System.out.println(~1000);
System.out.println(~10000);
() 연산자 : 단항의 소괄호 연산자는 형변환 연산자이다.
int value = 10;
System.out.println((int)5.6);
System.out.println((int)'A');
System.out.println((char)65);
System.out.println(10/3);
System.out.println(10/(double)3);
System.out.println(10/3.0);
System.out.println(10/(double)value);
//변수한테는 .0을 붙일 수가 없다 (double)로 형변환 시키자
증감연산자
변수++;
변수--;
++ : 1을 증가 시키자
-- : 1을 감소 시키자
value = 0;
value++;
System.out.println(value); //0에서 1로 바껴있다.
--value;
System.out.println(value); //1에서 0으로 감소되어 있다.
value++;
value++;
value++;
value++;
value++;
System.out.println(value); //0에서 5로 증가되어 있다.
///////////////////////////////////////////
value=0;
System.out.println(value+1); //결과값 : 1
value=0;
value++;
// value = value+1
//자기자신의 값 이 바뀌어있는것
System.out.println(value); //결과값 : 1
※ 증감 연산자가 다른 연산자하고 같이 쓰인다면..
앞에 있는지, 뒤에 있는지 따져야 한다.
(전위형) (후위형)
value=0;
int result = value++; //후위형 뒤에 있다. 나중에 하자
value 먼저 result에 넣고 난후 value++계산
System.out.println("(후)result : " + result + " value "+value);
value=0;
result = ++value; //전위형,
value를 1로 만들고, result에 넣자
System.out.println("(전)result : " + result + " value "+value);
'Programing > Java' 카테고리의 다른 글
Java1 - 08. If 제어문 (0) | 2017.04.18 |
---|---|
Java1 - 07. 연산자 2 (0) | 2017.04.17 |
Java1 - 05. Scanner 활용/ Dialoginput (0) | 2017.04.13 |
Java1 - 04. 형변환. scanner(입력문) (0) | 2017.04.12 |
Java1 - 03. 변수(Variable) (0) | 2017.04.12 |