티스토리 뷰
숫자
자리수 구하기 -> (int)Math.log10( n + 1);
제곱근 -> (int)Math.sqrt(n)
valueof parseInt의 차이[hong]
valueOf의 return 값은 객체, parseInt는 비교값 기본자료형이다.
//s는 숫자를 가진 문자열
parseInt (s, 10); // 10진수 형태로 변환
배열
- 선언 : int[] a = new int[8];
int[] a = {1,2,3,4,5};
- 배열 -> 문자열 : Arrays.toString();
- char 배열 -> 문자열 : String.valueOf();- , String str = new String(charArray);
- 문자열 -> char : .toCharArray;
- 문자를 문자열 -> String.valueOf(array);
- 배열을 ArrayList로 변환 -> List lst = Arrays.asList(arr);
- Set을 object타입의 배열로 변환 -> toArray();
- 배열 오름차순 : Arrays.sort(arr);
- 배열 내림차순 : Arrays.sort(arr, Collections.reverseOrder());
- 배열의 특정 범위만 빼기 : Arrays.copyOfRange(arr, 2 ,4 ); 2번째 인자(포함)부터 3번째 인자(미포함) 앞까지 추출)
- 전달받은 배열의 특정 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환
- int i = Integer.parseInt(숫자값으로 된 String); //static이라 Integer생성 안함
- int i = Integer.valueOf(str).intValue(); //Integer 생성해야한다.
- parsInt intValue 차이
오토언박싱으로 인해 객체로도 연산이 가능하다.. 객체생성 유무..?? 정확하겐 이해를 못했다.
- 1. 내용물 -> 내용물 형변환 Integer.parseInt()
- 2. 객체 -> 내용물 변환 intValue();
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 2, 4)
배열의 특정 값의 index 리턴받기
- Arrays.sort() 메소드로 정렬 후 Arrays.binarySerarch()로 항목의 인덱스 값을 찾을 수 있다. : Arrays.binarySearch(arr,"bb");
String
String str = "";
- str.startWith(a); -> 특정 문자로 시작하는지 판단
- str.endWith(a); -> 특정 문자로 끝나는지 판단
- str.equals(a); -> 같은지 아닌지 판단
- str.indexOf("a"); -> a가 몇번째 위치하는지 판단
- str.compareTo("bcef") -> str문자열과 사전 편찬 순으로 비교( 대소문자 구분)
- str.compareToIgnoreCase()("bcef") -> str문자열과 사전 편찬 순으로 비교( 대소문자 구분 x)
- str.length; -> 문자열길이판단
- String[] strArr = str.split("") -> 문자열 1개씩 나누어 배열로 반환, 넣는 값을 기준으로 나눌수도있음 (str.split(" ")
- str.substring(0, 2); -> 1번째 인자부터 2번째 인자 앞까지 문자추출
- str.toLowerCase -> 모든문자 소문자 변환
- str.toUpperCase -> 모든문자 대문자 변환
- str.trim(); -> 문자열 빈칸 제거
- String.valueOf(int i) -> i를 문자열로 변환
- str.charAt(i) -> i번째 문자 추출
- StringBuilder sb -> sb.toString -> StringBuilder을 문자열로 변환
- sb.append(); -> 문자열 뒤에 붙임
String str = new StringBuffer().append("Hello").append(" to").toString();
요런것도 가능하다....
문자열 정렬 .toCharArray() 로 바꾼 다음 .sort() 사용해야함.
String 배열 정렬 기준 변경
//배열 정렬, 정렬 규칙으로는 2개를 더하여 더 큰 쪽이 우선순위가 있도록 정렬
Arrays.sort(arr, new Comparator<String>() {
public int compare(String s1, String s2) {
return (s2+s1).compareTo(s1+s2);
}
});
ArrayList (입출력: add(), get())
List list =newArrayList(Arrays.asList(5,4,3,2,1)
ArrayList 일땐 Collections.sort(answer) 로 정렬
list.remove(1); 원소 1을 제거
list.remove(Integer.valueOf(1));
index 1의 값을 삭제하는 것이 아니라,
ArrayList에서 1 값을 삭제하기 위해서 Integer 객체를 전달하였습니다.
그런데, remove() 메소드는 ArrayList의 첫번째 1만 삭제합니다.
위 예제처럼, 1이 여러번 나올 경우, 1을 모두 삭제하기 위해서는
다음 예제와 같이 반복문을 사용하거나 removeAll() 메소드를 사용해야 합니다.
요소의 변경 -> arrList.set(0, 20);
리스트의 크기 -> arrList.size();
정렬
- Collections.sort(arrList);
- Collections.sort(arrList, Collections.reverseOrder());
StringBuffer 클래스 이용하기 (입출력: append(), get())
StringBuffer str =new.StringBuffer("Java Oracle");
부분 문자열을 해당 문자열에서 제거 -> str.Remove(인덱스, 삭제할 개수));
문자열의 일부를 다른 것으로 대체한다. -> str.Replace('S', 's); //스트링 가능
-> str.Replace('S', 's' , 0 , 8); //교체범위 idx 지정
문자열 중간에 다른 문자열 삽입 -> str.insert(4,"Script")); -> "JavaScript Oracle"
문자열 역순 -> str.reverse();
String으로 변환 -> sb.toString();
Stack
Stack 생성 : Stack<Integer> st = new Stack<Integer>();
요소 저장 -> push(value);
최상단 요소 -> peek();
요소의 제거 -> pop();
요소 위치 탐색 -> st.serarch(idx); // 맨 오른쪽부터 1
Queue
LinkedList<String> qu = new LinkedList<String>();
요소 저장 -> push(value)
최상단 요소 -> peek();
요소의 제거 -> poll();
특정 요소 제거 -> remove("하나");
우선순위 큐 (heap)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(); //Min heap
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder()); //Max heap
요소저장 -> add(i);
요소제거 -> remove(i);
HashSet (순서에 상관없이 저장하고 중복된 값 저장하지 않는다)
HashSet<String> hs01 = new HashSet<String>();
요소 저장 -> add(value);
요소의 총 개수 -> size();
Iterator<Integer> iter = ts.iterator();
while (iter.hasNext())
{
String str = iter.next();
}
TreeSet (데이터가 정렬된 상태로 저장되는 이진 검색트리 형태로 요소를 저장)
TreeSet<Integer> ts = new TreeSet<Integer>();
요소 저장 -> add(value);
요소 제거 -> remove(value);
Iterator<Integer> iter = ts.iterator();
while (iter.hasNext())
{
String str = iter.next();
}
Map
Map<String, String> map = new HashMap<>();
map.put("001", "kim");
map.put("002", "lee");
map.put("003", "choi");
// 같은 key가 2개 있을 수 없습니다. 첫번째로 저장했던 001, kim은 001, kang으로 바뀐다.
map.put("001", "kang");
// map에 저장된 자료의 수를 추력합니다. 3이 출력됩니다.
System.out.println(map.size());
키로 값을 꺼낸다. -> map.get("001")
키값을 모두 꺼낸다. -> Set<String> key =map.keySet(); //셋 자료구조에 key값이 저장이 됨.
Set 자료구조는 iterator로 정보를 꺼낸다.
// map에 저장된 모든 key들을 Set자료구조로 꺼냅니다.
Set<String> keys = map.keySet();
// Set자료구조에 있는 모든 key를 꺼내기 위하여 Iterator를 구합니다.
Iterator<String> iter = keys.iterator();
while (iter.hasNext()) {
// key를 꺼냅니다.
String key = iter.next();
// key에 해당하는 value를 꺼냅니다.
String value = map.get(key);
// key와 value를 출력합니다.
System.out.println(key + " : " + value);
}
}
}
4. 이외 팁
1. 특정 배열에 값들을 넣을 때, 중복없이 넣는 법
ArrayList를 선언하고 , 특정 값이 value라고 할 때
If( ArrayList.indexOf(value) < 0 )
Arraylist.add(value);
이런 식으로 해야함. indexOf는 특정 value가 없으면 -1을 리턴하기 때문에
어레이 리스트에 이 값이 없을 때만 add하겠다는 뜻이다.
2. 어레이리스트의 값을 하나씩 가져와서 배열에 넣을 때
String형태면 for문돌리면서 arr[i] = list.get(i); 하면되는데
Int 형태라면 arr[i] = list.get(i).intValue(); 라고 해줘야된다.
3. 스트링을 분할하려면 substring , 배열을 분열하려면?
스트링은 str.substring(3,5) 이런 식으로 원하는 부분만 뽑아낼 수 있는데
배열은 substring이 불가능하다. 대신 Arrays.copyOfRange() 메소드를 통해 복사한다.
Arrays.copyOfRange(원본배열, 시작, 끝) 이렇게 사용 가능하다.
4. 배열 특정 값의 index 리턴받기.
Array.sort() -> int idx = Arrays.binarySearch(arr, "bb")
5. 배열을 어레이리스트로 변환할 때
List lst = Arrays.asList(arr);
5. 해시와 링크드해시
HashMap<String , Integer> hm = new HashMap<>();
이렇게 선언한다.
값 추가 : hm.put(“minsoftk” , 10);
값 변경 : hm.put(“minsoftk” , 30); -> 키 기준이라 그냥 그대로 put하면 값이 변경됨
값 삭제 : hm.remove(“성재”);
Key , value 값 for문으로 뽑아내기
for (String key : ages.keySet())
ages.get(key)
자세한 내용 정리
String 메소드
startWith
- 문자열이 지정한 문자로 시작하는지 판단 같으면 true반환 아니면 false를 반환한다.(대소문자구별)
String str = "apple";
boolean startsWith = str.startsWith("a");
System.out.println("startsWith: " + startsWith);
//결과 true
endWith
- 문자열 마지막에 지정한 문자가 있는지를 판단후 있으면 true, 없으면 false를 반환한다.(대소문자구별)
String str = "test";
boolean endsWith = str.endsWith("t");
System.out.println("endsWith: " + endsWith);
//결과 : true
equals
- 두개의 String에 값만을 비교해서 같으면 true, 다르면 false를 반환한다.(대소비교)
String str = "java";
String str = "java";
boolean equals = str.equals(str);
System.out.println("equals: " + equals);
//결과 : true
indexOf
- 지정한 문자가 문자열에 몇번째에 있는지를 반환한다.
String str = "abcdef";
int indexOf = str.indexOf("d");
System.out.println("indexOf: " + indexOf);
//결과 : 3
lastindexOf
- 문자열에 지정한 문자가 마지막몇번째에 있는 int를 반환한다.
String str = "AdnroidApp";
int lastIndexOf = str.lastIndexOf("A");
System.out.println("lastIndexOf:" + lastIndexOf);
//결과 : 7
length
- 문자열의 길이를 반환한다.
String str = "abcdef";
int length = str.length();
System.out.println("length: " + length);
//결과 : 6
replace
- 문자열에 지정한 문자" "가 있으면 새로 지정한 문자" "로 바꿔서 출력한다.
String str = "A*B*C*D";
String replace = str.replace("*", "-");
System.out.println("replace: " + replace);
////결과값: A-B-C-D
replaceAll
String str = "AB CD";
String replaceAll = str.replaceAll("\\p{Space}", "*");
System.out.println("replaceAll: " + replaceAll);
////결과값: AB*CD
split
- 지정한 문자로 문자열을 나눌수 있다.(배열로 반환)
String str = "A:B:C:D:abcd";
String[] split = str.split(":");
System.out.println("split: " + split[1]);
//결과값:B
substring
- 문자열에 지정한 범위에 속하는 문자열을 반환한다.(시작범위에 값은 포함하고, 끝나는 범위에 값은 포함하지않는다.)
String str = "ABCDEF";
String substring = str.substring(0, 2);
System.out.println("substring: " + substring);
//결과값:AB
toLowerCase
- 문자열에 대문자를 소문자로 변환한다.
String str = "abcDEF";
String toLowerCase = str.toLowerCase();
System.out.println("toLowerCase: " + toLowerCase);
//결과값:abcdef
toUpperCase
- 문자열에 소문자를 대문자로 변환한다.
String str = "abcDEF";
String toUppercase = str.toUpperCase();
System.out.println("toUppercase: " + toUppercase);
//결과값:ABCDEF
toString
- 문자열을 그대로 반환해준다.
String str = "1234";
String toString = str.toString();
System.out.println("toString: " + toString);
//결과값:1234
trim
- 문자열에 공백을 없에준다.
String s = " java java java ";
String v;
v = s.trim();
System.out.println("trim:" + v);
//결과값:java java java
valueOf
- 지정한 개체의 원시 값을 반환
int i = 12345;
long l = L;
char c = '';
System.out.println("valueOf: " + String.valueOf (i));
System.out.println("valueOf: " + String.valueOf (l));
System.out.println("valueOf: " + String.valueOf (c));
//결과값:
//valueOf: 12345
//valueOf: 1
//valueOf: 1
compareTo
- 두개의 String를 앞에서부터 순사적으로 비교하다가 틀린부분이 있으면 비교하는 String에 캐릭터값을 반환한다.(대소문자를 구별)
String str1 = "A";
String str2 = "B";
int compareTo = str1.compareTo(str2);<p></p>
if(compareTo > 0){<p></p>
System.out.println(str1 + " > " +str2);
} else if (compareTo == 0){
System.out.println(str1 + " = " +str2);
} else{
System.out.println(str1 + " < " +str2);
}
//결과값: A < B
contains
- 두개의 String을 비교해서 비교대상 String을 포함하고 있으면true, 다르면 false를 반환한다.
String str1 = "abcd";
String str2 = "c";
boolean contains = str.contains(str);
System.out.println("contains: " + contains);
//결과값:true
charAt
- 지정한 index번째에 문자를 반환한다.
String str = "charAt";
char charAt = str.charAt();
System.out.println("charAt: " + charAt);
//결과값:a
concat
- 문자와 문자를 결합해준다.
String str1 = "Han";
String str2 = "SeeJin";
String concat = str1.concat(str2);
System.out.println("concat: " + concat);
//결과값:HanSeeJin
format
- 서식문자열을 이용해서 서식화된 문자열을 반환한다.
int i = 123456789;
String str = String.format("%,d", i);
System.out.println("format: " + str);
//결과값:123,456,789
matches
- 지정한 정규 표현과 일치 할때 true를 반환한다.
int i = 123456;
String str1 = String.format("%,d", i);
String str2 = "123456";
boolean matches = str1.matches(str2);
System.out.println("matches: " + matches);
//결과값:false
replaceFirst
- 문자열에 지정한 문자" "가 있으면 첫번째만 새로지정한 문자" "로 바꿔서 출력한다.
String str = "Aman";
String replaceFirst = str.replaceFirst("A", "super");
System.out.println("replaceFirst: " + replaceFirst);
//결과값:superman
문자열 관련
toCharArray
- 문자열을 한 글자씩 쪼개서
이를 char타입의 배열에 집어넣어주는 친절한 메소드이다.
String(문자열)을 char형 배열로 바꾼다.
String s1 = "Hello World";
char[] charArr = s1.toCharArray();
//how to use method
//char형 배열을 합쳐서 하나의 String(문자열)로 만들 수 있다.
String s2 = new String(charArr);
StringBuilder
- string 클래스는 고정 길이로 되어있기 때문에 한 번 작성한 문자열 뒤에 문자열을 추가하게 되면 새로운 문자열을 작성하게 됩니다.
이에 비해 StringBuilder 클래스는 가변길이의 문자열을 사용하는 클래스로 문자를 추가해도 새로운 오브젝트를 작성하지 않고 문자열을 추가합니다.
String , Stringbuffer
String과 StringBuffer/StringBuilder 에 모두 들어있는 메소드
char charAt(int index) : 특정 위치에 있는 문자 반환
int length() : 문자열의 길이
String substring(int start, end end) : 문자열의 일부를 뽑아냄
String toString() : 객체를 문자열로 나타낸 값
String concat(String) : 문자열을 합침
String append(String) : 문자열을 합침
String 클래스에만 존재
String replace(char old, char new) : 특정 문자를 모두새로운 문자로 치환
String substring(int begin , int end) : String 일부를 뽑아냄
char[] toCharArray() : char 배열로 변환
String toLowerCase() : 모두 소문자로 변환
String toUpperCase() : 모두 대문자로 변환
String trim() : 끝에 붙어있는 공백문자 제거
String valueOf(char []) : char배열로부터 문자열을 만들어냄
String valueOf(int i) : 원시 값으로부터 문자열을 만들어냄
StringBuffer 및 StringBuilder 클래스에 들어있는 메소드
StringBuffer/StringBuilder delete(int start , int end) : 일부를 삭제함
StringBuffer/StringBuilder insert(int offet, any primitive of a char[]) : 먼가를 삽입함
StringBuffer/StringBuilder replace(int start , int end , String s) : 일부분을 String 객체로 치환
StringBuffer/StringBuilder reverse() : 객체를 뒤집음
StringBuffer/StringBuilder setCharAt(int index , char ch) : 주어진 문자를 치환함
java.time 관련 클래스
// 2012년 12월 12일의 시간에 대한 정보를 가지는 LocalDate객체를 만드는 방법
LocalDate ld1 = LocalDate.of(2012, Month.DECEMBER, 12); // 2012-12-12 from values
// 17시 18분에 대한 LocalTime객체를 구한다.
LocalTime lt1 = LocalTime.of(17, 18); // 17:18 (17시 18분)the train I took home today
// 10시 15분 30초라는 문자열에 대한 LocalTime객체를 구한다.
LocalTime lt2 = LocalTime.parse("10:15:30"); // From a String
import java.time.*;
LocalDateTime ld = LocalDateTime.now(); // 현재의 날짜와 시간
LocalDate theDate = ld.toLocalDate(); //현재의 날짜
Month month = ld.getMonth(); // 영어로 month
System.out.println(ld);
System.out.println(theDate);
System.out.println(month);
// 실행결과
// 2021-07-16T16:34:33.132109
// 2021-07-16
// JULY
📕 Reference :
http://www.dreamy.pe.kr/zbxe/CodeClip/3766960)
https://velog.io/@hsgin11/Java-valueof-parseInt%EC%9D%98-%EC%B0%A8%EC%9D%B4
- Total
- Today
- Yesterday
- git vi
- 42서울 합격
- React
- vscode commit vi
- 42서울 라피신
- JS
- 프로그래머스 코테
- 알고리즘
- C언어문제
- 42seoul
- JavaScript
- 프로그래머스 카카오
- 42서울
- C언어
- html
- c언어 함수
- Git
- c언어알고리즘
- 프로그래머스 코딩테스트
- vscode
- css
- windows 10 ubuntu
- C언어 문제
- flexbox
- 42서울 합격 후기
- HEXO
- 마크다운 이미지 업로드
- 프로그래머스 자바
- 백준
- 자바스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |