프로그래밍/- java
sysout, 자료형, scanner,for,배열, date,random
즐겁게 하하하
2022. 2. 3. 08:02
728x90
Sysout , /r 리턴 , %n 줄바꿈
## ==================================
===> println(출력후 줄바꿈)
System.out.println( 0x1A ); // 26 ( 십진수 )
System.out.println( '' +7+7 ); // 77
System.out.println( 7+7 + '' ); // 14
System.out.println( 10 / 3 ); // 3
System.out.println( 10.0 / 3 ); // 3.333...
System.out.println( '3' - '0' + 1 ); // 4
System.out.println( 3 + '0' ); // 51
System.out.println( (char)(3 + '0') ); // 3
3 + "" = "3" , '3' + "" = "3" // string 으로 변환됨
## ==================================
===> printf(출력)
System.out.printf( "%d" , 0x1A ); // 10진수
System.out.printf( "%f" , 0.123456789 ); // 부동 소수점 0.123457
System.out.printf( "%.2f", 10.0/3 ); // 3.33
System.out.printf( "%g" , 1212.123456789 ); // 1212.12 총 7자리 출력
System.out.printf( "%c" , "a" ); // 문자
System.out.printf( "%s" , "aaa"); // 문자열
System.out.printf( "%b" , true ); // boolean
System.out.printf( "%o" , 0x1A ); // 8진수
System.out.printf( "%X" , 0x1A ); // 16진수
System.out.printf( "%X" , 15 ); // 16진수 F
System.out.printf( "%#X" , 15 ); // 16진수 0XF 0X의 접두사가 붙음
System.out.printf( "[%5d]%n" , 10 ); // [ 10]
System.out.printf( "[%-5d]%n" , 10 ); // [10 ]
System.out.printf( "[%05d]%n" , 10 ); // [00010]
System.out.printf( "[%5d]%n" , 123456789 ); // 123456789
System.out.printf( "%14.10f%n" , 0.123456789 ); // 0.1234567890
System.out.printf( "%14.4f%n" , 0.123456789 ); // 0.1235
System.out.printf( "%.4f" , 0.123456789 ); //0.1235
System.out.printf( "[%.4s]" , "www.abcdefghijklmn" ); //[www.]
## ==================================

## ==================================
final int a; // 상수 [ 한번만 저장가능한 변수
int a = "dd"; // 변수 [ 값을 저장하기 위한 공간
// dd : 리터럴 [ 값 그 자체 ]
실수형 접미사 f (float) , d (double 생략) , 정수형 접미사 L ( long )
byte a = 1; / long a = 100_000_000L
float a = 1.2f / boolean a = true;
int a = 0100; // 8진수
int a = 0x100 // 16진수
int a = 'A'; // SYSOUT > 65 출력
double a = 3.14f //double > float Ok
## ==================================
===> 전위 , 후위 연산
int p = 5;
int k = 1 + p--; // k=6
System.out.println("k = " + k + " , p = " + p); // p=4
int j = 1 + --p; // p=3
System.out.println("j = " + j + " , p = " + p); // k=4
## ==================================
===> 형변환( 형 변환중에 범위를 벗어나면 데이터 손실 발생 )
Integer.toBinaryString( 11 ); // int형 변수 => 2bit Binary 형태의 String 변환
int num = Integer.parseInt("123");
String num = Integer.toString("123");
String num = a.toString(); // String 으로 형변환됨.
double num = Double.parseDouble("3.15");
charAt(1); // 가리키고 있는 문자열에서 1번째에 있는 문자를 char타입으로 변환
double a = 85.7;
int aa = (int)a;
System.out.println(aa); //85
char b = 'A';
int bb = (int)b;
System.out.println(bb); //65
// byte < int
byte a = 10;
int b = a; // (int)생략가능
byte c = (byte)b; // (byte)생략불가
## ==================================
===> 산술 변환
// 연산 전에 두 타입을 일치 시킨다.
long + int => long + long
float + int => float + float
double + float => double + double
// 피 연산자의 타입이 int 보다 작은 경우 int 로 변환하여 연산
System.out.println('2' - '0'); // 50 - 48
byte + short => int + int
char + short => int + int
===> Math.round(); // 소수점 반올림
Math.round(9.123456 * 10000) / 10000.0;
// 9.1235 [ 91235 (int) / 10000.0 (float) => float / float ]
(int)( 9.123456 * 10000 ) / 10000;
// 9.1234
Math.round(9.123456 * 10000) / 10000;
// 9 [ 91235 (int) / 10000 (int) => int / int ]
===> 연산 오버플로우
int a = 1_000_000;
int b = 2_000_000;
long c = a * b;
System.out.println(c); // int * int => -1454759936 :: 범위 초과로 오버 플로우 발생함.
long d = (long)a * b;
System.out.println(d); // 2_000_000_000_000 // 정상
===> 기본 8개 범위를 초과하는 경우
Biginteger , BigDecimal
## ==================================
===> Scanner
import java.util.*;
Scanner scanner = new Scanner(System.in);
char c1 = ' ';
char c2 = ' ';
c1 = sc.nextLine().charAt(1); // 한행 에서 첫번째
c2 = sc.next().charAt(0); // String, 다음 토큰을 문자열로 return
System.out.println(c1); System.out.println(c2);
scanner.close();
/* 123 Enter 456 입력 > 2 \n 4 */
## ==================================


