728x90
1.Ex01)
package days03;
import java.io.BufferedReader;
//컴파일러가 자동으로 추가해 준다.
//import java.lang.*;
/**
* @author kim
* @date 2023. 1. 30.-오전 9:49:48
* @subject [package와 import문 설명]
* @content
*
*/
public class Ex01 {
public static void main(String[] args) {
// [import 문 설명]
/*
* 1.패키지(package)?
* ㄱ. 서로 관련있는 클래스의 묶음
* ㄴ. 실제 물리적으로는 폴더(디렉토리)이다.
* ㄷ. 목적: 효율적으로 클래스를 관리하기 위해서
*
* days01, days02, days03 패키지
* 이유? 수업1일차, 수업2일차, 3일차 클래스를 묶어 놓기 위해서
* 2.패키지 선언
* Ex01.java 소스파일(Source File)의 맨 위에 코딩한다.
* package 패키지명[.서브패키지명.서브패키지명];
* 어떤 클래스는 반드시 패키지에 속해있다.
*
* 3.다른 패키지 안의 클래스를 사용하려면?
* days03.Ex01 - main(){
* days01.HelloWorld 클래스를 사용하려면
* }
*
* 패키지명[.서브패키지명].클래스명 으로 선언해서 사용해야 한다.
* days01.HelloWorld hw; //days01의 HelloWorld 클래스를 hw라는 변수로 사용하겠다.
*
* 4.Full Name을 적으세요...
* => 패키지명.서브패키지명.클래스명
*
* //BufferedReader
* java.io.BufferedReader br;
* f3를 BufferedReader을 클릭해서 선언문 확인해보기
*
* 하지만, import java.io.BufferedReader; import 구문을 추가해준다면
* 패키명을 지정해주지 않아도 됨
* 따라서, BufferedReader br; 쓸 수 있다.
*
* 5.Static이 붙어있는 import문
*
*/
java.io.BufferedReader br1;
BufferedReader br2;
BufferedReader br3;
BufferedReader br4;
//[System 클래스]
//1. 어떤 패키지 속한 클래스 확인? java.lang 패키지 안에 속한 클래스
java.lang.System.out.println("홍길동");
//import java.lang.System; 왜? 안 썼었어도 쓸 수 있었을까?
//sol)import java.lang.*
// 자바.랭.모든클래스는 컴파일러가 자동으로 추가해줘서 굳이 쓰지 않아도 되는 것 이다.
}
}
2.Ex02)
package days03;
/**
* @author kim
* @date 2023. 1. 30.- 오후 12:48:38
* @subject 음수 표현 방법 [음수 → 2진수 표현 방법]
* @content 1. 부호와 절대치
* 2. 1의 보수법
* 3. 2의 보수법(현재) = 1의 보수 + 1
*
*/
public class Ex02 {
public static void main(String[] args) {
// 'A' → 문자코드표 → 65 →0100 0001
//-10 [음수]/양수 →[][][][] [][][][]
/*
*
* -10 [][][][] [][][][]
* 1)절대치 |-10| 절대값은 10인 양수
* [0]000 1010 10 양수
* [1]000 1010 -10 음수
*
* 0000 1010
* 2)1의 보수(보수는 0 → 1, 1 → 0으로 바꾼다는 것)
* 1111 0101
*
* 3)1의 보수에 1더하기
* 1111 0101
* 0000 0001
* --------------
* 1111 0110
*
* [문제] -36
* |-36|=36
* 1)0010 0100
*
* 2)1101 1011
*
* 3)1101 1100
*
*/
}
}
3.Ex03)
package days03;
/**
* @author kim
* @date 2023. 1. 30.-오후 2:16:02
* @subject 실수 → 2진수 표현
* @content 실수가 어떻게 2진수로 저장이 되어서 표현이 되는지
*
*/
public class Ex03 {
public static void main(String[] args) {
/*
* 1. 실수? .소수점이 있는 수를 실수 라고 한다.
* ex) 3.14
* 3.0
* 3. 모두 실수이다
* 2.자바에서 숫자 → 실수형 - float(4), double(8)
* 3.626 실수
* float [s][8][][][][][][] [E][23][][][][][][] [][][][][][][][] [][][][][][][][]
* 127+1=128
* 0 1 0 0 0 0 0 0 1101
* double [s][][][][][][][] [][][E][52][][][][] [][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]
*
* float 단정도 정밀도
* double 배정도 정밀도
* 실수는 어떻게 여기에 저장되는지 알아보도록 하자!
*
* 3.625 실수
* 3 →(2진수로 변환) → 11
* 0.625 →(2진수로 변환) → ? [1][0][1]
*
* 0.625*2=[1].25
* 0.25*2 =[0].5
* 0.5*2=[1].0 //소수점이 0이 될때 까지 반복
* :
* :
* :
* 부동소수점표기(앞에는 무조건 1이 나오게 하겠다)
* 11.101
* 1.1101*2^1
* 가수 지수
*
*
* (기억)
* 9.1234567 유한소수 → 2진수 무한
* 1001.0001111100110101011011011...
* 부동소수점표기
* 1.0010001111100110101011011011...2^3
* float 가수 23비트 0010001111110011010110
* double 가수 52비트 00100011111100110101100010001111110011010110
*
* 메모리 f/d 저장 오차발생하는 자료형 ****
* 그래서, 실수는 무조건 오차가 적은 double로 선언하기!!!!
*
* [ BigDecimal 클래스 ]
*
*/
//[문제] 키와 몸무게 저장할 변수를 선언하세요..
//키 :179.8cm 실수:float, double
//몸무게:65.6kg 실수:float, double
//Type mismatch: cannot convert from double to float
//float height=179.8;
float height=179.8f; //접미사 f, F
/* 다른 자료형 타입이다.
* 0 int [][][][]
* 0. double [][][][][][][][]
* 0D double [][][][][][][][]
* 0F float [][][][]
* 0L long [][][][][][][][]
*
* d, D, f, F, l, L 접미사...
*/
//float = double 타입 불일치
double weight=65.6; //double weight=65.6d;, double weight=65.6D;도 가능
System.out.printf("키=%f, 몸무게=%f\n", height, weight);
}//main
}//class
4.Ex04)
package days03;
/**
* @author kim
* @date 2023. 1. 30.- 오후 2:51:34
* @subject 형(type)변환 == 자료형 변환
* @content 1.형변환?
* 2. 형변환 종류 2가지 설명
*
*/
public class Ex04 {
public static void main(String[] args) {
/*
* 1.모든 변수, 리터럴은 자료형이 있다.
* 자료형 변수명;
* 2. true, false → boolean
* 1, 2, 100 → int
* 3.14 → double
* 'A', 'X'→char
* "홍길동" → string
* 3. 프로그램을 작성하다 보면 서로 다른 타입(자료형) 간의 연산을 수행할 때가 있다.
* 서로 다른 자료형을 일치시켜야 할 필요가 있다. → "형변환"이라고 한다.
*
* 4.형변환
* 1)강제 형변환
* 2)자동 형변환(2가지 경우)
* ㄱ.작은자료형 +(연산) 큰자료형 → 자동으로 큰 자료형으로 전환
* double
*
* [자료형의 크기]
* byte < short < int < long < float < double
* char
* long(8) < float(4) //long형과 float형중에서는 float이 더 큰다(메모리와 관련X)
*
* ㄴ. 좌측 큰 자료형 = 우측 작은 자료형일 떄 자동으로 형변환된다.
* int a=100;
* int b=100;
* double result = 300;
* */
int i = 100; //int 4바이트 정수 [][][][01101100]
double d = 3.14; //float 8바이트 실수 : [0][][][][][][][]
//100+3.14=103.14
double result=d+i; //double d + int i 형변환 → 자동형변환이 double형으로된 사례
System.out.println(result);
//Type mismatch: cannot convert from double to float
//좌측 우측
// f d
//좌측보다 우측이 더 크기 때문에 자동형변환이 안된다.
//float f = 3.14;
//double q=3.14f;
//byte -127~+127 정수 바이트
//Type mismatch: cannot convert from double to float
// int
//byte age = 300; 자동형변환
//[강제형변환 설명]
//우측 자료형이 좌측 자료형보다 큰 자료형이기 때문에 자동 형변환이 되지 않는다.
//float f = 3.14;
//1)float f = 3.14f; 3.14가 float형이라고 지정해주는 방법1
//double → float 강제로 형변환
//이때 사용하는 연산자가 "cast 연산자"
//"cast 강제 형변환"이라고 한다.
//float f = 3.14;
float f=(float)3.14;
//연산자 우선 순위:곱셈 > 덧셈
//3+5*2
//13
//()최우선 연산자
}//main
}//class
5.Ex04_02)
package days03;
/**
* @author kim
* @date 2023. 1. 30.-오후 3:33:16
* @subject 형변환 예제
* @content 래퍼 클래스? 기본형을 사용하기 쉽도록 포장(가공, 구현)해 놓은 클래스
*
* Integer.MAX_VALUE
* Integer.MIN_VALUE
*
*/
public class Ex04_02 {
public static void main(String[] args) {
//int i = 2147483647;
//기본형 → 래퍼(wrapper)클래스 : 기본형이 사용하기 쉽도록 가공한 클래스를 래퍼 클래스
// int → integer 클래스
int i = Integer.MAX_VALUE;
int j=100;
int k=i+j;
//long k=i+j;도 2147483647 + 100 = -2147483549이 나온다 왜냐하면 이미 i+j값이 반영되서 k값에 할당되는것 때문
long q=(long)i+j;
//i=[][][][]
//j=[][][][]
//k=[][][][] int 표현할 수 있는 값의 범위를 벗어난다. 산술 오버/언더플로우
System.out.printf("%d + %d = %d\n%d", i, j, k, q);
//2147483647 + 100 = -2147483549
}
}
6.Ex05)
package days03;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author kim
* @date 2023. 1. 30.-오후 3:52:47
* @subject
* @content 형변환, 표준입출력
*
*/
public class Ex05 {
public static void main(String[] args) throws IOException {
// [이름, 국어, 영어, 수학] 입력받아서
//총점, 평균 계산
//이름은 홍길동이고, 국어=90, 영어=89, 수학=78, 총점=???, 평균=??.??이다." 출력
String name ="홍길동";
byte kor=90;
byte eng=89;
byte math=78;
short total; //byte는 총점합이 최대 300인데, byte의 127값이 넘어가므로
double avg;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print(">이름 입력? ");
name=br.readLine();
System.out.print(">국어 입력? ");
//Type mismatch: cannot convert from String to byte
//byte string
kor=Byte.parseByte(br.readLine()); //readLine() 함수는 입력받은 값을 String(문자열)으로 반환하는 함수
//형일치 코딩...
//기본형 byte → 래퍼클래스 Byte.parseByte() 함수 메서드
//String → byte로 형변환시켜줘야 한다.
System.out.print(">영어 입력? ");
eng=Byte.parseByte(br.readLine());
System.out.print(">수학 입력? ");
math=Byte.parseByte(br.readLine());
//Type mismatch: cannot convert from int to short
//short = int
// =우측항 연산먼저
// b + b + b : why? int형이 되어서 Type mismatch오류가 나는것 일까?
//CPU 처리: int보다 작은 자료형은 int로 처리하기 때문에 저 값을 int로 처리해서 int값이 나온다.
//cast연산자를 사용해서 강제 형변환이 필요한다.
total=(short)(kor+eng+math); //(kor+eng+math)가 최우선 연산자
avg=(double)total/3;
//java.util.IllegalFormatConversionException: d != java.lang.Double
// 잘못된 형식 conversion 예외
// %d, f, c, b, s
//1, 2, 4 → 평균:2.3333333333333333333333
//출력값은?→평균:2.000000
//이유는 avg=total/3;
// double =short/int 인트형으로 이미 계산이 끝났기 때문에 강제 형 변환 필수
System.out.printf("이름은 %s이고, 국어=%d, 영어=%d, 수학=%d, 총점=%d, 평균=%f이다.", name, kor, eng, math, total, avg);
//long은 자료형 Long은 래퍼클래스
//double은 자료형 Double은 래퍼 클래스
}//main
}//class
7.Ex05_2)
package days03;
public class Ex05_02 {
public static void main(String[] args) {
String s="90";
//String → int 형변환
//int kor=Integer.parseInt(s); //"90"->90
//String → Long 형변환
//long kor=Long.parseLong(s); //"90"->90
//String → Short 형변환
//short kor=Short.parseShort(s); //"90"->90
//String → Float 형변환
//float kor=Float.parseFloat(s);
//String → Double 형변환
//double kor=Double.parseDouble(s);
}
}
8.Ex06)
package days03;
/**
* @author kim
* @date 2023. 1. 30.-오후 4:55:13
* @subject 연산자(operator)
* @content
*
*/
public class Ex06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 1.연산자(operator)
* 1)정의: "연산을 수행하는 기호"를 연산자라고 한다. ex)+, -, *, /등등
* 2)피연산자(operand):연산의 대상
* ex) 3 + 5
* + 연산자
* 3 5연산의 대상(피연산자)
* 2.식(expression)
* 1)연산자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것.
*
* 3.연산자의 종류
* 1)항(피연산자)의 갯수에 따라 단항, 이항, 삼항 연산자
* 3 + 5 덧셈연산자(피연산자 반드시 2개필요)==이항연산자, 연산의 대상(피연산자)의 갯수에 따라 단항, 이항...
* 2)기능에 따라서
* ㄱ.산술연산자 +
* ㄴ.비교연산자 Ex06_02.java
* ㄷ.논리연산자
* ㄹ.대입연산자
* 등등
*
*/
//ㄱ.산술연산자(이항연산자)
int i=10, j=3;
System.out.println(i+j); //13
System.out.println(i-j); //7
System.out.println(i*j); //30
System.out.println(i/j); //3 결과값 자체가 (int)/(int)형이기 때문에
System.out.println(i%j); //나머지 연산자
//(주의할점)
//System.out.println( 10/0 ); //정수/0 java.lang.ArithmeticException(산술적예외) 발생: / by zero
//System.out.println( 10%0 ); //정수%0 java.lang.ArithmeticException(산술적예외) 발생: / by zero
//정수를 0으로 나누건, 나머지를 구하든, 항상 산술적 예왹가 발생한다.
System.out.println( 10.0/0 ); //실수/0 infinity(무한대)
System.out.println( 10.0%0 ); //NaN(Not a Number 숫자가 아니다.)
}//main()
}//class
9.Ex06_2)
package days03;
/**
* @author kim
* @date 2023. 1. 30.-오후 5:22:19
* @subject 비교연산자: > < >= <= ==(같다의 의미로는 =이 2개) !=(느낌표 =, 항상 느낌표 먼저)
* @content ㄴ 비교연산자의 결과값은 Boolean형이다.(True/False)
*
*/
public class Ex06_02 {
public static void main(String[] args) {
//
int i=10,j=5;
System.out.println(i>j); //True
System.out.println(i<j); //False
System.out.println(i>=j); //True
System.out.println(i<=j); //False
System.out.println(i==j); //False
System.out.println(i!=j); //True
//(주의할점)
System.out.println(i=j); //5 =은 같다의 연산자가 아니다. 대입연산자이다. j값을 i에 넣겠다. i=5, j=5가 되어서 5나옴
System.out.println(i==j);
//논리연산자 ~~ (내일)
}
}
728x90
'쌍용국비교육 > java' 카테고리의 다른 글
days11 : java수업내용정리(2월 9일) (0) | 2023.02.09 |
---|---|
day05 : java수업내용정리(2월 1일) (0) | 2023.02.01 |
day04 : java수업내용정리(1월 31일) (0) | 2023.01.31 |
day01 : java수업내용정리(1월 26일) (0) | 2023.01.31 |
day02 : java수업내용정리(1월 26일) (0) | 2023.01.27 |