POWER JAVA 2장. 자바프로그래밍 기초
목차
1. 자바 프로그래밍 구성 요소
2. 변수와 자료형
3. 콘솔에서 입력받기
4. 수식과 연산자
1. 자바 프로그래밍 구성요소
package book2;
public class Add { //클래스 정의
public static void main(String[] args) { //메소드 정의
int x,y,sum; //변수 선언
x = 100; //대입 연산
y = 200;
sum = x+y;
System.out.println("sum"); //출력문
}
}
클래스는 자바와 같은 객체 지향 언어의 기본적인 빌딩 블록
자바에서 소스파일은 항상 public이 붙은 클래스의 이름과 동일해야 한다. 그래야 실행이 가능함.
메소드: 메소드는 특정한 작업을 수행하는 코드의 묶음임.
메소드 호출 예시)
package book2;
public class Add2 {
public static void main(String[] args) {
int z;
z = addition(100,200); // 메소드 호출하는 방법
System.out.println(z);
}
public static int addition(int x, int y) {
int sum = x + y;
return sum;
}
}
문장: statement는 사용자가 컴퓨터에게 작업을 지시하는 단위
프로그램을 이루는 가장 기초적인 단위이다.
EX) sum = x+y;
주석: comment 소스코드가 하는일 을 설명함
/* */ 또는 //
2. 변수와 자료형
변수: variable은 데이터를 담아두는 상자로 생각하면 됨 EX) int x;
식별자 만들기
- 알파벳문자, 숫자, 밑줄문자로 이루어짐. 한글 이름도 가능
- 첫번째 문자는 반드시 알파벳 또는 밑줄문자여야 함. 숫자로 시작 불가능!!!!!!!
- % & # 사용 불가, $ _ 는 사용 가능하다.
- 대문자와 소문자를 구별함
- 자바언어키워드는 사용할 수 없음
//사용가능한 식별자
int sum;
long employee_id
class Sprite10 { }
void get_$() { }
//사용 불가능한 식별자
int lstPrizeMoney;
double super;
int #ofcomputer
class %_of_money
관례
클래스명: 단어의 첫글자는 대문자로 한다.
변수명: 첫 단어의 첫글자는 소문자로 시작하고, 두번째 단어부터 대문자로 한다. payRate, accNumber 처럼
상수: 상수는 모든 글자를 대문자로 한다. MAX_NUMBER
자료형: data type은 변수에 저장되는 데이터의 타입을 의미한다.
- 정수형: byte, short, int, long
- 실수형, double, long
- 논리형: boolean
- 문자형: char
참조형
- 클래스, 인터페이스, 배열
문자형인 char는 하나의 문자를 저장할 수 있음. 자바에서는 모든 문자를 2바이트 유니코드로 나타낸다!
리터럴: x = 100; 에서 100과 같이 소스코드에 직접 쓰여 있는 값을 의미.
리터럴에는 정수형, 부동소수점형, 문자형 등이 있음.
논리형 리터럴: boolean type은 참과 거짓을 나타내는데 사용
boolean flag = false;
boolean x = 1<2; // 결과값 true
상수: constant란 프로그램이 실행하는 동안 값이 변하지 않는 수, 또는 변경이 불가능 한 수를 의미한다.
EX) final double PI = 3.141592;
변수타입 추론: JAVA10부터는 var키워드를 사용할 수 있음. 지역 변수 타입을 자동으로 추론해주는 기능을 함.
var age =22;
var name = "Kim";
MAP<String, String> map = new HashMap<String, String>(); //상속된 객체 예시
var map = new HashMap<String, String>(); //여기서 map은 자동으로 MAP<String, String>으로 추론됨
예제1. 1광년 거리 계산
//// 예제 1광년 거리 계산하기
package book2;
public class Light {
public static void main(String[] args) {
final double LIGHT_SPEED = 3e5;
double distance;
distance = LIGHT_SPEED*365*24*60*60;
System.out.println(distance);
}
}
//원의 면적 계산하기
package book2;
public class AreaTest {
public static void main(String[] args) {
final double PI = 3.141592;
double radius, area;
radius = 5.0;
area = PI * radius * radius;
System.out.println(area);
}
}
문자열: String은 문자들의 모임
형변환: 컴퓨터에서는 산술적인 연산을 하기 전에 피연산자 타입을 통일해야 한다.
강제 형변환
int x = 3;
double y = (double) x;
예제) 형변환 실습하기
package book2;
public class TypeConversion {
public static void main(String[] args) {
int i;
double f;
f = 1/5; //0
System.out.println(f); // 0.0
f = (double)1/5; //0.2
System.out.println(f); // 0.2
i = (int)1.7 + (int)1.8; //1+1
System.out.println(i); //2
}
}
3. 콘솔에서 입력받기
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
예시) 사용자로부터 두수 입력받아서 더하기
package book2;
import java.util.Scanner;
public class Add2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x,y,sum;
System.out.print("첫번째 숫자 입력: ");
x = sc.nextInt();
System.out.print("두번째 숫자 입력: ");
y = sc.nextInt();
sum = addition(x,y);
System.out.println(sum);
}
public static int addition(int x, int y) {
int sum = x + y;
return sum;
}
}
4. 연산자
수식과 연산자
수식은 피연산자와 연산자 사이에 이루어진다.
연산자는 특정한 연산을 나타내는 기호를 의미함 operator
피연산자는 연산의 대상임 operand
산술연산
예제) 나머지 연산자
//예제) 나머지 연산자
package book2;
import java.util.Scanner;
public class CalTime {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("초를 입력하세요: ");
int time = sc.nextInt();
int sec = time%60;
int min = time/60;
System.out.println(time+"초는"+min+"분"+sec+"초 입니다.");
}
}
예제) 복합대입연산자
//예제) 복합대입 연산자
package book2;
public class IncOperator {
public static void main(String[] args) {
int x =1, y=1;
int a = x++; // x의 값이 사용되기 전에 증가가 된다. a=1
int b = ++y; //y의 값이 사용된 후 증가가된다. b=2
System.out.println("a="+a+" b="+b);
int c = 100, d=200;
c+=10;
d/=10;
System.out.println("c="+c+" d="+d);
}
}
관계연산자: 두 개의 피연산자를 비교하는 데 사용한다.
논리연산자: 여러 개의 조건을 조합하여 참인지 거짓인지 판별할 때 사용함.
예제) 관계/논리 연산자 실습하기
//예제 관계 논리 연산자 실습하기
package book2;
public class CompOperator {
public static void main(String[] args) {
System.out.println((3==4)+" "); //형변환 시켜주는 거 string처럼 쓰이게
System.out.println((3!=4)+" "); //true
System.out.println((3 > 4)+" "); //false
System.out.println((3 < 4)+" "); //true
System.out.println((3==3 && 4==7)+" "); //false
System.out.println((3==3 || 4==7)+" "); //true
}
}
비트 연산자
비트연산은 프로그램과 하드웨어 칩 간의 통신에 사용된다.
예제) 비트연산 실습
//예제) 비트 연산자 실습하기
package book2;
public class BitOperator {
public static void main(String[] args) {
byte status = 0b01101110;
System.out.print("문 열림 상태=" +((status & 0b00000100)!=0)); // 비트2를 검사하기 위한 것.
}
}
비트 이동연산자
조건 연산자
예제) 조건연산자
//예제) 조건연산자
package book2;
public class Pizza {
public static void main(String[] args) {
double area1 = 2*3.141592 *20 *20;
double area2 = 1*3.141592 *30 *30;
System.out.println("20cm 피자 면적= "+ area1);
System.out.println("20cm 피자 면적= "+ area2);
System.out.println((area1>area2)? "20cm 두 개":"30cm 한 개");
//(area1>area2)? "20cm 두 개":"30cm 한 개" 이 부분이 조건 연산자임 !!
}
}
miniproject, exercise
도전문제1. 30cm 한 개 주문하는 게 더 이득이다.
도전문제2. println()은 프린트가 줄바꿈 되어서 나오고 print()는 출력되고 나서도 줄바꿈이 되지 않는다.
중간점검
1. System.out.println(10%3) = 1
2. System.out.println(10>>1)
3. int x=2; System.out.println(x--)
int x=2;
System.out.println(x--);
2 나옴 왜냐면 일단 2가 print되고 나서 -1 되기때문에
미니프로젝트. 섭씨-화씨 온도 변환
package exercise2;
import java.util.Scanner;
public class FtoC {
public static void main(String[] args) {
System.out.println("=================");
System.out.println("1. 화씨");
System.out.println("2. 섭씨");
System.out.println("=================");
Scanner sc = new Scanner(System.in);
System.out.print("번호를 입력하시오: ");
int num = sc.nextInt();
if (num==1) {
System.out.print("화씨 온도를 입력하세요: ");
double f_temp = sc.nextDouble();
double c_temp = ((5.0/9.0)*(f_temp-(double)32)); //중요포인트 5/9와 5.0/9.0은 차이가 있다.
System.out.println("섭씨온도는" + c_temp);
}
else {
System.out.print("섭씨 온도를 입력하세요: ");
double c_temp = sc.nextDouble();
double f_temp = ((9.0/5.0)*c_temp + (double)32);
System.out.println("화씨온도는" + f_temp);
}
}
}
중요한 포인트는 5/9로 했을 때랑 5.0/9.0으로 했을 때 값이 완전 달라진다는 점!!
Exercise
1. 자바언어에서 지원되는 기초 자료형에는 어떤것들이 있는가?
byte, short, int, long, float, double, char, boolean
2. 문자열은 어떤 클래스를 이용하여 처리할 수 있는가?
String 클래스
3. 클래스를 정의하는 키워드는?
6. 다음 설명에 부합하는 변수를 선언해보자
(a) long size;
(b) var height = 183.2;
(c) char ch = '가';
(d) string city = "Seoul";
7.
int v =10;
int k = v++%5;
//System.out.println("v=" +v+"k="+ k);
k = 10%5 = 0
v = 11
11번.
(height>165 && height<180)
(height<=165)
(height<=165 || age<10)
13번.
int i=10;
int j=20;
String s1 ="9";
System.out.println(i+j+s1);
--> 309
14번.
int i = (int)Math.random(); //0~0.99999까지의 숫자 반환
System.out.println(i); //0 형변환되서
--> 0
15번. boolean변수값을 반전시키는 연산자는? ! NOT
boolean a = false;
System.out.println(!a);
17번. 출력결과를 예상하기
String s1 ="abc";
String s2 = "def";
String s3 = s2; //"def"
s2 = "ghi";
System.out.println(s1+ s2+ s3); //abcghidef
programming
1.
package programming;
import java.util.Scanner;
public class Orange {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("오렌지 개수를 입력하시오: ");
int x = sc.nextInt();
int box = x/10;
int result = x%10;
System.out.println(box+"박스가 필요하고 "+result+"개가 남습니다." );
}
}
2.
package programming;
import java.util.Scanner;
public class MileKm {
public static void main(String[] args) {
final double Mile_1 = 1.609;
Scanner sc = new Scanner(System.in);
System.out.print("마일을 입력하세요: ");
double x = sc.nextFloat();
double km = Mile_1*x;
System.out.println(x+"마일은 "+ km+"킬로미터입니다.");
}
}
3.
package programming;
import java.util.Scanner;
public class Calcul {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("x: ");
int x = sc.nextInt();
System.out.print("y: ");
int y = sc.nextInt();
System.out.println("두수의 합: "+ (x+y));
System.out.println("두수의 차: "+ (x-y));
System.out.println("두수의 곱: "+ (x*y));
System.out.println("두수의 평균: "+ (x+y)/2);
System.out.println("큰 수 : " +((x>y)?x:y));
}
}
4.
5.
6.
package programming;
import java.util.Scanner;
public class Allfile {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("드라이브 이름: ");
String name = sc.next();
System.out.println("디렉터리 이름: ");
String direc = sc.next();
System.out.println("파일 이름: ");
String file = sc.next();
System.out.println("확장자: ");
String sr = sc.next();
System.out.println("완전한 이름은"+ name + ":" + direc + file+ "."+sr);
}
}
7.
8.
9.
10.