JAVA.1. 이클립스와의 첫 만남

lsw·2021년 5월 15일
0

JAVA

목록 보기
1/1
post-thumbnail

1. 이클립스 vs cmd

학습 방법을 기존 메모장 → cmd창에서 java machine 컴파일 → class파일 열기 방법에서

java 컴파일러인 eclipse 를 이용하는 방법으로 바꾸었다. 이에 프로젝트 - 패키지 - 클래스로 이어지는 서브 개념이 보다 가시화 되었고 들여쓰기등의 어려움이 사라졌다.


2. 객체지향 언어 JAVA

C++를 통해 객체(Object, Instance)의 구성요소, 기능, 개념등에 대해서 배웠고, 이제 JAVA라는 거대한 객체들의 세계에 발을 디디게 되었다. 자바 백엔드 개발자를 목표로 하고 있음에 JAVA라는 순수언어에 대한 높은 이해는 불가분적인 것이니 힘차게 출발해 보겠다. spring, spring boot framework로 넘어가기에 앞선 전초전이라고 생각하자!


3. 언어의 문제가 아니다

그간 프로그래밍 언어를 다섯개정도 접해 보니 새로운 언어를 배울 때 마다 점차 익숙하고 쉽게 다가가 지는 경험을 하고 있다. 앞으로는 언어가 얼마나 어렵나의 문제라기 보다 프로그래밍, 컴퓨터 자체에 대한 본질을 이해하고 있는가에 대한 문제라고 생각된다.

가령 구글링을 통해 정보를 얻을 때

something in python == something in java == something in C = something in C++ ..같이 진행하면 대부분의 언어는 어떤 특정 기능에 대해 상통하는 부분이 존재하기 때문에 검색이 쉽다는 것!


4. 비슷한 이야기

C 와 C++에서 배웠던 동일개념을 JAVA에선 어떻게 활용할 수 있는지 정도만 간략하게 리뷰해 보자





4.1. If

package Tests; // JavaStudy - Tests(package)

// If class contains "main" method
public class If {

	public static void main(String[] args) {
		int num = 120;
		if(num > 0 && (num % 2 ) == 0) 
// excute following sentence if condition is true
			System.out.println("양수이면서 짝수");
		
		int n1 = 5, n2 = 7;
// if연산자
		int big = (n1 > n2)? n1 : n2; // 더 큰 수 저장
		int diff = (n1 > n2)? n1-n2 : n2-n1; // 두 수의 차 절대값 저장
// 출력
		System.out.println("bigger number is " + big);
		System.out.println("diff value of difference bet two number is " + diff);
			}
}



4.2. For

package Tests;
import java.util.Scanner; // to get input value from user

// class name "For"(Camel case)
public class For {

	public static void main(String[] args) {
		int product = 1;
// 1 ~ 10까지 곱셈 계산
		for(int i =1 ; i < 11 ; i++) {
			product *= i;
		}
		System.out.println("multi production 1 through 10 = " + product);
		
		int num; 
		Scanner sc = new Scanner(System.in); // Instantiate Scanner class instance
		System.out.print("Enter your number : ");
		num = sc.nextInt(); // input value from user
// 구구단
		for(int i = 1 ; i < 10 ; i++)
			System.out.println(num + "*" + i + "=" + num*i + "\n");
	}

}



4.3. While

package Tests;

