[JAVA/자바] 자바 입문(println, int, scanf, 객체지향언어)
자바란?
자바로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다. 자바 프로그램은 운영체제나 하드웨어에 의존하지 않는 바이트 코드(중간 언어)인 추상적인 코드로 구현된다. 따라서, 자바 프로그램을 실행하기 위해서는 자바 가상 머신(JVM)과 개발에 필요한 표준 라이브러리 세트와 컴파일러의 환경만 맞추면 자바 프로그램은 모든 환경에서 동일하게 동작한다. 이러한 실행환경과 개발환경을 제공하는 것이 자바 플랫폼이다.
자바 플랫폼은 자바 언어(Java Language), 자바 애플리케이션(Java Application), 자바 애플릿(Java Applet), JRE(Java Runtime Environment), 자바 가상 머신(Java Virtual Machine), 모바일용 자바(Java ME), 자바 웹 스타트(Java Web Start) 등과 함께 단순히 「자바」(Java)라 불리는 경우가 많다.
자바의 꽃은 객체지향언어라는 점이다. 그리고 자바는 자바가상머신을 사용해 어떤 운영체제에서든 같은 형태로 실행이 된다. 프로그램은 컴파일(기계어로 바꾸는작업)을 하기 전에 프로그램 소스를 작성하는 것을 말하는데 꼭 컴파일 과정이 필요하다.
*자바와 자바스크립트는 전혀 다른 언어이다.
원저자
썬 마이크로시스템즈사의 제임스 고슬링(원래이름은 오크였음)
현재소유
오라클
운영체제
윈도우, 솔라리스, 리눅스, OSX
웹사이트
자바 장점
운영체제와는 독립적으로 실행이 가능하다. 또한, 불필요한 기능을 과감히 제거해 다른 언어에 비해 배우기 쉽다. 그리고 자동 메모리 관리 등을 지원해서 닫고 열고 이런 불필요한 코드를 사용 안해도된다. 또한, 오버로딩을 금지하고 제네릭도입으로 인해 코드가 빠르다
자바 단점
자바는 실행하려면 가상머신이 있어야되서, 실행속도가 느리다. 예외처리는 잘 되어 있으나, 개발자가 일일히 처리해줘야한다. 코드의 길이가 길다.
자바 실행과정
자바 클래스 파일이 있고, 그 클래스들을 함수처럼 만들어놨다가 컴파일러(자바머신이 이해할 수 있는 자바바이트코드(.class를 말함)로변환/javac.exe라는 실행파일형태로 설치)로 인해 런타임 시켜서 자바 가상머신에 의해 런타임을 하게 되면 운영체제에서 띄우는 형식을 취한다
자바가상머신
자바인터프리터(interpreter) = 자바 컴파일러에 의해 변환된 클래스를 읽고 해석하는 역할을 함(런타임중에)
클래스로더 = 자바는 동적으로 클래스를 로딩해주는데 이 역할을 하는 것
JIT컴파일러 = 프로그램이 실행될때 실제 기계어로 바꿔주는것임
가비지컬렉터 = 쓸데없는 메모리를 줄이기 위해 메모리 자동회수함
자바의 구성
기본구성 = 한개이상의 클래스가 필요한데 그 클래스 안에는 한개이상의 필드나 메소드로 구성됨
실행하기 위해서는 반드시 메인 클래스가 있어야함
class Test{ // class 선언해주고 그 뒤에 클래스이름인 test를 넣어줌
int a; //필드를 선언함 인티저타입의 a라는 필드생성
String b;
public void method() { //메소드 생성 리턴값이 없는(void) 공공의(public) 메소드생성
System.out.println("말자네소소한일상");
}
}
public class Ch001_Start {
public static void main(String[] args) { //메인 함수 안에 들어가 있어야 실행가능함
// TODO Auto-generated method stub
Test t1 = new Test(); // 클래스를 불러서 초기화 시킴
t1.method(); // t1클래스 안에 잇는 메소드를 구현함
}
}
메인메소드(main method)
자바프로그램은 클래스안에 여러가지 필드나 메소드를 설정해 놓고 그것을 메인함수안에서 호출해서 출력하는 형태로 사용한다. 그렇기 떄문에 반드시 자바프로그램이 실행되려면 메인함수가 있어야한다. 메인메소드는 반드시 public static void로 선언되어야한다.
또한, 자바클래스파일(.java)에 public클래스가 존재하면 반드시 그 소스파일의 이름은 해당 퍼블릭클래스의 이름과 같아야한다. 그러기때문에 이러한 퍼블릭클래서는 자바 클래스마다 단한개만 가질 수 있다. 또한, 메소드나 클래스를 호출하는 명령문을 입력해주는데 컴퓨터는 엔터를 인식하지 못하기 때문에 반드시 끝날때는 ;을 붙여줘야한다.
주석문
주석은 컴퓨터는 인식하지 못하지만 좋은 코딩, 누구나 알아볼 수 있는 코딩을 하기위해서 이해를 돕는 주석문이라고 생각하면 된다. 그렇기 때문에 실행결과에는 절대 영향을 주지 않는다.
한 줄 주석이 있고 여러줄을 주석을 할 수 있는데 여기서 주의할점은 여러줄 주석은 중첩으로 사용하면 안된다. 그리고 컨트롤 /를 누르면 여러줄에 한번에 //를 칠 수 있어서 편하다.
System.out.println()
자바 표준 입출력하는 문구이다. 우리가 실제로 운영체제에 띄우기 위해서 쓰는 문구라고 생각하면 된다. 그냥 메모리에 저장하는 것이 아닌 콘솔창에 띄워주게할 수 있다. c언어로 치면 printf라고 생각하면 편하다 c언어 얘기가 나와서 말인데 이처럼 시스템클래스 안에 들어있는 함수들이 있는데 대표적인게 c언어로 치면 printf랑 scanf다 이러한 System클래스는 java.lang 패키지에 포함되어 있다. 여기서 주의할점은 자바는 무조건 대소문자를 구분해줘야한다는 것이고. 개발자들끼리 클래스는 무조건 앞에 대문자를 붙이게끔 되어있다.
그리고 System 클래스에는 3가지 변수가 정의 되어있다
System.in = 스트림을 사용해서 입력작업을 수행할때
System.out = 모니터에 전달된 데이터를 출력함
System.err =콘솔에 출력을 제공하지만 대부분의 IDE는 구별하기 위해 빨간색으로 표시한다.
그래서 모니터에 표시하기 위해 System.out.println() 메소드를 사용하는데 이걸 사용하면 시스템클래스의 out변수의 println을 사용한다는 뜻인데 여기서 print는 그냥 화면 출력 println은 화면 출력하고 다음줄로 넘기는 기능까지 구현하고 있다.
package javaBasic;
public class Ch001_byte{
public static int sum(int i, int j) {
return i+j;
// 공공의 주요한 인티저타입의 sum은 두개의 필드가 필요로 하고 그 두개의 합을 리턴값으로 받는다는 뜻임
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a;
int b;
char c;
String d;
final int FIVE = 5;
a= 2;
b = sum(a, FIVE);
c= '?';
d = "hi";
java.lang.System.out.println(a);
// 자바의 lang팩에 시스템클래스의,out변수의 println메소드
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}