. 파일명과 클래스명은 일치해야 한다
. 패키지안에 자바파일을 생성해야 한다
. 대소문자를 구별해야 한다
- 클래스는 대문자로 시작
- 변수는 소문자로
- 메소드명은 소문자로 시작하고, 두번째 단어 첫글자는 대문자로
- 식별자는 키워드 사용 불가
. java파일은 실행후 컴파일되서 bin폴더속에 class파일로 생성됨
. 쌍따옴표와 따옴표는 구분됨 - 문자열 " ", 문자' '
. 자바가 갖는 출력문
println(): 개행이 된다(줄바꿈) - 줄바꿈용, 일반적 출력
printf("%s,%c,%d,%f", ("문자열", '가', 100, 3.14) : 개행X - 출력폼을 지정해서 출력
print() : 개행X - 문자열을 누적해서 만들 때 주로 사용
public class Print1 {
public static void main(String[] args) {
System.out.println("환영합니다");
System.out.println("자바가 참 재밌습니다");
// System: Java에서 제공하는 시스템관련 클래스
// .(dot): 오른쪽에서 왼쪽으로 접근하는 지정자
// out : 표준출력을 제공하는 인스턴스
}
}
public class Print2 {
public static void main(String[] args) {
//print
System.out.println("print-개행이 되지 않음");
System.out.print("Hello");
System.out.print("Java! \n"); // \n: 줄바꿈
System.out.println(); //줄바꿈용
//println
System.out.println("println-개행됨");
System.out.println("Hello");
System.out.println("Java!");
//printf
System.out.printf("printf-개행안됨 \n");
System.out.printf("%s","Hello \n");
System.out.printf("%s: %d점 입니다","국어", 99);
System.out.printf("%s과목의 평균은 %.1f점입니다.","과목",95.4567); //소수점 한자리에서 반올림
}
}
public class Print3 {
public static void main(String[] args) {
int num1;
num1 = 10;
int num2 = 20;
int result = num1 + num2 ;
System.out.println(num1+"+"+num2+result);
System.out.println("결과가 맞나요?");
System.out.print(num1+"+"+num2+"="+result+"\n");
System.out.print("잘보이나요? \n");
System.out.printf("%d+%d=%d\n", num1, num2, result);
System.out.println("개행이 되었나요?");
}
}
Scanner 클래스 : 콘솔로 데이터를 입력받게 처리하는 클래스
- 반드시 close()시켜야 한다.
- 받아들이는 데이터 타입에 따라 해당하는 메소드로 읽어들인다.
next() - 문자(공백구분), nextInt(), nextFloat(), nextLine() - 문자(라인구분)
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("몇번째 프로그램인가요?");
int num = sc.nextInt(); //nextInt() 정수, nextFloat(), next() 문자, nextLine()한줄읽기,
System.out.println(num+ "번째 작성해 보는 Java프로그램입니다.");
sc.close();
}
}
import java.util.Scanner;
public class Scanner2 {
public static void main(String[] args) {
System.out.println("자기소개를 해봅시당ㅇㅅㅇ 이름,나이,몸무게를 공백으로 구분해서 입력하세요)");
Scanner sc = new Scanner(System.in);
String name = sc.next();
int age = sc.nextInt();
double weight = sc.nextDouble();
System.out.println(name+"님의 나이는 "+age+"살이고, 몸무게는 "+weight+"kg입니다.");
}
}
기본 데이터타입
문자 : char 2바이트 ------- 16 --- 유니코드
* String - 클래스
논리 : boolean 1비트 ------- true, false
정수 : byte 1바이트 -128 ~ 127
short 2바이트
int 4바이트(디폴트) -2,147,483,648 ~ 2,147,483,647
long 8바이트 ~~~L
실수 : float 4바이트 ~~~F
double 8바이트(디폴트)
int num = 10; ----> num = 10
참조 데이터타입
클래스들, 배열(Array)
Date now = new Date() ----> now = 주소 --------> Date객체
public class Type1 {
public static void main(String[] args) {
int num1 = 10; // 4 2 1 4 2 1
int num2 = 013; // 0 0 1 0 1 1 ---> 001011
int num3 = 0xA;
int num4 = 043; //(3) 십진수로? 101 011 ---> 101011 =>
int num5 = 0xA2; //(4) 십진수로? 1010 0010 ---> 10100010 =>
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
}
}
10진수 : 0이 아닌 수로 시작한다
2진수 : 0b로 시작한다
8진수 : 0으로 시작한다.
16진수 : 0x로 시작한다
public class Type2 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 0b1111;
int num3 = 010;
int num4 = 0x1A;
System.out.println("십진수 : "+num1);
System.out.println("2진수 : "+num2);
System.out.println("8진수 : "+num3);
System.out.println("16진수 : "+num4);
}
}
public class Type3 {
public static void main(String[] args) {
byte num1 = -128;
byte num2 = -30;
byte num3 = 0;
byte num4 = 30;
byte num5 = 127;
byte num6 = 128; //범위를 벗어남
}
}
//char
public class Type4 {
public static void main(String[] args) {
char c1 = 'A';
char c2 = 65;
char c3 = '\u0041'; //유니코드 16진수저장
char c4 = '가';
char c5 = 44032;
char c6 = '\uac00';
int unicode = c1;
System.out.println("c1 A= "+c1);
System.out.println("c2 65= "+c2);
System.out.println("c3 \u0041="+c3);
System.out.println("c4 가="+c4);
System.out.println("c5 44032= "+c5);
System.out.println("c6 \uac00="+c6);
System.out.println("c1의 유니코드값 = "+unicode);
char ch = '\"'; // \" -> ", \', \\ -> \
char s1 = '한';
char s2 = '국';
char s3 = '韓';
char s4 = '國';
char s5 = 'K';
char s6 = '\u004f';
char s7 = 'R';
char s8 = '\u0045';
char s9 = 'A';
System.out.println("출력결과: "+s1+s2+"("+s3+s4+")"+s5+s6+s7+s8+s9);
}
}
// long (8바이트)
public class Type5 {
public static void main(String[] args) {
long num1 = 10;
long num2 = 20;
long num3 = 10000000000000L;
}
}
실수 - 부동소수점방식으로 저장
. float(4바이트) >>> 끝에 f를 붙여준다 10.1 > 10.1f
. double(8바이트)
public class Type6 {
public static void main(String[] args) {
float d = 10.1f;
}
}
public class Type7 {
public static void main(String[] args) {
boolean stop = true;
if(stop) {
System.out.println("중지합니다.");}
else {System.out.println("시작합니다.");
}
boolean b=10>20;
System.out.println("b의 값: "+b);
boolean a = true;
boolean c = a;
System.out.println("c의 값: "+c);
}
}
변수 선언방법들
자료형 변수명;
자료형 변수명 = 값;
자료형 변수명, 변수명, 변수명,,,;
자료형 변수명=값, 변수명=값,,,
public class Type8 {
public static void main(String[] args) {
int num1; //선언부
num1=10; //초기화
int num2 = 10; //선언부, 초기화 동시
int num3, num4, num5; //복수 선언
int num6=60; num7=70; // 복수 선언/초기화
int num8, num9=90, num10=100;
num8=80;
System.out.println(num1+num2+num3+num4+num5);
//변수의 선언위치 - 사용전 어디서나 무관
int num11 = 90;
}
}
전역변수, 지역변수
; 자바는 지역변수만 있는 것이다. 전역변수는 멤버변수/필드라고 한다.
public class Type9 {
public static void main(String[] args) {
int outer=1;
{
int inner = 2;
System.out.println("inner= "+inner);
System.out.println("outer= "+outer);
}
//System.out.println("inner= "+inner); //블록밖에서 안쪽의 지역변수 참조불가
System.out.println("outer= "+outer);
}
}
public class Type10 {
public static void main(String[] args) {
//성적이 kor 97, math=80, eng=88점이다
//>>총점 ?점, 평균?점입니다.
//출력은 3가지로 모두 해보세요
float kor = 97;
float math = 80;
float eng = 88;
float sub = kor+math+eng;
//float avg = (sub/3);
//형변환
// 정수와 실수를 연산하면 >> 실수
float avg;
avg = sub/3.0f;
System.out.println("총점은 "+sub+"점 이고, 평균은 "+avg+"점 입니다.");
System.out.print("총점 "+sub+"점이고, ");
System.out.print("평균 "+avg+"점 입니다");
}
}
형변환
; 작은 것에서 큰 것으로는 자동형변환이 일어난다 - 자동형변환
short > int > long
int = short, long = int
; 큰 값이 작은 것으로 갈때는 잘림이 발생하여 자동형변환이 일어나지 않음 - 명시적 형변환
short = (short)int -> 명시적 형변환
; 정수와 실수를 연산하면 실수 7/3-->2, 7/3.0 -->2.5
public class Type11 {
public static void main(String[] args) {
int kor = 97;
int math = 80;
int eng = 85;
int sum = kor+math+eng;
double avg;
System.out.println("합계는 정수로 %d입니다", sum);
System.out.println();
avg = sum/3;
System.out.println("sum/3.0="+avg);
avg = sum/3f;
System.out.println("sum/3.0f="+avg);
avg = (float)sum/3;
System.out.println("(float)sum/3="+avg);
avg = sum/(float)3;
System.out.println("sum/(float)3"+avg);
}
}
import java.util.Scanner;
public class Type12 {
public static void main(String[] args) {
//세개의 수를 입력하시오 (정수, 실수, 정수)
//입력받은 수의 총 합과 평균을 구하고
//결과를 출력해 주세요
System.out.println("세개의 수 정수, 실수, 정수를 입력하세요");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
float b = sc.nextFloat();
int c = sc.nextInt();
float sum = (a+b+c);
float avg = sum/3;
System.out.printf("총 합은 %f이고, 평균은 %.1f입니다.", sum,avg);
}
}
연산자
; 연산자는 우선순위가 있다.
. 산술연산자 : +, -, *, /, %
. 증감연산자 : ++, --
. 대입연산자 : +=, -=, *=, /=, %/
. 비트연산자 : & | ^
. 시프트연산자: << >> <<< >>>
. 삼항연산자 : 조건식? 참:거짓
public class Operator1 {
public static void main(String[] args) {
//초를 입력받아서 몇시 몇분 몇초로 연산해서 출력한다.
System.out.println("계산할 시간을 초 단위로 입력해주세요>> ");
Scanner sc = new Scanner(System.in);
int time;
int hour, second, minute;
time = sc.nextInt();
second = time % 60;
minute = (time/60) % 60;
hour = (time/60) / 60;
System.out.println("입력받은 초시간은 "+time+"초이고");
System.out.println(hour+"시간, "+minute+"분, "+second+"초 입니다");
sc.close();
}
}
관계연산자
; > , < , >= , <= , !=
printf : %d, %f, %c- ' ', %s- " ", %b
public class Operator2 {
public static void main(String[] args) {
boolean result;
System.out.println("두 수를 입력해주세요>> ");
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
result = num1 > num2;
System.out.printf("%d %s %d = %b\n", num1, '>',num2,result);
result = num1 < num2;
System.out.printf("%d %s %d = %b\n", num1, '<',num2,result);
result = num1 >= num2;
System.out.printf("%d %s %d = %b\n", num1, ">=",num2,result);
result = num1 <= num2;
System.out.printf("%d %s %d = %b\n", num1, "<=",num2,result);
result = num1 == num2;
System.out.printf("%d %s %d = %b\n", num1, "==",num2,result);
result = num1 != num2;
System.out.printf("%d %s %d = %b\n", num1, "!=",num2,result);
sc.close();
}
}