목록자바 (22)
천천히 빛나는
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..
상속 (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..
배열 동일한 자료형(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..
메소드 (method) 어떤 특정 작업을 수행하기 위한 명령문의 집합 (함수와 비슷하다) 중복되는 코드를 메소드로 만들어 코드의 반복 사용을 피할 수 있다. public static void main(String[] args) { // main method } main() 메소드는 자바 프로그램을 실행 및 종료하는 기능을 지닌다 public class Application1 { public static void main(String[] args) { System.out.println("main() 시작!"); Application1 app1 = new Application1(); app1.methodA(); System.out.println("main() 종료!"); } public void method..
리터럴(literal) & 변수 리터럴: 변하지 않는 데이터(값) 변수: 값을 담을 수 있는 공간 int age = 30; final int MAX_AGE = 100; String str = "text"; 왼쪽(age)가 변수, 오른쪽(30)이 리터럴이다 RAM이라는 메모리 공간 (유한한 공간)에 변수를 할당할 때 많은 메모리를 차지않도록 담고자 하는 리터럴 크기에 맞는 절절한 타입을 지정해주어야 한다. - 리터럴 실제 코드에서 확인하기 위해서 프로젝트와 클래스를 생성하였다 (https://shine-slowly.tistory.com/12) 여기서 com.greedy.section.leteral의 경우에는 패키지이다. 패키지는 클래스의 모음집이다. 이름이 충돌하는 클래스들이 있을 수 있는데 이럴 때 패키..