생각기록
2023-02-28 JAVA / 환경설정 / 데이터타입 / 입출력 / 메소드 선언 본문
JAVA랑 JS 차이점
둘이 이름이 비슷해서 관계가 있는가 싶지만, 아무 관계가 없습니다.
개발자들은 햄이랑 햄스터라고 비교한다 합니다
JAVA의 실행 과정
자바 소스 코드 (.java) ㅡ> 컴파일러(사람코드 -> 기계어 번역) ㅡ> 자바 바이트 코드(.class)
자바 가상 머신 (JVM - Java Virtual Machine )
java같은 경우 운영체제에 독립적인 특징을 가지고 있다.
자바 가상머신을 설치 해줍니다.
개발환경 구축
JDK 설치

각자 운영체제에 맞는 Tab 선택
저는 윈도우라 x64 installer 다운
설치 확인은 propmpt 켜서
java -version

자바 가상 머신이 컴퓨터에 설치 되었다.
잘 안된다면 환경변수 설정해라
(참고) 환경변수 설정 (windows)




eclipse 설치
Eclipse Downloads | The Eclipse Foundation






아래와 같이 eclipse IDE가 실행된다면 성공

프로젝트 만들기







이게 메인 메서드
실행시 메인 메소드 안에 있는 부분이 실행된다.

파일이 생겻다 Main.java
간단한 코드 실행
자바에서는
콘솔로그 대신
System.out.print('Hello world');
세미콜론 항상 찍기, 없으면 컴파일 오류난다
실행 (Run)
윈도우 같은 경우 = > 컨트롤 + F11 // 또는


자바 프로그램의 기본 구조

java 프로그램은 main메소드 안에서 실행을 시작함
식별자 원칙
클래스, 변수, 상수, 메소드 등에 붙이는 이름
@, #, ! 와 같은 특수문자 사용 불가 • 예외로 ‘_(언더바)’ , ‘$(달러)’는 사용 가능
공백 불가
한글 사용 가능하나… 다들 준개발자시니 당근 영어 사용하실거죠?
미리 정의된 키워드(예약어)는 식별자로 사용 불가
숫자 사용 가능
단, 첫 글자로는 사용 불가

js보다 좀 깐깐하게 체크함
한글은 사용하지 않는게 좋습니다.
자바의 예약어

데이터 타입
Java는 강한 타입 언어로, Javascript에서와 달리 Java에서는 데이터 타입이 중요 함
변수를 선언할때 어떤 데이터를 담을지 미리 정의를 해줘야 합니다.
ex. num이란 변수를 선언할건데... 미리 데이터 타입을 지정해줘야 한다!
자바의 데이터 타입은 크게 아래 두 가지로 나뉨
1. 기본 타입 (Primitive) => 변수값을 그대로 저장
2. 레퍼런스 타입 (참조형, Reference) => 메모리 주소를 참조 (메모리에 값이 저장 되어있다..)
기본형 데이터 타입


byte : -128 ~ 127
데이터 크기에 맞춘 데이터타입으로 선언하는 것이 효율적이긴하다
보통 int , double 을 쓰긴하지만요
참조형 데이터 타입
기본형 타입을 뺀 모든 형태를 참조형 타입으로 봄
크게 아래 세 가지로 구분 할 수 있음.
- 배열에 대한 레퍼런스
- 클래스에 대한 레퍼런스 ( ex. String )
- 인터페이스에 대한 레퍼런스
입력과 출력

print는 줄바꿈 없다.
println(); 자동 줄바꿈!

이제 입력을 받을거다
입력
Scanner 클래스 사용
Scanner 는 콘솔에 입력한 값을 저장하고 실행한다.
임포트 필요

임포트 후 객체로 선언해준다
Scanner 클래스 주요 메소드
• next() : 공백 이전까지의 문자열을 읽음.
• nextLine() : 엔터(\n) 이전까지의 문자열을 읽음.
• next자료형()
• nextInt() : 공백 이전까지의 정수를 읽음.
• nextDouble() : 공백 이전까지의 실수를 읽음.
• nextBoolean(), nextFloat(), ..etc
• close() : scanner 닫음.


다쓰면, close로 닫는다
값을 입력해주고 앤터치면, 출력문이 나오네요
연산자
js랑 다른점은 별로 없으나.. 자바는 데이터 타입이 정해져있다보니, 정수랑 정수를 나누면 나눗셈의 몫만 출력이 된다.
5/2 자바는 2가 출력이 된다.
2.5를 출력하고 싶다면, 실수로 바꿔서 해야한다.


실습 1. 기본실습


package java_first_project;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println("Hello world 1");
// System.out.print("Hello world 2");
Scanner scanner = new Scanner(System.in);
// System.out.println("이름, 나이, 키, 결혼 여부를 입력해주세요.");
System.out.println("이름을 입력하세요, 나이를 입력하세요");
String name = scanner.next();
int age = scanner.nextInt();
// String name = scanner.next();
// int age = scanner.nextInt();
// double height = scanner.nextDouble();
// boolean single = scanner.nextBoolean();
scanner.close();
// 출력문
// System.out.println("이름은 " + name);
// System.out.println("나이는 " + age);
// System.out.println("키는 " + height);
// System.out.println("결혼 여부는 " + single);
System.out.println("안녕하세요! " + name + "님 (" + age + "세)");
String str = new String("홍길동");
String str2 = "홍길동";
}
}
조건문
if ( 조건문 )