## ==================================
===> for
Loop1 : for(int i = 0 ; i < 9 ; i++) {
for (int j = 0 ; j < 9 ; j++) {
if(j > 5) { break Loop1; // Loop1 까지 탈출 }
System.out.println(j);
}
}
for( A : B ) // B에서 차례대로 객체를 꺼내서 A에다가 넣겠다는 것
for(;;) // 무한 반복문
## ==================================
★ Array
:: 변수만 선언
int[] arr;
int arr[];
/:: 선언과 크기 할당
int[] arr = new int[5];
String[] arr = new String[5];
::기존 배열 초기화
arr = new int[5];
:: 선언 , 크기 지정 , 값 초기화
int[] arr = new int[] {1,3,5,2,4};
int[] arr = {1,2,3,4,5}; // new int[] 생략 가능
int[] bb; bb = new int[]{1,2,3,4}; // new int[] 생략 불가능
String[] weeks = {"월","화","수","목","금","토","일"};
:: 2차원 배열 선언
int[][] arr = new int[4][3];
::3의 크기의 배열을 4개 가질 수 있는 2차원 배열 할당
int[][] arr9 = { {2, 5, 3}, {4, 4, 1}, {1, 7, 3}, {3, 4, 5} };
for (int i = 0; i < score.length; i++) {
for (int j = 0; j < score[i].length; j++) {
System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]);
sum += score[i][j];
}
}
:: 배열 크기
bb.length;
::모든 배열 요소 보여줌
int[] aa = { 1,2,3,4,5 };
System.out.println( Arrays.toString(aa) ); // [ 1,2,3,4,5 ]
★ Arrays :: 배열을 다루기 편리한 메서드
=> toString()
Arrays.toString( arr ); :: 1차원 배열 []
Arrays.deepToString( arr2D ); :: 다차원 배열 [][]
=> copyOf() , copyOfRange()
int[] arr = { 0,1,2,3,4 }
int[] arr2 = Arrays.copyOf( arr , 3 ); :: { 0 , 1 , 2 }
int[] arr2 = Arrays.copyOf( arr , 7 ); :: { 0 , 1 , 2 , 3 , 4 , 0 , 0 }
int[] arr3 = Arrays.copyOf( arr , 2 , 4 ); :: { 2 , 3 } :: 4 불포함
=> deepEquals
boolean k = a.equals(b); :: 문자열 비교 :: 대소문자 구분
boolean k = Arrays.deepEquals( a , b ); :: 두 배열이 같은지 비교 (equals 금지)
boolean k = a.equalsIgnoreCase(b); :: 문자열 비교 :: 대소분자 구분안함
=> sort
Arrays.sort( arr ); :: 배열안의 요소를 오름차순으로 정렬한다.
Arrays.sort(arr , String.CASE_INSENSITIVE_ORDER); :: 대소문자 구분안함
int idx = Arrays.binarySearch( arr , 2 ); ::sort로 정렬후 2를 찾는다.( 정렬 필수 )
=> fill , setAll
int[] arr = new int[5];
Arrays.fill( arr, 9 ); :: [9,9,9,9,9] :: 특정값으로 채우기
Arrays.setAll( arr , (i) -> (int)(Math.random()*5) +1 ); ::람다식을 이용해 채우기
=> asList( Objet ) :: 배열을 읽기 전용 List로 변환
List list = Arrays.asList(1,2,3);
list.add(4); :: 읽기 전용이라 추가 불가능
List list = new ArrayList( Arrsys.asList(1,2,3) ); :: 추가 가능
## ==================================
Date today = new Date(); :: today에 날짜 객체의 주소 저장
## ==================================
Math.random() :: 0.0 ≤ x < 1.0 사이 double 형으로 반환
Math.random() * (max - min + 1) + min // 공식
(int) (Math.random() * (max - min + 1) + min)
## ==================================
str.chartAt(0); ## 문자열에서 해당 위치의 index 문자를 반환 0 ~
str.length(); ## 문자열의 길이 반환
str.substring( from , to ); ## 문자열에서 from ~ to 까지(to제외) 문자열 반환
str.substring( 0 , aa.length() );
str.toCharArray(); ## string -> char[]
728x90