Language

· Language/C
1. 인덱스로 문자 접근하기#include int main() { char *s1 = "Hello"; // 포인터에 문자열 Hello의 주소 지정 printf("%c\n", s1[1]); // e: 인덱스의 1(두 번째)의 문자 출력 printf("%c\n", s1[4]); // o: 인덱스 4(다섯 번째)의 문자 출력 printf("%c\n", s1[5]); // 문자열 맨 뒤의 NULL(\0) 출력, NULL은 화면에 표시 X return 0;}s1[1]처럼 문자열 포인터를 인덱스로 접근했고,printf에서 서식 지정자 %c로 문자를 출력했다.이렇게 문자열 포인터를 인덱스로 접근하면 char와 같기 때문에 %c로 출력할 수 있다. 문자열 포인터에서 문자열 맨 뒤의..
· Language/C
문자열은 char 포인터 형식으로 사용한다. char *변수이름 = "문자열"; 형식은 위와 같다. 예제를 통해 알아보자. #include int main() { char c1 = 'a';// 변수에 문자 'a' 저장 char *s1 = "Hello";// 포인터에 문자열 "Hello"의 주소 저장 printf("%c\n", c1);// a: %c로 문자 출력 printf("%s\n", s1);// Hello: %s로 문자열 출력 return 0; } 문자 char는 'a'처럼 글자가 하나만 있는 상태를 뜻하고, 문자열 char *은 "Hello"처럼 글자 여러 개가 계속 이어진 상태를 뜻한다. 👉 문자는 1바이트 크기의 char에 저장할 수 있지만 문자열은 크기가 1바이트를 넘으므로 char에 저장할 ..
· Language/C
방법 C언어에서 문자열은 문자 배열에 저장할 수도 있다. 형태는 아래와 같다. char 배열이름[크기] = "문자열"; // 예시 char s1[10] = "Hello"; 위처럼 코드를 작성하면 크기가 10인 char형 배열을 선언하고 문자열 Hello를 할당한 것이다. 문자열 리터럴을 포인터에 할당하는 방식과는 달리 문자열을 배열에 저장하는 방식은 배열 요소 하나하나에 문자가 저장된다. 아래 사진처럼 배열 안에 일렬로 나열된 문자가 모여 문자열을 이루게 된다. 문자열의 맨 뒤에 NULL이 들어가게 된다. 주의점 1) 배열을 선언한 즉시 문자열로 초기화해야 한다는 것이다. 배열을 미리 선언해놓고 문자열을 나중에 할당할 수는 없다. char s1[10]; s1 = "Hello"; 위와 같이 코드를 작성하면..
타입 변환(Casting)을 이해하기 어렵다는 사람들이 종종 보인다. 내가 타입 변환에 대해 이해한 방식을 한 번 작성해보려고 한다. 가정 Parent라는 부모 클래스가 있고, Child라는 클래스가 Parent 클래스를 extends(상속)했다고 가정해보자. 이때 아래 사진처럼 Parent Class는 큰 물통에, Child Class는 작은 물통에 비유를 할 수 있다. 이 가정과 함께 코드를 보면서 이해해보자. Parent p = new Child(); 위 코드는 new Child()를 통하여 Child 객체를 만들어 Parent 객체에 담고 있다. 즉, 작은 물통의 물을 큰 물통에 담고 있는 것이다. 이럴 경우에는 물이 넘칠 일이 없기 때문에 옮겨담을 물통을 따로 챙기지 않아도 된다. 👉 작은 크기..
짝꿍이 추상 클래스와 인터페이스의 차이에 대해서 고민을 하는 모습이 보였다. 도와주고 싶었으나 막상 설명을 해주려니 나도 명확하게 이야기하기가 어려웠다. 클래스는 단일 상속, 인터페이스는 다중 상속이 가능하다는 것 외에는 나도 둘의 명확한 차이를 잘 모르겠더라..🤔 그래서 이번 기회에 둘의 차이를 작성해보려고 한다. 추상 클래스와 인터페이스의 차이 구분 추상 클래스 인터페이스 공통점 객체 생성 인스턴스화 할 수 없음(new 생성자를 사용하지 않음) 👉 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 함 추상 메서드 추상 메서드를 가지고 있어야 함 기능적 목적 상속 받는 클래스에서는 추상 메서드를 반드시 재정의하여 구현해야 함 차이점 정의 하나 이상의 추상 메서드를 가지는 클래스..
1회-1번) 아래 자바 코드에서 출력되는 값을 작성하시오. class Static { public int a = 20; static int b = 0; } public class Test001 { public static void main(String[] args) { int a; a = 10; Static.b = a; Static st = new Static(); System.out.println(Static.b++); System.out.println(st.b); System.out.println(a); System.out.println(st.a); } } 더보기 답: 10 11 10 20 1회-14번) public class Test002 { public static void swap(int[] a..
1회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.) class A { int a; int b; } public class Test001 { static void func1(A m) { m.a *= 10; } static void func2(A m) { m.a += m.b; } public static void main(String[] args) { A m = new A(); m.a = 100; func1(m); m.b = m.a; func2(m); System.out.printf("%d", m.a); } } 더보기 답: 2000 func1을 통해서 100*10 = 1000 func2를 통해서 1000 + 1000 = 2000 1회-2)..
1회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.) public class Test001 { public static void main(String[] args) { int aa[][] = {{45, 50, 75}, {89}}; System.out.println(aa[0].length); System.out.println(aa[1].length); System.out.println(aa[0][0]); System.out.println(aa[0][1]); System.out.println(aa[1][0]); } } 더보기 답: 3 1 45 50 89 1회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출..
1회) 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.) public class Test001 { static int[] arr() { int a[] = new int[4]; int b = a.length; for (int i=0; i 0 (2) n % 2 4회-2) 다음 Java로 구현된 프로그램을 분석하여 괄호에 들어갈 알맞은 답을 쓰시오. public class Test008 { public static void main(String[] args) { int ary[][] = new int [(1)][(2)]; int n = 1; for (int i=0; i
1회) 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. class SuperObject { public void paint() { draw(); } public void draw() { draw(); System.out.println("Super Object"); } } class SubObject extends SuperObject { public void paint() { super.draw(); } public void draw() { System.out.println("Sub Object"); } } public class Test { public static void main(String[] args) { SuperObject a = new SubObject(); a.p..
혜발아기
'Language' 카테고리의 글 목록 (2 Page)