참조형은 메모리 주소값을 참조하기 때매 == 으로 하면, 값이 안뜬다
. equals
string은 우리가 스케너라는 객체를 생성햇듯이
string이라는 객체를 만듭니다.


package java_first_project;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println("Hello world 1");
// System.out.print("Hello world 2");
String str = new String("홍길동");
String str2 = "홍길동";
if( str2 == "홍길동") System.out.println(true);
else System.out.println(false);
}
}
switch문
package java_first_project;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println("Hello world 1");
// System.out.print("Hello world 2");
int num = 3;
// 브레이크를 해주지 않으면, 멈추지 않습니다.
switch (num) {
case 0:
System.out.println("0");
break;
case 1:
System.out.println("1");
break;
default:
System.out.println("0도 1도 아님");
break;
}
}
}
반복문
for문
let i x
int i = 0; 이라는 차이점이 있다

do while은
do는 일단 한번 실행되는 것
dowhile은 한번은 무조건 실행 ( 조건이 맞지 않아도 )
메소드 선언
메소드는
처음에 실행할 때 main 메소드에서 실행이 되게 한다
함수랑 같은건데, 클레스 안에 있는 얘들을 메소드라고 부릅니다.
js 다른점은 데이터 타입이 있어
반환값에 데이터 타입을 미리 지정해줘야 한다

void 는 반환값이 없을때의 타입을 이야기한다.
sum이라는 함수는 반환값으로 매개 변수로 들어온 두개의 숫자를 더하고 있어 매개둘다 int고, 반환값의 데이터 타입을 int로 정햇다.........................
그냥 외워!
public static + 데이터타입 + 메소드 이름 => 으로 메소드를 만든다

메인 메소드 밖에서 두 메소드를 만들고, main 메소드에 실행 시켰다.
실습 2

package java_first_project;
import java.util.Scanner;
public class Main {
int num = 1;
public static String age (int num) {
if (num < 7) {
return "유아";
} else if ( 7 < num && num < 14) {
return "초등학생";
} else if ( 13 < num && num < 17) {
return "중학생";
} else if ( 16 < num && num < 20) {
return "고등학생";
} else {
return "성인";
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("나이를 입력하세요.");
int age = scanner.nextInt();
// 출력문
System.out.println(age(age));
}
}

package java_first_project;
import java.util.Scanner;
public class Main {
public static String name (String name) {
switch (name) {
case "홍길동":
return "남자";
case "성춘향":
return "여자";
default:
return "모르겠어요.";
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("이름을 입력하세요.");
String name = scanner.next();
// 출력문
System.out.println(name(name));
}
}

package java_first_project;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("숫자를 입력하세요");
int num = scanner.nextInt();
for(int i = 1; i < num + 1; i++) {
System.out.println(i);
}
}
}

숫자 두개를 넣었을떄
+ - / *
하나씩 리턴하는경우 더블로 / 출력만 하기 때문에 void로 하면 됩니다.
네가지 결과를 한번에
결과를 반환하는 메소드

package java_first_project;
import java.util.Scanner;
public class Main {
// 한번에 출력해줄거라 void
public static void evaluate (double num1, double num2) {
System.out.println("덧셈 결과 :" + (num1 + num2));
System.out.println("뺄셈 결과 :" + (num1 - num2));
System.out.println("나눗셈 결과 :" + (num1 / num2));
System.out.println("곱셈 결과 :" + (num1 * num2));
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("숫자 두 개를 입력하세요.");
// 공백 기준 첫번째 num1, 두번째 num2
double num1 = scanner.nextInt();
double num2 = scanner.nextInt();
// 메소드 실행
evaluate(num1, num2);
}
}
출력만 하는거면 반환값이 없는거다!! > 위의 경우는 그래서 void로 가능!!

package java_first_project;
import java.util.Scanner;
public class Main {
public static int zero () {
return 0;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("반환값이 있어요");
scanner.close();
int number = 0;
System.out.println("number" + number );
zero();
}
}
return처럼 반환값이 있는 경우에는 void로 하면 안됩니다. 데이터 타입 지정 해줘야 한다.
'SeSAC 풀스택 > JAVA &Spring boot' 카테고리의 다른 글
| 2023-03-04 java / 클래스의 상속 / 오버라이딩 (0) | 2023.03.04 |
|---|---|
| 2023-03-02 java 클래스 / 객체지향 프로그래밍 / getter, setter / static (1) | 2023.03.02 |
| 2023-03-02 java 예외 처리 / try-catch-finally (0) | 2023.03.02 |
| 2023-03-02 java 표준 배열 (0) | 2023.03.02 |
| 2023-02-28 java 배열, 배열 출력 (0) | 2023.02.28 |