// class "While"
public class While {

// call defined methods(addition / printNumber / printNumber2 / printNumber3)
	public static void main(String[] args) {
		System.out.println("sum of 1 through 99 = " + addition(1,99)); 	
		printNumber(1, 100);
		System.out.println();
		printNumber2(1,100);
		System.out.println();
		printNumber3();
	}
	/* public static... 
     methods that does not need instantiation
     accessible in any point within same package boundary
   */
// sum num1 through num2
	public static int addition(int num1, int num2) {
		int sum = 0;
		while(num1 <= num2) {
			sum += num1;
			num1++; // for the break of the loop
		}
		return sum;
	}
// printout num1 through num2
	public static void printNumber(int num1, int num2) {
		while(num1 <= num2) {
			System.out.print(num1 + " ");
			num1++;
		}
	}
// printout num2 through num1
	public static void printNumber2(int num1, int num2) {
// do ~ while 		
do {
			System.out.print(num2 + " ");
			num2--;
		}while(num2 >= num1);
	}
// sum all possible numbers which fufill the condition 
	public static void printNumber3() {
		int num=1;
		int sum =0;
		while(num <= 1000) {
			if(num % 2 == 0 && num % 7 == 0) {
				System.out.print(num + " ");
				sum += num;
			}
			num++;
		}
		System.out.println();
		System.out.println("sum of specific numbers = " + sum);
	}

}



4.4. repetition

package Tests;

//class "repitition"
public class repitition {

	public static void main(String[] args) {
	
// call the methods
		findOut72();
		System.out.println();
		method1();
		method2();
	}
	
// definition of methods
// find the combination which makes 72 by their production
	public static void findOut72() {
// label to break the loop at one time		
  outer: for(int i = 2 ; i < 10 ; i++) {
          for(int j =1 ; j < 10 ; j++) {
// find the first fufilling combination of i and j, and break the whole loop(outer)
	    	 if(i*j == 72) {
            System.out.println("first product combination of 72 : " + i + "*" + j + "=" + i*j); 
            break outer; // go to label and break it
			    	 }
			     }
		}
	}
// 짝수 구구단
	public static void method1() {
		for(int i = 2 ; i < 10 ; i++) {
			for(int j = 1 ; j < 10 ; j++) {
				if(i % 2 == 0) 
					System.out.println(i + "*" + j + "=" + i*j);
			}
			if(i % 2 == 0)
			System.out.println("-------\n");
	   }
	}
// 합이 9가 되는 콤비네이션
	public static void method2() {
		for(int i =0 ; i < 10 ; i++) {
			for(int j = 0 ; j < 10 ; j++) {
				if(i + j == 9)
					System.out.println(i + "+" + j + "=" + (i + j));
			}
		}
	}

}



4.5. Switch

package Tests;

public class Switch {

	public static void main(String[] args) {
		int num = 24;
		switch(num / 10) {
		case 0:{
			System.out.println("0이상 10미만의 수");
			break;
		}
		case 1:{
			System.out.println("10이상 20미만의 수");
			break;
		}
		case 2:{
			System.out.println("20이상 30미만의 수");
			break;
		}
		default:
			System.out.println("음수 혹은 30이상의 수");
		}

	}

}



4.6 Break and Continue

package Tests;

public class BreakContinue {

	public static void main(String[] args) {
		int count=0;
		for(int i =1 ; i < 100 ; i++) {
			if(i % 5 !=0 || i % 7 !=0)
				continue; // not the target
			count++; // target
			System.out.print(i + " "); // target print out
		}
		System.out.println("\ncount = " + count);

		oddSum();
	}
// 홀수만을 더했을때 그 값이 최초로 1000을 초과하는 경우에 대해서 
	public static void oddSum() {
		int sum =0;
		int i = 0;
		while(true) {
			if(sum > 1000) {
				System.out.println(i + "을 더했을때 최초로 1000이 넘어갑니다.");
			    System.out.println("그리고 그 값은 " + sum + "입니다.");
			    break;
			}
			if(i % 2 ==1)
				sum += i;
			i++;
		}
	}

}



4.7. Recursion(method의 재귀)

package Tests;
import java.util.Scanner;
public class recursion {

