목록JAVA (25)
천천히 빛나는
System.out.println(1); System의 out 이라는 변수에 담겨 있는 객체가 가진 메소드 println을 호출하는 코드이다. System을 인스턴스화한 적이 없음에도 out에 접근할 수 있는 것은 out이 static이기 때문이다. import java.lang.*; public class LibraryDemo1 { public static void main(String[] args) { System.out.println(1); } } import java.lang.*;은 자바 프로그래밍을 위한 필수적인 클래스들을 모아둔 패키지이다. 이를 명시적으로 적어주지 않아도 자바는 자동으로 java.lang.*을 import하게 된다. API (Application Programming Inte..
클래스 패스 class Item{ } class ClasspathDemo { } 이와 같이 ClasspathDemo.java 라는 파일을 만들고 컴파일을 하면 ClasspathDemo.class와 Item.class 파일이 생성되게 된다. 이 중에서 Item.class 파일을 lib이라는 하위 폴더를 생성하고 이동시킨 후 ClasspathDemo를 실행시키면 경로 오류가 난다. I tem.class 파일이 현재 디렉터리에 존재하지 않기 때문에 찾을 수 없다는 오류 메세지를 볼 수 있을 것이다. java -classpath ".;lib" ClasspathDemo2 옵션 classpath로 사용할 클래스의 위치를 가상머신에게 알려줄 수 있다. .은 현재 디렉터리에서 클래스를 찾는다는 뜻이고 ;은 경로와 경로..
전에 다룬 내용이지만 복습 중 자세히 작성하는 것이 좋을 것 같다고 판단되어 static에 대해 다루기로 하였다. package javatutorials.numberstring; import java.util.Scanner; // 입력관련 import java.io.*; // File 관련 class Calculator { static double PI = 3.14; // 클래스 변수 static int base = 0; int left, right; // 인스턴스 변수 public void setOprands(int left, int right){ this.left = left; this.right = right; } public void sum(){ System.out.println(this.left..
1. 메소드 오버로딩이란 무엇인가? 하나의 메소드가 다양한 파라미터를 받을 수 있도록 하는 것 2. 클래스 변수를 초기화하는 블록 정적 초기화 블럭 정적(static)은 고정된이란 의미를 가지고 있다. 정적 멤버는 클래스에 고정된 멤버로, 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. public class Coffe{ static String kind = “과테말라 안티구아”; static int price = “10000”; static String info; static{ info = kind + “,” + price; } } 3. 인스턴스 변수와 클래스 변수의 차이점 인스턴스 변수는 객체마다 고유한 값을 가지지만 클래스 변수는 모든 객체가 공유하는 값을 가진다 public clas..
상속 (Inheritance) 부모 클래스가 가지는 멤버(필드, 메소드)를 자식 클래스가 물려 받아 자신의 멤버인 것처럼 사용할 수 있도록 만든 기술이다. (단, 생성자는 물려 받지 않음) public class Academy extends Company { // Academy가 Company의 속성을 물려받음 } 자바는 단일상속(자식 클래스는 하나의 부모 클래스만 가지는)만 지원한다. (c++은 가능하다) 부모 클래스는 extends와 같이 표시하지 않는다. class Calculator { int left, right; public Calculator(int left, int right){ // 기본 생성자 없음 this.left = left; this.right = right; } public vo..
열거 타입 (enum) 상수(constant)의 집합 클래스 public enum Subjects { // 작성된 순서대로 0부터 값이 자동 부여 JAVA, // 0, Subjects Subjects.JAVA = new Subject(); ORACLE, // 1 JDBC, // 2 HTML, //3 CSS, //4 JAVASCRIPT // 5 } enum 키워드를 활용하여 열거 타입을 선언할 수 있다. JAVA, ORACLE, JDBC의 값들은 enum 타입의 인스턴스를 가지고 있고, Subject enum은 6개를 담고 있다 public class Subjects { // 정수 열거 패턴 public final static int JAVA = 0; public final static int ORACLE..
객체 지향 언어의 4대 특징 1) 추상화 : 필요한 부분만 고려하여 복잡한 시스템을 역할에 따라 나누어 단순화할 수 있다 2) 캡슐화 : 객체 내부 작동 방식을 노출하지 않고 작업을 수행한다 3) 상속 : 유사한 기능을 가진 코드를 재사용할 수 있다 4) 다형성 : 정해진 규약에 따라 구현된 객체들을 활용하여 유연하고 확장 가능한 코드를 작성할 수 있다 이 부분이 지금 당장 이해되지 않아도 괜찮습니다! 클래스 (Class) 객체의 속성과 기능을 추상화한 것으로 인스턴스 (객체)를 생성할 목적으로 작성해놓은 소스코드 작성단위이다 class Student { // Student의 속성(관리 해야 될 다양한 자료형의 상태값) int studentId; String name; char gender; String..
자바의 특징 1) 객체 지향 언어 2) 메모리를 자동으로 관리 3) 멀티 스레드 지원 4) 포인트를 지원하지 않음 자바의 기본 자료형의 개수 : 8개 byte, short, int, long, float, double, char, boolean long 자료형의 접미사 : L 상수 선언 시 사용할 수 있는 키워드: final int intNum = 10; double doubleNum = 3.14; double result = intNum + (int)doubleNum; result 변수 값: 13.0 int num1 = 10; int num2 = 3; int result = num1 % num2; result 변수 값: 1 double dNum = 5.5; int iNum = 7; boolean isT..
배열 동일한 자료형(Data Type)의 묶음 배열은 heap 영역에 new연산자를 통해 할당된다 1차원 배열 int[] arr = new int[5]; 1차원 배열을 선언하고 할당하는 코드이다 변수 arr는 stack에 쌓이고, 배열 공간은 heap에 존재하게 된다 int 배열 값은 기본적으로 0으로 저장된다 for(int i = 0; i < 5; i++) { arr[i] = i * 10; } int 형 5칸의 배열에 각각 값을 대입하는 작업을 반복문을 활용하여 구현할 수 있다 System.out.println(Arrays.toString(arr)); 배열 값을 한번에 출력할 수 있는 코드이다. 즉, [0, 10, 20, 30, 40]가 출력된다 int [] iArr; char cArr[]; Sring..
if - else if 문 if (조건식1) { 수행문; ... } else if(조건식2) { 수행문; ... } else { 수행문; ... } 기본 문법은 다음과 같다 public class Application1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("정수 하나를 입력하세요: "); int num = sc.nextInt(); if (num == 0) { System.out.println("입력하신 숫자는 0 입니다"); } else if (num % 2 == 0){ System.out.println("입력하신 숫자는 짝수입니다"); } else { System.o..