MAIN 함수
public static void main(String[]args){
}
- 자바 프로그램을 실행시키면, main() 함수 내부에 있는 코드가 순차적으로 실행된다.
- main()함수 내부의 코드가 모두 실행되면 프로그램이 종료된다.
변수와 대입 연산
int x= 1;
x는 변수 이름이고, 1은 x라는 상자에 저장 된 것이다.
대입 연산자를 = 라고 하고,
왼 = 오
ex) x=1, y=1
대입 연산자 기준으로 오른쪽이 숫자, 왼쪽이 변수가 된다.
대입 연산자의 왼쪽 변수와 오른쪽 값의 자료형은 같아야 함. 다르면 자료형 불일치가 일어남
자동형 변환이 되는 경우가 있는데, 작은 값을 큰 범위의 변수에 저장할 때이다.
int a=1;
double b= 1.1;
long b=1;
float c=1;
double d= 1.1f;
float e= 1.1; //오류
int f= 1.1; //오류
int g=1l; //l 은 long이라서 오류
→ 큰 범위의 숫자 값을 작은 범위의 자료형 변수에 저장할 때 숫자 값이 왜곡될 수 있음. 작은 범위에서 큰 범위는 ㄱㅊ
큰 → 작 오류
작 → 큰 | 자동 자료형 변환 |
큰 범위 자료형 → 작은 범위 자료형 변환 시 오류 해결
⇒ 강제 형 변환 사용
int num = (int) 100L;
byte b = (byte) 100 ;
강제 형 변환 큰 범위에서 작은 범위로 바꿀 때,
double result=0.1; → 정수로 바꾸고 싶다면?
int result= (int) result;
식별자 이름 짓기 규칙
⇒ 변수나 클래스, 함수, 패키지 등.. 이름을 짓는거!
카멜 표기법을 사용한다.
numberOfStudents 처럼 단어가 끝날 때 대문자를 쓰는 것이다..^^
변수와 자료형
⇒ 자바에는 기본 자료형과 참조형으로 나뉜다.
기본 자료형에는 우리도 알고 있는 byte short int long float double char boolean 같은 거..
메모리가 정해져 있고, 표현할 수 있는 범위도 정해져 있다.
큰 범위의 자료형 변수에서 작은 범위의 자료형 변수로 저장할 때 값이 유실될 수 있다.
byte b1=10;
int i1=10;
i1= b1;
==> i1= 10;
float f1=0.1f; //옆에 f를 붙이면 float 형이라는 걸 명시하는것
double d1=0.1;
d1=f1;
=> d1의 값이 0.111111막 일케 나옴 (값을 저장하는 방식에서 오차가 있기 때문이다.)
float 형 변수값을 double 변수에 저장하는 것은 허용된다. (주의)
자바에서 실숫값을 다룰 때는 double을 사용하도록 하자
참조형에는 문자열(String),배열(같은 종류의 자료형을 여러개 묶어둔것), 클래스, 인터페이스 등이 있다.
- 문자형(char): 문자 한개, 자바에서는 영어나 한글이나 똑같이 1개로 취급한다.
- boolean 형: 참,거짓을 의미한다.
boolean b1= false;
boolean a1= true;
- 숫자 상수: 7E5 = 7x10의 5승
<과제1>
import java.util.Scanner;
public class Hello{
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
double humid=sc.nextDouble();
double temp=sc.nextDouble();
double x=(Math.log(humid/100))+((17.62*temp)/(243.12+temp));
double dewPoint=(243.12*x)/(17.62-x);
System.out.printf("%f\\n",(int)(dewPoint*10)/10.0);
}
}
Scanner
사용자로부터 입력 받기
import java.util.Scanner;
class Scanner1{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println("출력문자열: "+s);
int a=sc.nextInt();
System.out.println("출력정수: "+a);
}
}
java.util.Scanner 이용하면 키보드, 문자열, 파일 등 다양한 입력 소스로부터 정해진 형식에 맞게 입력 받을 수 있음.
사용 시 import java.util.Scanner; 꼭 명시
Scanner sc= new Scanner(System.in); // 새로운 스캐너 sc 생성
Scanner 클래스가 제공하는 함수 종류
String next() 다음 입력을 문자열 형태로 받음. 공백 문자를 만날 때까지 입력된 모든 문자들을 문자열 형태로 반환
string nextline() | 줄바꿈 문자를 만날 때까지 입력된 모든 문자들을 있는 그대로 문자열 형태로 반환 (줄바꿈 문자를 제거한다) |
byte nextByte() | 다음 입력을 byte형 정수로 받음 |
short nextShort() | 다음 입력을 short형 정수로 받음 |
int nextInt() | 다음 입력을 int형 정수로 받음 |
long nextLong | 다음 입력을 long형 정수로 받음 |
float nextFloat() | 다음 입력을 float형 실수로 받음 |
double nextDouble() | 다음 입력을 double형 실수로 받음 |
문자열 하나랑 정수값 한개를 입력받는 코드
Scanner sc= new Scanner(System.in);
int num= sc.nextInt();
String s=sc.nextLine();
- 키보드로 입력할 때는 입력 버퍼가 사용되는데 입력 버퍼는 사용자가 입력한 내용을 임시로 저장해 두는 메모리 공간이다.
- next~() 함수들이 실행되고 입력을 기다릴 때 사용자가 입력한 내용은 모두 입력 버퍼에 저장이 된다.
- 입력 버퍼는 어떤 글자까지 처리했는지 파악하기 위해 입력 포인터(다음에 사용하게 될 글자의 시작 위치를 나타내는 주소)를 사용한다.
import java.util.Scanner;
class Scanner1{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a=sc.next();
System.out.println("출력 문자열: "+a);
int num=sc.nextInt();
System.out.println("정수: "+num);
String s = sc.nextLine();
System.out.println("남은 문자열: " + s);
}
}
next() 함수
next() 함수는 공백 문자를 만나기 전까지 문자열로 취급한다. 따라서 nextInt() 함수는 사용자 입력을 안 받아도 되는 것임 (바로 엔터쳐도 hello 1 은 hello/ 에서 문자열까지고 1이 정수라는걸 알았으니까)
nextLine() 함수
nextLine() 함수는 줄바꿈(엔터) 문자를 만나기 전까지 문자열로 반환한다. 그래서 hello 라고 입력하고 엔터를 치면 공백마저도 문자열로 반환해 hello 가 출력이 된다.
'SCHOOL > 객체지향 프로그래밍' 카테고리의 다른 글
자바의 메모리 영역 (0) | 2023.11.07 |
---|---|
자바의 배열 (0) | 2023.11.07 |
객프 6주차 과제 (0) | 2022.11.16 |
자바 접근 제어자 (0) | 2022.11.16 |
객프 4주차 과제 (2) | 2022.11.13 |