본문 바로가기

공부/JAVA

[JAVA STUDY] DAY 1. 주석 / 변수 / 데이터타입 / 형변환 / 연산자

728x90

DAY1. 키워드

  1. JAVA
  2. 주석
  3. 변수 (전역변수/지역변수)
  4. 데이터타입
  5. 형변환 (자동/강제)
  6. 연산자

1-1. 자바의 특징

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

 

1-2. 자바 개발 환경 구축

JVM : 자바 가상 머신

  • 자바 프로그램은 중간 단계의 바이트 코드이기에 해석하고 실행 할 수 있는 가상 운영체제 필요
  • JVM은 운영체제에 종속적

JDK : JRE+개발도구 

  • 자바 프로그램을 개발하고 실행 할 경우 설치

JRE : JVM+표준 클래스 라이브러리

  • 자바 프로그램을 실행만 할 경우 설치

환경변수 편집

  • 내 PC > 속성 > 고급 시스템 설정 > 환경 변수 > 'Path' 편집 > 새로만들기 > jdk경로 붙여넣기

 

1-3. 자바 프로그램 개발

자바 프로그램 개발 순서

 

코드 생성

  • 위와 같은 코드 생성 후 cmd에서 해당 코드가 저장된 위치로 경로 이동
  • 더보기
    (Hello)클래스 : 필드 또는 메소드를 포함하는 블록
    (main)메소드 : 어떤 일을 처리하는 실행문들을 모아놓은 블록

컴파일 및 실행

  • 컴파일(javac) 후 실행(java) 결과 : Hello, welcome to the java world!

 

1-4. 이클립스

[JAVA 개발 툴 - Eclipse]

www.eclipse.org/www.eclipse.org/downloads/packages/

 

Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source pro

438 MB 8,347 DOWNLOADS The Modeling package provides tools and runtimes for building model-based applications. You can use it to graphically design domain models, to leverage those models at design time by creating and editing dynamic instances, to collabo

www.eclipse.org

  • 프로젝트 생성 : Create a porject > JAVA선택 > Project이름 입력, JavaSe버전 설정

  • 클래스 생성 : src 우클릭 > New > Class > Package 비우기, 이름 설정(대문자로 시작하기), public default ~ main 체크

  • 패키지 생성 : package 우클릭 > New > Package > 이름설정(이름 설정 시 .을 찍으면 하나의 폴더로 생성 됨)

  • 클래스 이름 변경 : *.java파일 우클릭 > Refactor > Rename

  • System.out.println 자동 완성 : syso입력 후 ctrl+space

  • main 자동 완성 : main입력 후 ctrl+space

  • 한줄 복사 : ctrl+alt+방향키

 

2. 주석

코드에 설명을 붙인 것, 컴파일 과정에서 주석은 무시되고 실행문만 바이트 코드로 번역된다.

// //부터 라인 끝까지 주석으로 처리
/* ~ */ /*와 */사이에 있는 모든 범위를 주석으로 처리
/** ~ */ API 도큐먼트 주석

 

3-1. 변수

변수 : 하나의 값을 저장할 수 있는 메모리 공간

변수의 사용

 

