Search
Duplicate

자바를 자바 04 (Arithmetic Operators, Strings, 연산자, 문자열)

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Java
Scrap
태그
9 more properties

1.4 Arithmetic Operators

Conditional operators(삼항 연산자)

time < 12 ? "am" : "pm";
Java
복사
C++과 동일하게 삼항 연산자를 지원한다.

Bit-wise operators and shift operators

- op1 & op2 : and 연산 - op1 | op2 : or 연산 - op1 ^ op2 : xor 연산 - ~op1 : not 연산 - op1>>op2 : op2 만큼 비트를 오른쪽으로 이동 - 한 번 이동에 값이 1/2 + 맨 오른쪽에 있는 비트는 사라짐(소수점 버림) - op1<<op2 : op2 만큼 비트를 왼쪽으로 이동 - 한 번 이동에 값이 2+ 맨 왼쪽에 있는 비트는 사라짐(소수점 버림)
Java
복사
ex) when a = 0xA7 (16진수)
Bit assignment operator &= |= ^= <<= >>= ex>
a = a&b a &=b
Java
복사
위의 두가지 표현은 같은 결과를 가지고 온다.
class opBit{ public static void main(String[] args){ char a = 0xA7 System.out.println("a : " + Integer.toString(a,16) + '\\n'); System.out.println("a & F0 : " + Integer.toString(a & 0xF0,16) + '\\n'); System.out.println("a | F0 : " + Integer.toString(a | 0xF0,16) + '\\n'); System.out.println("a ^ F0 : " + Integer.toString(a ^ 0xF0,16) + '\\n'); } }
Java
복사
여기에서 Integer.toString은 Integer 클래스의 toString static 메소드를 사용한 것으로 Integer.toString(연산, 출력방식) 의 형태로 연산의 결과를 출력방식에 맞추어 반환한다. 여기에서는 16으로 입력하였기 때문에 16진수 문자열로 반환이 된다.

연산자 우선순위(시험)

1 // 2 // 3-4 // 5-7 // 8 // 9 만약 우선순위가 같다면 왼쪽에서 오른쪽으로 연산을 진행한다. 1순위의 assignment는 오른쪽에서 왼쪽으로 연산을 진행한다.
ex>
int x = 1,y=2,z; z = x + y*2 - ++x + (y+=3);
Java
복사
원리 왼쪽에서 오른쪽으로 진행하는데 '=', '+', '-', '+' operator에서 연산자 우선순위가 걸린 곳에서 넘겨온 연산을 모두 수행
상세순서 그래서 '=' 보다 '+'의 우선순위가 더 높기 때문에 '='를 넘어감 '+' 보다 ''의 우선순위가 더 높기 때문에 '+'를 넘어감 '' 보다 '-'의 우선순위가 낮기 때문에 '*'을 우선 수행 '+' 와 '-'는 우선순위가 같기 때문에 왼쪽('+')을 먼저 수행 '='보다 '-'의 우선순위가 높기 때문에 '-'을 넘어감 '-' 보다 '++x'의 우선순위가 높기 때문에 '++x'를 넘어감 '++x' 보다 '+'의 우선순위가 낮기 때문에 '++x'를 우선 수행 '-' 와 '+'는 우선순위가 같기 때문에 왼쪽('-')을 먼저 수행 '=' 보다 '+'의 우선순위가 높기 때문에 '+'를 넘어감 '+' 보다 '(' 의 우선순위가 높기 때문에 '('를 넘어감 '(' 다음부터 ')' 까지 계산이 이루어짐 '+' 다음 연산자가 없으니 '+' 연산 수행 '=' 다음 연산자 없으니 '=' 연산 수행
연산순서 : x는 1, y*2 는 4, ++x는 2, y+=3 은 5
결과 : x는 2, y는 5, z는 8
ex>
int x=2, y=5, z=8; System.out.println("x=y+=z : ",x=y+=z);
Java
복사
'=' 와 '+='의 연산자 우선순위는 같기 때문에 방향에 따라 y가 우선 13이 됨 이후 x에 13의 값이 입력됨
<br><br>

1.5 String

객체 생성

String location = "Java";
Java
복사
"Java" 자체가 String 타입의 Object

concat 연산자

String greeting = "Hello " + location;
Java
복사
'+' 는 concat 연산자

자동 형변환

int age =42; String output = age + " years";
Java
복사
age가 자동으로 String으로 형변환

Static Methods

- join(기준, 문자열들...) : 수십개의 문자열을 기준을 가지고 붙이는 함수 ```java String names = String.join(", ","Peter","Paul","Mary"); ```
Java
복사

Instance Methods

- substring(이상, 미만) : 문자열 객체의 일부분을 잘르는 함수(0부터 시작, 이상~미만) ```java String greeting = "Hello, World!"; String location = greeting.substring(7,12); ``` 예외 적으로 substring(이상) 하면 이상부터 끝까지 반환 - split("기준") : 문자열을 기준을 가지고 분해 ```java String names = "Peter, Paul, Mary"; String[] result = names.split(", "); ``` - length : 문자열 길이를 반환(길이 이기 때문에 1부터 시작) - equals(문자열) : 문자열이 같은지 확인 만약 같다면 true 반환 아니면 false 반환
Java
복사

Wrapper Class

프로그램에 따라 기본 타입(Primitie Type)의 데이터를 객체로 취급해야 하는 경우가 생김 이때 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스라고 부름
String 으로 갈거면 'toString'
String 을 제외한 자료형으로 갈거면 'parse자료형'
int => String
int n = 42; String str = Integer.toString(n);
Java
복사
String => int
String str = "101010"; int n = Integer.parseInt(str);
Java
복사
String <=> double Double.toString <=> Double.parseDouble