문자열 함수
- 문자열.charAt(index)
- 기능 : 문자열의 index에 위치한 한 문자 추출하는 함수
- 매개변수 : X
- 반환값 : 선택한 위치의 문자 (char)
- 문자열.matches(regex)
- 기능 : 정규표현식에 해당하는것이 있으면 boolean형식으로 반환하는 함수
- 매개변수 : 정규표현식
- 반환값 : (boolean)
- 문자열.split(regex) 1)기능 2)매개변수 3)리턴값
- 기능 : 하나의 문자열을 regex(정규표현식)구분자를 기준으로 문자열을 분할하는 메서드
- 매개변수 : regex(정규표현식)
- 리턴값 : 구분자로 나눈 배열(Array)
- 문자열.format("변환하려는 형식", 변환하려는 값)
- 기능 : 내가 원하는 문자열 형식으로 변화해서 문자열을 반환하는 함수.
- 매개변수 : 변환하려는 형식, 변환하려는 값
- 리턴값 : 변환된 값 (String)
- 문자열.join(regex,array)
- 기능 : 배열의 값을 특정문자로 연결하여 문자열을 반환하는 함로
- 매개변수 : 연결문자, 배열
- 리턴값 : 변환된 값 (String)
- 문자열.length()
- 기능 : 문자열의 길이를 반환하는 함수
- 매개변수 : X
- 리턴값 : 문자열 길이(int)
[함수를 호출]할 때 매개변수 사용 방법에 따라서
- Call By Name : 매개변수 없이 함수를 호출하는 방법
- Call By Value : 값(매개변수)를 가지고 함수를 호출
- Call By Reference : 매개변수를 참조형식으로 함수를 호출 -> 배열, 클래스, 인터페이스
- Call By point java에서는 사용X
재귀함수
- 정의 : 자기 자신을 호출하는 함수
- ex)
private static int recursiveSum(int n) { if ( n == 1 ) return 1; else return n + recursiveSum(n-1); }
클린코드
1.
| public static int[] swap(int x, int y) { int [] change = new int[2]; change[0] = y; change[1] = x; return change; } |
| private static void swap(int[] m) { // return 값을 배열로 줄 필요가 없음 int temp = m[0]; m[0] = m[1]; m[1] = temp; } |
2.
| public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int [] m = new int[20]; int [] index = new int[20]; for (int i = 0; i < m.length ; i++) { m[i] = (int) (Math.random()*50) + 1; index[i] = -1; System.out.printf("%d ",m[i]); } System.out.print("> 찾을 정수 입력"); int num = scanner.nextInt(); index = numIndex(m, num); for(int in: index) { if(in == -1) break; // 수정필요 첫번째에 있어도 출력 안하고 break걸림 System.out.printf("%d\t",in); } } private static int[] numIndex(int[] m, int num) { int i = 0, idx = 0; int [] index = new int [20]; while(i < m.length) { if(m[i] == num) { index[idx] = i; idx++; } i++; } return index; } |
| public static void main(String[] args) { int [] m = new int[20]; fillM(m); dispM(m); int n = getN(); int idx = -1; int startIndex = 0; while((idx = sequenceSearch(m,startIndex,n)) != -1) { System.out.printf("> 찾은 위치 : %d. \n",idx); startIndex = idx + 1; } } private static int sequenceSearch(int[] m, int startIndex, int n) { for (int i =startIndex; i < m.length; i++) if( n == m[i]) return i; return -1; } private static int getN() { Scanner scanner = new Scanner(System.in); System.out.print("> 찾을 정수 입력? "); return scanner.nextInt(); } private static void dispM(int[] m) { for (int i =0; i < m.length; i++) System.out.printf("[%d]",m[i]); } private static void fillM(int[] m) { for (int i =0; i < m.length; i++) m[i] = (int)(Math.random()*50+1); } |
3.
| private static double pow(int a, int n) { double result = 1; if ( n > 0) for(int i = 1; i <= n; i++) result *= a; else if (n < 0) for(int i = 1; i <= -n; i++) result /= a; return result; } |
| private static double pow(int a, int n) { double result = 1; for(int i = 1; i <= Math.abs(n); i++) result *= a; return n < 0 ? 1/result : result; } |
4.
| private static double recusivePow(int a, int n) { if ( n == 0) return 1; else if (n >= 1) return a * recusivePow(a, n-1); else return (double)1/a * recusivePow(a, n+1); } |
| private static double recusivePow(int a, int n) { if ( n< 0) return 1/ recusivePow(a, -n); else if ( n == 0) return 1; else return a*recusivePow(a, n-1); } |