목록Language/Java (58)
한 걸음 두 걸음
static으로 지정된 변수나 함수는 프로그램이 시작될 때 생성되고 프로그램이 종료될 때 소멸됩니다. final으로 지정되면 변경이 불가능합니다. static a = 1; a++; //전역변수처럼 사용됩니다. 어디서든 사용가능합니다. static final a = 1; a++; //불가 ** Static으로 지정된 것은** 객체를 만들기도 전에 생성되므로(프로그램 시작 시) 클래스 내부의 static 메소드나 변수는 클래스명을 이용하여 접근할 수 있습니다. Class A{ static int a = 10; } public class Main { public static void main(String[] args) { System.out.println(A.a + ""); //10 출력 } } 단, stat..
접근제한자 public 클래스내부 / 동일패키지 / 하위클래스 / 그 외에서 모두 사용할 수 있습니다. private 클래스내부에서만 접근이 가능합니다. protected 클래스내부 / 동일 패키지 / 하위클래스 에서만 접근이 가능합니다. default(생략되었을 때 사용되는 접근자)는 클래스내부와 동일패키지에서 사용할 수 있는데 많이 사용하지는 않습니다. 웬만하면 명시하는 것이 좋은 코드입니다. 주로 클래스 내부의 변수는 private로, 함수는 public으로 설정하며 내부 자원을 지키도록 사용합니다. (getter setter를 사용합니다.)
메소드 클래스 내부에 위치한 함수를 메소드라 하는데 JAVA는 객체지향개발언어이므로 모두 클래스 내부에 위치합니다. 때문에 모든 함수는 메소드가 됩니다. 메소드 구조 메소드 구조는 다음과 같습니다. public class 클래스명{ 접근제한자 반환타입 메소드명(파라미터){ ... return 반환할 값/수식 } }이를 보다 이해하기 쉽게 작성하자면 다음과 같습니다. public class MyClass{ public int myMethod(int param){ return param } }이러한 형식으로 사용하실 수 있으며, 메소드의 이름은 보통 소문자로 시작하는데 동사로 시작해서 명사나 형용사가 옵니다. 그냥 이해하기 쉽게 camelCase를 지켜서 작성하시면 좋습니다. static 함수 / 정적메소드..
Map 개념 Map은 mapping의 약자인 자료구조로, ("Key","Value") 값으로 pair를 이룹니다. Java에서 순서가 있는 자료나 집합공간을 만들기 위해 Collection를 제공하나, 순서가 없는 Map과 같은 것은 별도로 제공합니다. Map 특징 데이터를 키를 통해 관리합니다. 인덱스가 없고 데이터의 순서가 없습니다. Map의 종류 HashMap : 동기화를 보장하지 않는 Map클래스로, value에 null을 저장할 수 있습니다. 순서를 보장하지 않으나 해싱을 사용하므로 빠릅니다. (싱글스레드는 HashMap을 사용하지만 멀티스레드 및 동기화가 필요하다면 MapTable을 사용합니다.) TreeMap entry를 트리형식으로 저장하기 때문에 순서를 보장합니다. LinkedHashMa..
배열의 초기값 int i = new int[3];이와같이 배열을 만들어 사용할 땐, 따로 값을 지정해주지 않는 이상 default값이 들어가게되는데 int의 경우는 0, char의 경우는 '0' String의 경우는 null boolean의 경우는 false double의 경우는 0.0 유저가 만든 클래스의 객체 = null 이 들어갑니다. for loop int[] i = new int[4]; for( int item : i ){ System.out.println(item); //i의 0 인덱스부터 3까지 모두 차례대로 돌아가며 프린트합니다. }이는 int[] i = new int[4]; for(int item = 0; item < i.length(); i++){ System.out.pr..
Math Class Math.pow 제곱수 구하기 Math.sqrt 제곱근 구하기 Math.max(num1, num2) // 최댓값 Math.min(num1, num2) // 최솟값 Math.PI, Math.E = 수학적 상수 정의 등이 있습니다. 더 자세한 내용과 사용 예시는 https://docs.oracle.com/javase/9/docs/api/java/math/package-summary.html 공식 문서를 참고하시는 것이 좋습니다.
자바는 변수와 리터럴이 같은 타입으로 맞추어주어야합니다. 예시 ) int a = 1; char b = 'c'; double = 3.14;이 때는 형변환이 필요없지만 묵시적캐스팅 변수의 자료형과 할당되는 값의 자료형이 다를 경우 정보의 손실이 없으면 자동적으로 바뀌어 할당됩니다. long l = 5;일반적으로 5는 int형입니다. 하지만 들어가는 변수가 long이므로 정보의 손실이 일어나지 않아 그대로 long으로 바뀌어 들어갑니다. double d = 3.14F3.14는 Float형 자료이지만, double형으로 자동으로 바뀌어 d에 저장됩니다. 명시적 캐스팅 int i = (int) 3.14;자동으로 넣기에는 정보의 손실이 발생하기 때문에 int로 바꾸기 위해서는 명시적으로 형변환을 시켜..
문자열이란? 문자가 연속되게 모인 것입니다. 일반적으로 String으로 쓰며 String에는 유니코드 문자라면 모두 사용가능합니다.(한글 및 한자까지 모두 가능) String str = "abc ";//공백가지 모두 포함합니다.String리터럴 = "" chat리터럴 = '' String 연산 스트링 결합String s1 = "a"; String s2 = "b"; String s3 = "c"; String s4 = s1+ s2+ s3; // "abc"가 됩니다.예전에는 효율성을 이유로 StringBuilder를 썼으나, 요즘은 성능이 좋아져서 이렇게 사용해도 문제가 없습니다. toUpperCase() s4 = s4.toUpperCase(); // s4 ="ABC"가 됩니다. toLowerC..