상속 상속 정의 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 적은 양의 코드로 새로운 코드를 작성하고 코드를 공통적으로 관리할 수 있어 생산성과 유지 보수에 크게 기여한다 상속 받기 구현방법은 키어드 ‘extends’와 함께 써주기만 하면 된다 class Parent{ int age; } class Child extends Parent{ //부모 클래스를 상속받는 자식 클래스 } ※생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. 가지 알아두어야할점은 초기화 블럭을 상속안받기는 하지만 하위 클래스 생성시 상위클래스의 블럭과 생성자가 호출되기는 한다. 단일 상속 C++에서는 다중 상속을 허용하지만 자바에서는 하나의 조상클래스만을 상속받는 단일 상속만을 허용..
클래스가 필요한 이유 배열 사용의 한계 새로운 학생이 늘어난다고 생각해보면 결국 같은 코드를 반복해야한다. 이것을 배열로 묶을 수 있는데 묶게되면 다음과 같다. String[] studentNames = {"학생1", "학생2"}; int[] studentAges = {15,16}; int[] studnetGrades = {90,80}; for (int i = 0; i < studentNames.length; i++) { System.out.println("이름:" + studentNames[i] + " 나이:"+studentAges[i]+" 성적:"+studnetGrades[i]); } 추가하는 과정에서는 크게 불편함을 못 느낄 수 있다. 그런데 이제 추가 또는 삭제하는 과정에서 학생의 이름 배열, 학..
HashSet 자바의 컬렉션중 하나로, 중복된 값을 허용하지 않는 Set인터페이스를 구현하는 클래스이다. 기본적으로 추가는 add를 통해서 값을 추가한다. 중복된 값이 들어가면 내부에서 중복여부 확인후 set에 저장하지않는다. 아래는 hashset에 중복값을 넣은 후에 결과이다. import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet hashSet = new HashSet(); hashSet.add(1); hashSet.add(2); hashSet.add(2); System.out.println(hashSet); } } //출력: [1, 2] 중복값을 제외하고 1,2만 출력되는것을 볼 수 있..
조건문 보통 if, switch를 많이 사용한다. 조건식의 연산결과에 따라 실행할 문장이 달라진다. 그에따라 프로그램의 흐름이 변경된다. if문 if(조건식){ 내용} 이렇게 이루어진다. 조건식의 내용이 참이면 내용을 수행한다. int student_score = 93; if(student_score>=90){ //student_score은 93으로 90보다 크다(true) System.out.println("A 입니다."); //조건문이 true이므로 'A 입니다.' 출력된다 } 추가로 if문은 { }생략이 가능하다. 물론 모든경우가 가능한것은 아니고 한줄의 if문만 가능하다. int student_score = 87; if(student_score>=90) System.out.println("A 입니..
연산자(Operator) - 연산을 수행하는 기호이다. - 연산을 수행하기 위해선 대상, 바로 '피연산자'가 필요하다. 산술 연산자 산술연산자는 +, -, *, /, %로 이루어져있다. 정수끼리 연산을 하면, 피연산자 중에 long이 있을경우에는 long으로 변환 후 수행, 그 외의 정수는 int로 변환된후 실행된다. 산술 연산자의 오버플로우 오버플로우(Overflow)는 변수가 자신이 표현할 수 있는 범위를 벗어나는 값을 가지게 되는 상항을 말한다. 연산자의 부분에서는 더하기나 곱하기등을 통해 표현할수있는 최대값을 벗어나면 오버플로우가 발생한다. public class Main { public static void main(String[] args) { int a = 1000000; // 1,000,0..
목표 자바의 프리미티브 타입 종류와 변수와 배열 선언하는 방법 이해하기 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 자바에는 총 8가지의 프리미티브 타입이있다. 이 표를 보자니 문득 궁금한 점이 있다. 왜 음수가 하나 더 많을까? 사실 양수와 음수 메모리는 동등하고 그렇기에 표현할수 있는 수는 동일하다. 하지만 0을 음수또는 양수 둘중 하나가 처리해야되는과정에서 양수가 담당을 하였다. 따라서 음수가 0을 제외한 수를 하나 더가짐으로써 많아 보일뿐이다. 메모리크기와 값의 범위는 어떤 관계가 ..
보통 자바에서 출력문을 생각하면 당연히 System.out.println을 생각하고 사용할 것이다. 그런데 만일 문자열출력을 100번할일이 있다고 생각을 해보자 시스템에서 System.out.println을 100번 호출하도록 할것인가? 이런 많은 호출을 자제하고자 나온 방법이 StringBuilder 출력 방식이다. public class Main{ public static void main(String[] args) { for (int i = 0; i >Hello world 백번 출력 위 방식처럼 작성하면 100번의 출력문을 호출하게된다. 이를 해결하는 StringBuilder 사용법을 알려주겠다. 간..