일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C++
- vitis
- FPGA
- 실기
- boj
- SQL
- Vivado
- linux
- hdl
- 자격증
- verilog HDL
- 백준
- Zynq
- verilog
- 정처기
- chip2chip
- java
- Beakjoon
- baekjoon
- 코딩테스트
- Bus
- 리눅스
- HDLBits
- amba
- Backjoon
- Xilinx
- axi
- AMBA BUS
- 정보처리기사
- UNIX
- Today
- Total
Hueestory
java 이론 / 기출오답 본문
정처기 실기 java 파트를 위한 야매 개념 정리
객체 : 속성(변수)과 행위(메소드)를 가진 실체
클래스 : 객체를 정의하는 틀
메소드 : 클래스 내부에 존재하는 영역
인스턴스화 : 클래스로부터 객체를 선언하는 것
인스턴스 : 선언된 해당 클래스 타입의 객체
접근 제어자 : public, private, protected ...
정적 메소드 : static 또는 X
// 클래스 블록
public class 클래스명{
//메소드 블록
public static void main(String[] args){
System.out.println("Hello World!");
}
}
args = arguments (인수)
예약어 : 미리 의미가 정해진 단어
생성자 : 객체가 생성될 때 자동으로 호출되는 특수 목적의 메소드
class Person{
public String name;
public int age;
public String job;
public String getName(){
return name;
}
}
public class Test{
public static void main(String[] args){
Person man1 = new Person();
Person woman1 = new Person();
man1.name = "김철수";
System.out.println(man1.name);
System.out.println(man1.getName());
}
}
new : 새로운 객체 생성을 선언하는 예약어
Person() : 생성자
class Num{
public int a = 1;
static public int b = 2;
}
public class Test{
public static void main(String[] args){
Num x = new Num();
Num y = new Num();
y.a++;
System.out.println(x.a); // 2
y.b++;
System.out.println(x.b); // 4
x.a++;
System.out.println(y.a); // 3
x.b++;
System.out.println(y.b); // 5
}
}
a : 인스턴스 변수, 각 개체마다 별도로 존재
b : 클래스 변수, 모든 개체가 값을 공유
상속 : 공통된 요소들을 공유하기 위함
오버라이딩 : 상위 클래스 메소드를 하위 클래스에서 재정의 하는 것
class Car{
public void speed(){
System.out.println("차는 보통 180km/h까지 속력을 낼 수 있습니다.");
}
}
public class Supercar extends Car{
public void speed(){
System.out.println("슈퍼카는 보통 250km/h까지 속력을 낼 수 있습니다.");
}
public static void main(String args[]){
Car car1 = new Car();
car1.speed(); // Car의 speed()를 SuperCar의 speed()가 Overriding
}
}
출력 : 슈퍼카는 보통 250km/h까지 속력을 낼 수 있습니다.
class Car{
public void speed(){
System.out.println("차는 보통 180km/h까지 속력을 낼 수 있습니다.");
}
}
public class Supercar extends Car{
public void speed(){
System.out.println("슈퍼카는 보통 250km/h까지 속력을 낼 수 있습니다.");
}
public static void main(String args[]){
Car car1 = new Supercar();
car1.speed();
}
}
출력 : 슈퍼카는 보통 250km/h까지 속력을 낼 수 있습니다.
*부모 클래스는 항상 자식 클래스에서 자신의 메소드를 재정의 했는지 확인하기 때문에 출력은 같다
추상 메소드 : 구현부가 없고, 하위 클래스에서 반드시 오버라이딩 되는 메소드
class Car{
public void speed();
}
public class Supercar extends Car{
public void speed(){
System.out.println("슈퍼카는 보통 250km/h까지 속력을 낼 수 있습니다.");
}
public static void main(String args[]){
Car car1 = new Supercar();
car1.speed();
}
}
출력 : 슈퍼카는 보통 250km/h까지 속력을 낼 수 있습니다.
기출
2020년 3회 15번 / 2023년 1회 18번 [출력 결과]
abstract class Vehicle{
String name;
abstract public String getName(String val);
public String getName(){
return "Vehicle name:" + name;
}
}
class Car extends Vehicle{
private String name;
public Car(String val){
name=super.name=val;
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class Main {
public static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
}
}
출력 : Vehicle Name : Spark
풀이 : Car에서 오버라이딩한 getName 메소드와 파라미터가 다르므로 Vehicle의 getName() 사용
2021년 3회 1번 [출력 결과]
class Connection{
private static Connection _inst = null;
private int count = 0;
public static Connection get(){
if(_inst == null){
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count(){
count ++;
}
public int getCount(){
return count;
}
}
public class Main{
public static void main(String[] args){
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.print(conn1.getCount());
}
}
출력 : 3
풀이 : conn1, conn2, conn3 모두 동일한 인스턴스를 참조하므로 최종적으로 증가된 count 값인 3을 출력
2021년 3회 11번 [출력 결과]
public class Main{
public static void main(String[] args){
int a = 3, b = 4, c = 3, d = 5;
if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)){
a = b + c;
if(7 == b ^ c != a){
System.out.println(a);
}
else{
System.out.println(b);
}
}
else{
a = c + d;
if(7 == c ^ d != a){
System.out.println(a);
}
else{
System.out.println(d);
}
}
}
}
출력 : 7
풀이 : a == 2(F) | a == c(T) True !(c > d) True 1 == b(F) ^ c != d(T) True
→ a = b + c, a = 7
→ 7 == b(F) ^ c != a(T) True
→ System.out.println(a) 실행, 7 출력
^(XOR) : 값이 서로 다르면 True
2022년 1회 5번 [알맞은 답]
class Car implements Runnable{
int a;
public void run(){
try{
while(++a<100){
System.out.println("miles traveled :" +a);
Thread.sleep(100);
}
}
catch(Exception E){}
}
}
public class Main{
public static void main(String args[]){
Thread t1 = new Thread(new (가)());
t1.start();
}
}
정답 : Car
풀이 : Runnable 인터페이스는 run() 메소드를 오버라이딩한다
Thread의 생성자의 인자로 new Car()을 넘겨주면 해당 스레드를 시작할 때 Car 객체의 run() 메소드가 실행된다
2022년 2회 7번 [출력 결과]
class Main{
public static void main(String args[]){
int i=3, k=1;
switch(i){
case 1:k+=1;
case 2:k++;
case 3:k=0;
case 4:k+=3;
case 5:k-=10;
default : k--;
}
System.out.print(k);
}
}
출력 : -8
풀이 : break가 없기 때문에 3, 4, 5, default 모두 실행 후 k 출력
2023년 2회 14번 [출력 결과]
public class Main{
public static void main(String[] args){
String str1 = "Programming";
String str2 = "Programming";
String str3 = new String("Programming");
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
System.out.print(str2.equals(str3));
}
}
출력 : true false true true
풀이 : str1과 str2는 같은 리터럴 Programming을 참조하므로, 메모리 주소도 같다
하지만 str3은 new에 의해 생성된 문자열 객체로, 힙 메모리에 새 문자열 객체를 생성한다
따라서 str1과 str3은 서로 다른 메모리 주소를 가진다
2023 3회 12번 [오류가 발생하는 코드]
class Person{
private String name;
public Person(String val){
name = val;
}
public static String get(){
return name;
}
public void print(){
System.out.println(name);
}
}
public class Main{
public static void main(String[] args){
Person obj = new Person("Kim");
obj.print();
}
}
정답 : return name
풀이 : get() 메소드는 static으로 선언되었고 name은 Person 클래스의 인스턴스 변수이다
static 메소드는 인스턴스와 관련된 데이터에 대한 정보를 알 수 없기 때문에 name에 접근할 수 없다
'challenge > 정보처리기사 실기' 카테고리의 다른 글
2. 데이터 입 출력 구현 (0) | 2024.10.18 |
---|---|
9. 소프트웨어 개발 보안 구축 (0) | 2024.10.18 |
11. 응용 SW 기초 기술 활용 (2) | 2024.10.18 |
SQL 이론 (2) | 2024.10.16 |
정처기 실기 핵심 개념 (코딩 제외) (5) | 2024.10.02 |