자바
팩토리얼(Factorial)
선택정렬
public class Main {
public static void main(String[] args) {
int [] select = {7,9,4,3,1};
int temp;
for (int i= 0; i< select.length; i++) {
temp = select[i];
for (int j= i+1; j< select.length; j++) {
if (select[i] > select[j]) {
temp = select[i];
select[i] = select[j];
select[j] = temp;
}
}
System.out.println(""+select[0] + select[1] + select[2] + select[3] + select[4]);
}
}
}
삽입정렬
두번째 index를 기준으로
이전 숫자와 대소비교를 합니다.
그래서 자기의 위치를 찾습니다.
public class Main {
public static void main(String[] args) {
int [] insert = {5,4,3,2,1};
int j, b;
int temp;
for (int i= 1; i< insert.length; i++) {
j = i;
b = i;
while (j > 0) {
j = j - 1;
if (insert[b] < insert[j]) {
temp = insert[b];
insert[b] = insert[j];
insert[j] = temp;
b = b- 1;
}
}
System.out.println(""+insert[0] + insert[1] + insert[2] + insert[3] + insert[4]);
}
}
}
비트연산자
연산자 | 기능 | 사용 예 |
& (비트 AND) | 두 피연산자의 대응되는 비트가 모두 1이면 1을 반환 | a & b |
| (비트 OR) | 두 피연산자의 대응되는 비트에서 둘 중 하나가 1이거나 모두 1인 경우 1을 반환 | a | b |
^ (비트 XOR) | 두 피연산자의 대응되는 비트에서 서로 같은 경우에는 0을, 다른 경우에는 1을 반환 | a ^ b |
~ (비트 NOT) | 피연산자의 비트를 뒤집음 | ~ a |
<< | a의 2진수 표현을 b 비트만큼 왼쪽으로 이동함. 오른쪽은 0으로 채움 | a << b |
>> | a의 2진수 표현을 b 비트만큼 오른쪽으로 이동함. 오른쪽 남는 비트는 버림 | a >> b |
>>> | a의 2진수 표현을 b 비트만큼 오른쪽으로 이동함. 오른쪽 남는 비트는 버리고, 왼쪽은 0으로 채움. | a >>> b |
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
//384= 128 + 256
int num[] = {1,2,4,8,16,32,64,128,256,512,1024,2048};
for (int i=0; num.length > i; i++) {
if ((384 & num[i]) > 0) {
System.out.println(num[i]); //128 256 }
}
}
}
자바
객체지향언어
객체지향언어는 기존의 프로그래밍언어와 다른 전혀 새로운 것이 아니라, 기존의 프로그램밍 언어
에 몇가지 새로운 규칙을 추가한 보다 발전된 형태의 것이다. 이러한 규칙들을 이용해서 코드간에 서로
관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능하다
주요특징은 코드의 재사용성, 코드의 관리가 용이, 신뢰성이 높은 프로그래밍을 가능하게 한다.
기존의 프로그래밍 언어에 몇가지 새로운 규칙을 추가한 보다 발전된 형태의 것이다. 이러한 규칙들을 이용해서 코드간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성
클래스
객체를 정의해놓은것 또는 클래스는 객체의 설계도 또는 틀 이라고 정의
객체란 무엇인가
물리적으로 식별가능한 것 우리 주위에서 볼 수 있는 모든 것이 객체라고 할수 있다.
오버로딩
같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
메소드 오버로딩과 생성자 오버로딩이 있다 그러나 둘다 같은 개념이다.
같은이름의 함수를 여러 개 정의하고 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출
에 응답하게 하는것이다.
오버라이딩
상위 클래스가 가지고 있는 메소드를 상속 밭을 때 자식 클래스에서 메소드를 재 정의 하는 것을
말한다.
상속
상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다
Final 키워드
변수 - final 적용된 변수의 값은 초기화된 이후에는 변경이 불가능하다.
메서드 - final로 선언된 메서드는 하위클래스에서 오버라이드를 할 수 가 없다.
클래스 - final로 선언된 클래스는 하위 클래스를 만들 수 없다.
static 필드
1)특정 클래스를 통해서 만들어지는 모든 객체에서 공통으로 사용하는 필드
2) static 필드의 내용은 정적메모리영역에 1개만 존재한다.
3) 메인메서드가 동작하기 전에 JVM의 startUp 코드에 의해서 미리 생성된다. 개별 객체를 생성하지 않아도 메모리에 만들어져 있다.
4) 하지만 클래스의 멤버이므로 접근권한(public,private)의 영향을 받는다.
5) 일반메서드 및 static메서드 내부에서 자유롭게 접근할 수 있다.
static 메서드==> static 필드만 접근할 수 있는 메서드
2) 일반 필드는 접근할 수 없다( 이유는 this를 사용할 수 없기 때문이다)
3) 이곳에서 static 필드의 내용값을 변경시키는 루틴을 작성
4) 클래스에서 제공하는 유틸리티(utility) 메서드를 작성하기에 적합
개별 멤버변수와 상관없는 로직으로 구현된 메서드
5) 클래스명.static메서드()
객체명.static메서드()
6) static 메서드 내부에서 static 메서드만 호출가능하다
일반 메서드 호출하면 error( 일반메서드가 호출되면 일반멤버변수가 변경될 수 있다)
7) 객체 생성 없이 호출 할 수 있다.
추상클래스
Abstract Class
- 추상메서드를 하나 이상 가진 클래스
- 하위 클래스를 참조하여 상위 클래스의 객체를 생성
- 하위 클래스를 제어하기 위해 사용
--delion
new 연산자로 인스턴스 생성 불가능.
추상 클래스는 추상 메소드를 가질 수 있다. 추상메소드는 하위에서 반드시 오버라이드 하라는 강제성을 가지는 메소드이다.
[출처] 추상클래스(Abstract Class)|작성자 메론소다
[출처] 3.인터페이스 vs 추상클래스 +추상메소드|작성자 dandelion