● Shift + F10 : 누르면 컴파일 된다.(intelli j 기준)
● Ctrl+alt+L :코드 자동 정렬
● ctrl+space : 자동완성기능 켤 수 있음.
● ctrl+b : 클래스든 변수타입이든 지정해두고 를 누르면 관련 코드 볼 수 있음.
● ctrl+q : 지정한 문구의 설명을 볼 수 있음.
● main을 치고 아래 생기는 자동생성창에 main을 누르면 main문이 자동으로 생성됨.
● 영역 지정하고 Ctrl + / 를 누르면 주석처리 됨. = > opencv같은데도 적용되는지 확인해보자
● for(int i = 0;;i++)이런 반복문을 만들었을 때 다음에 j로 만들려한다면 ' fori ' 템플릿을 사용하여 j로 만든 반복문 을 만들 수 있음. 뒤로 계속 추가 가능.
● foreach ->for (int view : moneyList)
-> 매 반복마다 moneyList에 있는 값들을 순차적으로 for값에 선언한 view 에 넘겨줌. view를 블럭안에 이용가능.
● 왠만한 명령어 앞에 커서를 두고 alt+enter를 치면 사용할 수 있는 템플릿이 뜬다.
예로, if문에 쓰면 switch 문으로 변환시켜 주는 문구가 나오고, for문에 쓰면 while문으로 변환시켜주는 문구가 나온다.
●foreach 템플릿을 쓰면 for (:) {} 이 나오는데 기존배열을 순차적으로 식에 적용시키기에 편함. 자세한건 [java]배열 참고.
● 메뉴창 code - code cleanup 을 하면 코드를 정리해줌. 제어자 순서라던가 반대로 되어있으면 깔끔하게 바꿔줌
● 메뉴창 code - inspect code 를 하면 코드를 검사해줌. 에러들과 사용하지 않는 변수나 메소드 등 찾아줌.
● 메뉴창 file - settings - Editor - Inlay Hints - java - code vision - usage 누르면 아래 그림과 같이 생긴다.

● 클래스에 alt-enter 누르면 해당 클래스가 패키지 내에 독립적으로 생김.
● alt+insert =>getter setter construct 등 ㄱㄴ
● ctrl + b -> 해당 변수나 명령어...등등 근본적인 정보를 볼 수 있음.

● ctrl + h -> 상속도를 볼 수 있음.
● 최근파일 보는 법 ctrl + e눌러서 recent file 작동시키면 찾을 수 있음.
● 해당 클래스가 잘 작동되는지 확인하고 싶으면 그곳에 main문 '잠깐' 추가해서 동작해보면 됨. main은 static이라 그 클래스와 개별적으로 존재해서 상관없음. 하지만 작동에 필요한 문구가 아니라면 테스트가 끝난 후 main은 여러개 있으면 안좋으니 꼭 지우도록 한다.
● java class,method...등색상변경 https://www.youtube.com/watch?v=0hJ2gQbwVTg
file-settings-editor-color scheme-java에서 원하는거 바꾸면 됨.
● 마우스 오른쪽 클릭하고 Refactor 차트의 Rename 기능은 폴더명이나 클래스명을 바꿀때도 쓰지만, 클래스 내의 소스코드의 변수명을 변경하기에도 용이하다.
● ctrl alt o => 안쓰는 import 안보이게 해줌.
● main문에있는 기능을 지역메소드로 쉽게 꺼내는 법. => 꺼낼 문장들을 씌우고 마우스오른쪽클릭 - Refator - Extract method
● Inspect Code해서 프로젝트 자가진단 가능.
●System.out.print(); -> c의 printf와 비슷한 명령어. 하지만 변수명과 상관없이 넣은것 출력 해주는 듯.
---> cf) 변수를 넣어줄 시, 그 변수는 초기화가 되어있어야 한다. 예를들어 int x;라 선언하고 x를 넣어주면 컴파일 에러가 생긴다.
●new java.util.Scanner(System.in).nextLine(); = > scanf와 같은 역할이나 String을 입력.
●new java.util.Scanner(System.in).nextLine().charAt(Index추가); = > 입력한 문자열의 Index자리의 문자 1개를 받아옴. char인 변수로 값을 받아줘야 한다.(String x)
-- cf) char
String string_Temp_0 = new java.util.Scanner(System.in).nextLine();
char s = string_Temp_0.charAt(Index값);
String string_temp_1 = "테스트";
char s = string_Temp_1.charAt(Index);
이런식으로 해도 됨.
●new java.util.Scanner(System.in).nextInt(); = > scanf와 같은 역할이나 int형을 입력.
-- cf) num = new Scanner(System.in).nextInt(2); -> 2진수를 적으면 10진수로 치환해서 넘겨줌.
●new java.util.Random().nextInt(num); ->//0~(num-1) 사이까지 랜덤값 생성.
●Math.PI -> 파이값 가져옴.
●Math.max(a,b) - >a,b를 비교하여 큰값을 생성.
●Math.pow(value_num, Index) -> 숫자value를 넣고 Index숫자를 넣으면 value값의 index제곱만큼의 숫자를 얻을 수 있다.
●Math.round(Index_double) -> 입력값을 반올림한 수와 가장 가까운 정수 값을 반환.
cf)예를들어 Math.round() -> Math.round(circleArea*100)/100.0 이런식으로 쓰면 반올림을 원하는 값을 받을 수 있다.
●Integer.parseInt(string_Index); ->string을 int형으로 변환.c언어의 atoi()와 같다.
●String.valueOf();-> 올바른 형식을 입력하면 스트링으로 바꿔줌.
--- cf)String s = String.valueOf(); 은 String s = i + "";를 써도 같은 효과를 받을 수 있다.
●배열주소명.length; -> 배열의 길이를 받아줌. 자세한건 '배열'문서에 있음.
●Arrays.sort(array)
블럭 안에서 선언한 변수들은 전부 나올때 초기화 된다. c언어에서 지역함수 사용할때와 비슷.
cf)main블럭(블럭=={})안에 선언하면 main을 나오면 초기화, for문 블럭안에 선언하면 for나오 면 초기화...등
c언어와 달리 string일때랑 int일때 초기값설정을 안해줘도 c와 달리 쓰레기값이 안생기고 string은 null int 는 0이 나옴.
package 명은 소문자로만, class명은 단어맨앞은 대문자. 변수명은 처음 단어는 소문자고 뒤로 나오는 단어들은 대문자인 camel case