3-2. 변수 작성 규칙

  • 첫번째 글자는 문자이거나 '$', '_'여야 하며, 숫자로 시작할 수 없다. ($#value와 같은 변수도 사용 안됨)
  • 대/소문자가 구분된다.
  • 첫문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫자를 대문자로 한다 (카멜 표기법?)
  • 문자 길이의 제한은 없다.
  • 자바 예약어는 사용 불가하다. (package, public, class, void 등등)

3-3. 지역변수/전역변수

지역변수

  • 함수 안에서만 사용되는 변수
  • 함수 안에 선언
  • 반드시 초기화를 해주어야 함

전역변수

  • 함수 전역에서 사용되는 변수
  • 함수 밖에 선언
  • 자동으로 초기화 됨

 

3-4. 리터럴

정수 리터럴(값) 0, 20, -100, O2(8진수), 0xA
실수 리터럴 3.14, 0.12E-5
문자 리터럴 'A', 'b', '한', '\t', '\n'
문자열 리터럴 "대한민국"
논리 리터럴 true, false

 

3-5. 변수의 사용범위

블록 안에서 생성 된 변수는 블록을 벗어나게 되면 사용 할 수 없다. 

블록 밖에서 생성 되어 있는 변수라면 블록 안에서 같은 이름으로 생성 할 수 없다.

 

4-1. 데이터 타입

정수 byte 1 byte
char 2 byte
short 2 byte
int 4 byte
long 8 byte
실수 float 4 byte
double 8 byte
논리 boolean 1 byte
  • 정수는 default 타입이 int이기에 long 변수 타입은 숫자 끝에 L을 붙여줘야 long형으로 인식한다.
  • 실수는 default 타입이 double이기에 float 변수 타입은 숫자 끝에 f를 붙여줘야 float형으로 인식한다.

4-2. 데이터 크기

byte(1) < short/char(2) < int(4) < long(8) < float(4) < double(8)

  • short와 char는 크기는 같지만 형변환을 서로 할 수 없다.
  • 실수 타입은 정수 타입과는 다른 저장방식(가수, 지수) 때문에 정수 타입보다 훨씬 큰 범위의 값을 저장할 수 있다.

 

5-1. 자동 형변환

byte aa = 127;
int ii = aa;
System.out.println(ii); //127
  • 작은 크기 타입을 큰 크기를 가지는 타입에 저장하는 것으로, 값의 손실 없이 그대로 보존된다.
  • 큰 크기 타입 = 작은 크기 타입

 

5-2. 강제 형변환

byte b2 = 100;
int i2 = 100;
		
b2 = (byte)i2;
System.out.println(b2); //100 
		
char c2 = (char)i2; 
System.out.println(c2); //d
		
System.out.println('d'); //d
System.out.println((int)'d'); //100
  • 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것으로, 캐스팅 연산자 ()를 사용하는데 괄호 안에는 쪼개는 단위를 넣는다.
  • 작은 크기 타입 = (작은 크기 타입) 큰 크기 타입
  • 값의 손실이 있을 수 있다.
public static void test4() {
		//여러타입을 연산하게 되면 결과는 무슨 타입일까?
		int a = 10;
		double b = 3.14;
		
		double result = a+b;
		System.out.println(result); //13.14
		
		int result2 = (int)(a+b);
		System.out.println(result2); //13
		
		char c = '가';
		String s1 = "자바문자열 : ";
		System.out.println(s1 + 10 + 20); //자바문자열 : 1020
		System.out.println(s1 + (10+20)); //자바문자열 : 30
		
		int su1 = 10, su2 = 20;
		System.out.println("더하기는 " + su1+su2); //더하기는 1020
		/*※*/System.out.println("빼기는 " + (su1-su2)); //빼기는 -10
		System.out.println("곱하기는 " + su1*su2); //곱하기는 200
		System.out.println("나누기는 " + su1/su2); //나누기는 0
	}
  • String 문자열과 같이 출력되는 경우 숫자도 문자열로 강제 형변환이 이뤄진다.
  • ※ '빼기는'은 String형으로 뒤에오는 su1은 int형이지만 string형으로 강제 형변환이 이뤄진다. string형은 뺄셈을 할 수 없기에 괄호를 이용하여 su1과 su2를 묶어 준 후 형 변환이 이뤄질 수 있다.

6. 연산자

package com.kosta.day01;

public class OperatorTest {

	
	public static void main(String[] args) {
		method1();
		method2();
		method3();
		method4();
		method5();
		method6();
		method7();
		
	}
	
	private static void method7() {
		//삼항연산자
		int score = 85;
		int limit = 80;
		String result = score >= limit ? "합격" : "불합격";
		System.out.println(result); //합격
		
        //if-else문을 이용하여 삼항 연산자를 대신할 수 있음
		if (score >= limit) {
			result = "합격";
		}
		else result = "불합격";
		System.out.println(result); //합격
	}

	private static void method6() {
		int a = 10;
		int b = 20;
		//|| : 하나라도 참이면 참이다. 앞의 결과가 true이면 뒷문장 수행 안함
		//| : 하나라도 참이면 참이다. 앞의 결과가 어떻든 모든 문장 수행
		boolean result = a >= 10 || ++b >= 20;
		System.out.println("b = " + b); //b = 20
		System.out.println("result = " + result); //result = true
		boolean result2 = a < 10 | ++b >= 20;
		System.out.println("b = " + b); //b = 21
		System.out.println("result2 = " + result2); //result2 = true
	}
	
	private static void method5() {
		int a = 10;
		int b = 20;
		//&& : 모두 참이면 참, 앞의 결과가 false이면 뒷문장은 수행 안함
		//& : 모두 참이면 참, 앞의 결과가 어떻든 모든 문장 수행
		boolean result = a < 10 && ++b >= 20;
		System.out.println("b = " + b); // b = 20
		System.out.println("result = " + result); //result = false
		boolean result2 = a < 10 & ++b >= 20;
		System.out.println("b = " + b); //b = 21
		System.out.println("result2 = " + result2); //result2 = false
	}

	private static void method4() {
		int a = 10;
		int b = 20;
		System.out.println(a == b); //false
		System.out.println(a != b); //true
		//"자바"라는 문자는 String클래스로 만들어진 객체인가요?
		System.out.println("자바" instanceof String); //true
		
	}

	private static void method3() {
		int a = 10;
		int b = 20;
		int result = a++ + ++b;
		System.out.println("result = " + result); //result = 31
		System.out.println("a = " + a); //a = 11
		System.out.println("b = " + b); //b = 21
	}

	private static void method2() {
		//증감연산자
		int a = 10;
		a++; //후위연산자
		++a; //전위연산자
		a += 1;
		a = a+1;
		//출력하고 증가
		System.out.println("a = " + a++); //a = 14
		//증가하고 출력
		System.out.println("a = " + ++a); //a = 16
		
	}

	private static void method1() { //private : 해당 클래스 안에서만 사용가능
		//산술연산자 : +, -, *, /, %
		int a = 10;
		int b = 3;
		
		System.out.println("몫은 : " + a/b); //몫은 : 3
		System.out.println("실수로 바꾼 몫은 : " + (double)a/b); //실수로 바꾼 몫은 : 3.3333333333333335
		System.out.println("실수로 바꾼 몫은 : " + 1.0*a/b); //실수로 바꾼 몫은 : 3.3333333333333335
		System.out.println("나머지는 : " + a%b); //나머지는 : 1
	}

}

 

728x90
반응형