본문 바로가기

IT

(25)
09_클래스 : 접근제한자(Access Modifier), static 멤버(정적 멤버), 싱글톤(singleton), final, 상수, getters and setters 00. 접근제한자(Access Modifier) - public > protected > default(생략) > private - 클래스에서는 protected와 private 접근제한자를 사용할 수 없다. public protected default(package friendly) private 아무나 접근 가능 나 + 동일한 패키지의 클래스 + 자식 클래스 동일한 패키지의 클래스 나만 접근 가능 01. static 멤버 (정적 멤버) - static멤버란 클래스에 고정된 멤버를 뜻한다. - 필드와 메소드 선언시 static 키워드를 붙여서 만든다. - 객체를 따로 생성하지 않고 클래스가 메모리로 로딩되었을 때 바로 사용할 수 있다. - 클래스이름.필드; 클래스이름.메소드; 의 형태로 도트(.) 연산..
08_클래스 : 필드, 생성자, 메소드 01. 클래스란 - 어떤 객체를 메모리에서 사용하기 위해서는 먼저 그 객체를 만들어야 한다. 객체를 만들기 위해 필요한 설계도가 클래스이다. - 모든 클래스는 반드시 하나 이상의 생성자를 가지고 있다(생성자는 오버로딩 될 수 있다). 02. 클래스의 구성 멤버 - 클래스는 필드, 생성자, 메소드로 구성되어 있다. 자세한 내용은 아래에서 살펴본다. 1) 필드 - 객체의 고유 데이터, 상태 정보를 저장하는 곳 - 블록을 벗어나면 메모리에서 제거되는 변수와 달리 생성자와 메소드 전체에서 사용되며 객체가 소멸하지 않는 한 계속 존재한다. 필드는 선언과 동시에 초기화 될 수도 있고 그렇지 않을 수도 있다. 1 2 3 4 5 6 7 8 9 10 public class Car { //필드 String company ..
07_배열 01. 참조타입 배열 앞서, String 타입의 데이터는 문자열의 내용이 같으면 최초에 생성한 객체를 재활용한다고 한 적이 있다. String 타입의 배열도 마찬가지이다. strArray[0] = "Java"; 라는 코드에 의해, "Java"라는 String 객체가 Heap 영역에 생성된다. strArray[1] = "Java"; 라는 코드는 새 문자열을 또 만드는 것이 아니라 위에서 생성된 "Java"라는 문자열을 재사용한다. 그러나 strArray[2]의 값은 new String을 사용하여 초기화시키고 있으므로 새로운 "Java"라는 문자열이 생성된다. == 연산자는 객체의 주소값 자체를 비교하며 .equals는 문자열의 내용만을 비교한다고 하였다. 따라서 아래의 코드는 순서대로 [true, fals..
06_참조형 데이터 타입 01. 참조형 데이터 타입(reference type) - 객체(object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다. - 객체타입에서 ==, != 연산자는 같은 객체를 참조하는지 아니면 다른 객체를 참조하는지를 비교한다. 즉, 주소값을 비교한다고 보면 된다. 02. 메모리 구조 Static 영역(메소드 영역) Heap 영역 Stack 영역 System 영역 - JVM이 시작할 때 생성되며 모든 스레드가 공유하는 영역 - 객체와 배열이 생성되는 영역 - 스택영역의 변수나 다른 객체의 필드가 이 곳을 참조 - 더 이상 참조되지 않는 객체는 Garbage Collector에 의해 자동으로 제거된다 - 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당 됨 - 변수가 초..
05_중복 없이 로또 번호 추출(조건문, Math.random()) 조건문과 Math.random() 함수를 사용하여 중복 없이 로또 번호를 추출해보았다. 자바를 공부하는 사람이면 모두 한번 쯤은 풀어봤을 것이다. 다양한 방법이 있겠지만 나는 아래와 같은 방법을 사용했다. 1. 크기가 6인 int형 배열을 만든다. 2. 배열의 크기만큼 반복문을 돌려 난수를 발생시키고, 그 난수를 배열에 넣는 과정을 반복한다. 참고: - Math.random() 함수는 0.0 이상, 1.0 미만의 난수를 발생시킨다. - 따라서 Math.random()에 45를 곱하면 0.0 이상 45.0 미만의 난수가 발생하는데 - 로또번호는 1~45이므로 마지막에 1을 더해주면 1.0이상 46.0 미만의 난수를 얻을 수 있다. - 그것을 int형으로 변환하여 최종적으로 1 이상 46 미만인 정수가 나오..
04_String 연산자 01. String 객체 비교 == 연산자나 .equals() 메소드를 사용하여 비교할 수 있다. == 연산자는 객체가 동일한가를 비교하고, equals() 연산자는 문자열의 내용만 비교한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class StringEqualsExample { public static void main(String[] args) { String strVar1 = "Lyon"; String strVar2 = "Lyon"; String strVar3 = new String("Lyon"); System.out.println(strVar1 == strVar2); System.out.println(strVar1 == strVar3); System.out...
03_정확한 계산 https://lyon69003.tistory.com/14 01_정수타입 - 자바의 정수형 데이터 타입으로는 byte, char, short, int, long이 있다. - 그 중 int를 기본 정수형이라고 한다. 모든 정수형은 연산시 int형으로 변환되어 처리되며 결과도 int형이다. 01. 바이트 타입 : - 바.. lyon69003.tistory.com 01. 데이터 범위 위 포스팅에서 살펴본 것 처럼, 해당 데이터타입이 나타낼 수 있는 범위를 초과하면 변수에 쓰레기값이 들어가게 된다. 그러면 원하는 결과를 얻지 못할 수 있는 것이다. 예를 들어 아래의 연산을 시도했을 때, result변수의 값이 int형으로 나타낼 수 있는 값의 범위를 벗어나기 때문에 -294967296이라는 이상한 값이 출력된다..
02_실수형 데이터 - 자바의 실수형 데이터로는 float, double 타입이 있다. - 기본실수형은 double타입이며 float보다 더 정확하다. 01. 정밀도 테스트 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class FloatDoubleExample { public static void main(String[] args) { //실수값 저장 double var1 = 3.14; // float var2 = 3.14; float var3 = 3.14F; //이렇게 해야 float으로 인식 //정밀도 테스트 double var4 = 0.123456789123456789; float var5 = 0.123456789123456789F; System.out.print..