	public static void main(String[] args) {
		int num1, num2;
		Scanner sc = new Scanner(System.in);
		System.out.print("Enter number1 = ");num1 = sc.nextInt();
		System.out.println("2 power " + num1 + " = " + basePower(2, num1));
		System.out.print("Enter number2 = ");num2 = sc.nextInt();
		System.out.println(num2 + " 의 이집법 수 : " + binary(num2));
	}
// base^power calculating method
	public static int basePower(int num1, int num2) {
		if(num1 == 0) {
			System.out.println("0은 base가 될 수 없습니다.");
			return -1;
		}
		else if(num1 == 1) 
			return 1;
		else if(num2 == 0) {
			return 1;
		}
		return num1*basePower(num1, --num2);
	}

// convert Decimal number into binary number
	public static int binary(int num) {
		int remain; // initialized every time the method is called
		if(num / 2 == 0) {
			return 1; // 가장 첫글자에 해당
		}
		remain = num % 2; // decimal -> binary : divided by 2 
		num = (int)((num - remain) / (double)2);
		return remain + 10*binary(num); // recursion
	}
}



4.8. Methods

package Tests;
import java.util.Scanner;

public class Method {
	public static void main(String[] args) {
		int num1, num2;
		Scanner sc = new Scanner(System.in);
		System.out.print("Enter num1 : ");
		num1 = sc.nextInt();
		System.out.print("Enter num2 : ");
		num2 = sc.nextInt();
		
// call the methods
		operation(num1, num2);
		System.out.println();
		int diff = diff(num1, num2);
		System.out.println("num1 and num2 diff = " + diff);
		System.out.println();
		System.out.println("scale = " + scale(2.15));
		System.out.println("outerLine = " + outerLine(3));
		for(int i = 1 ; i <= 100 ; i++ ) {
			if(primeNumber(i))
				System.out.print(i + " ");
		}
		
		
	}
// operation method
	public static void operation(int num1, int num2) {
		System.out.println("num1 + num2 = " + (num1 + num2));
		System.out.println("num1 - num2 = " + (num1 - num2));
		System.out.println("num1 * num2 = " + num1*num2);
		System.out.println("num1 / num2 = (" + num1/num2 + ", " + (double)num1/num2 + ")");
	}
// absolute value of difference bet two numbers method
	public static int diff(int num1, int num2) {
		int diff = (num1 > num2)? num1-num2 : num2 - num1;
		return diff;
	}
// get circle scale method
	public static double scale(double radian) {
		return radian * radian * 3.14;
	}
// get outerline of circle method
	public static double outerLine(double radian) {
		return 2 * radian * 3.14;
	}
// is it primenumber? method
	public static boolean primeNumber(int num) {
		for(int i = 2 ; i <num ; i ++) {
			if(num % i ==0) {
				return false;
			}
		}
		return true;
	}
}



4.9. Constructor

package Tests;

// Triangle class
class Triangle{
// instance variables(Fields, Member variables)
	double height;
	double bottom;	
// Constructor : for the initialization of instance variables
	public Triangle(double hei, double bot) {
		height = hei;
		bottom = bot;
	}
// other methods of class "Triangle" that can access to member variables
	public void changeHeight(double hei) {
		height = hei;
	}
	
	public void changeBottom(double bot) {
		bottom = bot;
	}
	
	public double scale() {
		return height * bottom / (double)2;
	}
	
}

public class Constructor {

	public static void main(String[] args) {
// declare reference variable and construct a instance
		Triangle tri = new Triangle(2.5, 5.5); // refer the address of instance
		tri.changeHeight(3); // access to Triangle class methods from instance
		tri.changeBottom(5);
		System.out.println("scale of the triangle = " + tri.scale());
	}

}



5. 느낀점

중도 많은 고민이 있었다. 동기생들이 목표로 하는 금융공기업을 준비할까, 프로그래밍 역량이 덜 중시되는 PM을 준비할까. 너무 복잡했고 어려운 결정들이었지만 결국 프로그래밍에 대한 흥미가 꿈틀거림에 저항할 수 없었다. 당분간 자바라는 순수 언어에 몰입해볼 예정이다.

profile
미생 개발자

0개의 댓글