[KOSTA JAVA] #Day 1 (Java 8, Eclipse, Variable, Data type, Casting, Operator)

0f1c04·2021년 2월 19일
0

KOSTA JAVA TIL

목록 보기
1/11
post-thumbnail

JAVA

JAVA 특징

  • 이식성이 뛰어남
  • 객체 지향 언어 (절차 지향 X)
  • 함수적 스타일 코딩 지원 (Lambda)
  • 메모리를 자동으로 관리
  • 다양한 어플리케이션 지원
  • 멀티 스레드
  • 동적 로딩

JDK : JRE+개발도구 (자바 프로그램을 개발하고 실행할 경우 설치)

JRE : JVM+표준 클래스 라이브러리 (자바 프로그램을 실행만 할 경우 설치)

JAVA JDK 8 설치

www.oracle.com/java/technologies/javase-downloads.html

환경변수 설정

Mac은 알아서 해줌 (개꿀)

JAVA 동작방식

자바 소스파일(.java) > 바이트 코드파일(.class) > 기계어 > 실행

Hello.java

public class Hello {
	public static void main(String[] args) {
    	System.out.println("Hello world!!!");
    }
}

javac Hello.java

java Hello


Eclipse

Mac Version : www.eclipse.org/downloads/download.php?file=/oomph/epp/2020-12/R/eclipse-inst-jre-mac64.dmg


Eclipse downloads - Select a mirror | The Eclipse FoundationThe Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.www.eclipse.org

자바 통합 개발 환경(IDE)

  • 다양한 개발 환경을 구축할 수 있도록 플러그인(Plugin-in) 설치 가능 (Android, Sping, C, C++ 등)

퍼스펙티브(Perspective)

  • 개발 프로젝트 종류별로 유용한 View들을 묶어놓은 것

뷰(View)

  • 퍼스렉티브를 구성하는 작은 창으로 여러가지 목적에 맞게 내용 보여줌
  • 자유롭게 제거 하거나 추가 가능

JAVA Project 생성

프로젝트 이름 & JRE 설정

finish

Class 생성

패키지 제거 (Default Package) & Class Name 설정 & public static void main(Steing[] args) 체크

Hello 클래스 생성


변수와 데이터타입

변수란?

데이터를 담는 그릇

package com.kosta.day01;

public class VariableTest {
   
   static int speed;
   static double speed2;

   //main이 없으면 실행 불가
   public static void main(String[] args) {
      
      System.out.println("speed=" + speed);
      System.out.println("speed2=" + speed2);
      
      System.out.println("변수는");
      System.out.println("기억장소의 이름이다");
      
      //10 저장
      
      //1. 변수 선언
      int a;
      
      //2. 변수에 값을 할당
      a = 10;
      
      //3. 값을 읽어 출력
      System.out.println(a);
      System.out.println(a + 20);
      
      //선언+할당
      int score = 100;
      score = score + 10; //대입연산자
      score += 10; //복합대입연산자
      
      //문자 + 숫자 => 문자 (연결연산자)
      System.out.println("점수는" + score);
      
      //local variable(지역변수)는 반드시 초기화를 하여야 사용 가능
      int value=0;
      int result = value + 10;
      System.out.println(result);
   }
}

변수를 선언할 때 주의할 점

  • 데이터타입을 먼저 선정해야한다.
  • 어떤 위치에 선언해야할지 결정해야한다
    그 이유는, 코드가 하나일 땐 상관없지만 코드가 여러개거나 양이 많아지게 되면
    변수가 중복되거나 다른 변수에 적용될 수 있기 때문이다.
  • 로컬(지역)변수는 꼭 ‘초기화’를 해야한다.
    로컬변수의 정의는 메소드 안에 선언한 변수를 말한다.
    여기서 말하는 ‘초기화’란 변수를 선언한 곳에 값을 주어야한다는 것이다.
    즉 { } 안에서 선언해야한다는 것을 말한다.

데이터타입이란?

데이터타입에는 정수형, 실수형, 문자형 타입이 있다.

  • 정수형 : Byte, Short, int, long
  • 실수형 : Float, double
  • 문자형 : char
  • boolean
package com.kosta.day01;

public class VariableTest3 {

	public static void main(String[] args) {
		//1.정수(byte(1)<short(2)=char(2)<int(4)<long(8)
		byte b = 127;
		short s = 32767;
		char c = 65535;
		int i = 2147483647;
		long lo = 2147483648L; //정수의 기본 리터럴이 int형이므로 뒤에 L을 붙여야 lon형으로 선언
		
		//2.실수(float(4)<double(8))
		float f = 3.14f; //실수의 기본 리터럴이 double형이므로 뒤에 f을 붙여야 float형으로 선언
		double d = 3.14;
		
		//3.논리(boolean)
		boolean bo = 10 > 20; //true or false
	}

}

