파이썬에서 넘어오며 헷갈리는 문법들
1. 배열
자바엔 [:]와 같은 슬라이싱 기능이나, A[3]과 같은 기능이 없다.
대신 STRING의 원소중 하나를 쓸 때는 . charAt(index)를 활용하자.
(문자열이 불변임에 주의하자. 문자열의 변수 변경이 불가하다.)
앞서 말한 슬라이싱은, substring(startindex,end)를 통해서 새로운 문자열을 생성하여 해결하자.
2. 문자열
문자열의 관점에서, 여태까지는 print()로 바로 출력했다.
이젠 ("a = " + a)로 출력하자
(System.out.print(""))
문자를 대,소문자로 바꾸려면? ㅁ.valueOf().toUpperCase()로 변경하던지, (alist.toUpperCase()도 가능하다)
CHAR에 +32(대->소) -32(소->대)를 진행하자.
String s = String.valueof(3) -> 3을, 문자열로 만든다.
파이썬이 코딩테스트용으로 버릇이 들어, 자꾸 int를 선언하지 않고 i=3과 같이 선언한다. 주의하자.
eqauls는 string에 적용하고.
int와 char은 ==로 비교하자. / char은 원시 데이터유형이고 string은 객체이므로.
문자열 (만!) 비교는. equals()사용.
문자열에서 python처럼 "haha"*3을 하려면?
answer += "*".repeat(i)
3. 숫자
일단, long 그리고 double을 주로 활용하자.
python의 ** 는, math.pow(n,0.5)가 되어야 한다.
int->long등 변환은, (long)으로 하자 .
(주의 ! (long)((x+1))로 해야한다. 왜냐면 long으로 형변환하는게 곱하기 보다 빠르므로, 이렇게 해야 실수가안나더라.
String을 -> INT 로 바꿀땐 Integer.parseInt(strings,x); //x는 진수의 의미를 지닌다.
LOng은 long.parseLong(). 아주 간단하다.
Int or Long을 -> string으로 바꿀땐 Integer.toString(intx)
char을 int로 바꿀때는 -> character.getNumericValue(charc)
int를 char로 바꿀때는?- > (char) 로 간단하지만! 한글자임에 주의
String의 string[3]은 -> mystring.valueOf(3); -> 이건 string으로 다시 만드는 것이 된다.
(즉, Char을 string으로 만들고 싶다면 String.valueOf(chara)를 하면 된다.)
뿐만 아니라, String.valueOf()로 거의 모든 객체를 string 화 할 수 있다. 이방법을 주로 활용하자.
PYTHON 처럼 STRING의 한글자만 CHAR로 만들고 싶다면? -> mystring.charAt(index)
4. 배열
배열은, length()가 아니라 length를 사용한다. 헷갈리지 말자. -> lenght는 속성이 된다.
배열 정렬 -> Arrays.sort(배열)
선언해준다
Arrays.sort(array); 로 정렬 (기본 오름차순)
?내림차순 정렬은?
이와 같이 정렬하자.
1. Integer[] myarr = Arrays.stream(원하는arr).boxed().toArray(Integer[]::new);
//손에 익히자!
배열에서 큰 수 찾기
5. max와 같은 연산함수
python에선 max로 바로 구했지만, 자바는 Math.max로 구한다.
(java의 lang안에, 기본적인 math가 들어있다)
<최대 공약수>
gcd가 없어서.. a를 b로 나누다, 나눠지면 그 나눈걸로 다시 줄여가는 기법 .
static으로 선언해 언제든 사용할 수 있게!
6. 논리연산자
AND , OR은 없고 &&와 ||만 있다.
7. Arraylist
기본적인 []형태는 불변의 객체라, 값을 꺼내올 수만 있고 append와 같은 방식이 불가하다.
이럴때 쓰는게. ArrayList -> 선언만 해주고, 원하는 값을 쓰면된다!
add() ->append 처럼.
get(i)-> 해당 index 값 가져오기
size() -> length는 배열의 성질. length()는 string의 함수.
이것처럼, arraylist의 길이를 가져올떈, size()함수로 가져와야 된다.
8. LONG을 써야 하는 이유
문제 상황:
500번 이상 넘어가면 탈출하는 것이 문제의 조건이었지만, 본인 코드에선 488번 이 지나면 바로 탈출해버렸다.
왜그럴까를 찾아보다, 결과를 얻게 되었다.
INT는 LONG에 비해 BYTE수가 적기 때문에, 특정 값을 넘어가면 표현되지 않는다.
즉 기존 23412340 와 같은수가 더 적은 수로 표현되어, 488번 만에 통과되게 된 것.
결론 : 큰 수를 다룰때는 , LONG의 사용을 습관화하자.