데이터 형변환 (묵시적, 명시적)

package com.kosta.day01;

public class VariableTest4 {

	public static void main(String[] args) {
		//데이터의 형변환 (자동,강제)
		//1.자동(묵시적) 변환대상이 변환하려는 데이터형보다 큰 경우 가능
		byte aa = 127;
		int ii = aa;
		System.out.println(ii);
		
		//2.강제(명시적) 변환대상이 변환하려는 데이터형보다 작을 경우 명시적으로 강제 형변환
		byte b2 = 100;
		int i2 = 200; 
		b2 = (byte)i2;
		System.out.println(b2); //범위를 벗어난다면 값이 손실된다.
		
	}

}

형변환이란?

데이터의 타입을 변경하는 것이다.

  • Byte -> short -> int -> long -> float -> double 순으로 진행된다.
    우로 갈수록 넓은 표현이 가능하므로 자동으로 형변환이 된다.
  • 강제형변환은 Integer.parseInt()로 선언한다. (그냥 변환하려는 자료형 앞에 붙혀도됨 ex: (int))

연산자

연산자란?

특정한 작업을 하기 위해서 사용하는 기호를 의미

  • 산술연산자의 종류 : + 더하기, — 빼기, * 곱하기, / 나누기, % 나머지
  • 단항연산자의 종류 : ++ 증가연산자, — 감소연산자

오버플로우 탐지

  • 산술 연산을 할 때 주의할 점은 연산 후의 산출값이 산출 타입으로 표현 가능한지 살펴봐야한다.
  • 표현할 수 없는 값이 산출되었을 경우, 오버플로우가 발생하고 쓰레기값이 산출 될 수 있다

예제 코드

package com.kosta.day01;

public class OperatorTest {

	public static void main(String[] args) {
		// method1();
		// method2();
		// method3();
		// method4();
		// method6();
		method7();
	}

	private static void method7() {
		// 3항 연산자
		int score = 95;
		int limit = 80;
		String result = score >= limit ? "합격" : "불합격";
		System.out.println(result);
		
		// 3항 연산자x if문 사용
		if(score >= limit)
			result = "합격";
		else 
			result = "불합격";
		System.out.println(result);
	}

	private static void method6() {
		// 논리연산자 (||, |)
		int a = 10;
		int b = 20;
		// || : 하나라도 참이면 참. 앞 결과가 true라면 뒷 조건은 수행x
		// | : 하나라도 참이면 참. 모주건 모든 조건을 수행o
		// boolean result = a < 10 || ++b >= 20;
		boolean result = a >= 10 | ++b >= 20;
		System.out.println("result=" + result);
		System.out.println("b=" + b);
	}

	private static void method5() {
		// 논리연산자 (&&, &)
		int a = 10;
		int b = 20;
		// && : 모두 참이면 참. 앞 결과가 false라면 뒷 조건은 수행x
		// & : 모두 참이면 참. 모주건 모든 조건을 수행o
		// boolean result = a < 10 && ++b >= 20;
		boolean result = a < 10 & ++b >= 20;
		System.out.println("result=" + result);
		System.out.println("b=" + b);
	}

	private static void method4() {
		// 비교연산자
		int a = 10;
		int b = 20;
		System.out.println(a == b);

		// "자바"라는 문자는 String클래스로 만들어진 객체(실체)인가요?
		System.out.println("자바" instanceof String);
	}

	private static void method3() {
		// 증감연산자2
		int a = 10;
		int b = 20;
		int result = a++ + ++b;

		System.out.println(result);
		System.out.println("a= " + a);
		System.out.println("b= " + b);
	}

	private static void method2() {
		// 증감연산자
		int a = 10;
		a++;
		++a;
		a += 1;
		a = a + 1;

		// 증가하고 출력
		System.out.println("a= " + ++a); // 전위연산자
		// 출력하고 증가
		System.out.println("a= " + a++); // 후위연산자

		System.out.println("a= " + a);
	}

	private static void method1() {
		// 산술연산자 : +, -, *, /
		int a = 10;
		int b = 3;
		System.out.println("몫은 " + a / b);
		System.out.println("나머지는 " + a % b);
		System.out.println("실수결과 " + (double) a / b);
		System.out.println("실수결과 " + a / (double) b);
		System.out.println("실수결과 " + 1.0 * a / b);
	}
}

삼항연산자란?

조건연산자라고도 하며 여러가지의 코드를 간결하게 연산한다. (위 코드 method7 참고)

profile
라면 먹고 싶다. 두 개 끓여서 혼자 먹고 싶다. - 임덕배 (1997. 06 ~ )

0개의 댓글