일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL
- java
- java 구구단
- sqld 옵티마이져
- java Animal
- JAVA 제어문
- java Fish
- java 성별
- Java 메소드
- java 함수
- java spider
- Java Cat
- sqld trigger
- java 로또
- JAVA 연산자
- sqld grant
- java 상속
- SQLD 자격시험 개념정리
- SQLD 특강
- sqld 자격증
- java 단축키
- java string
- sqld revoke
- JAVA for문
- sqld deny
- SQLD 옵티마이저
- PLSQL
- sqld remame
- java 논리연산자
- SQLD 핵심포인트
- Today
- Total
SQLD, ECLIPS, JAVA,PYTHON, NODE....
[Eclips] Java class 1 - 규칙, 데이터 타입(bit,short,int,long,float,double,boolean) , 연산자종류, 주민번호 구하기, 키보드/달력 불러오기, for문, while문, do-while문 본문
[Eclips] Java class 1 - 규칙, 데이터 타입(bit,short,int,long,float,double,boolean) , 연산자종류, 주민번호 구하기, 키보드/달력 불러오기, for문, while문, do-while문
D_Aiden 2023. 12. 7. 11:522023.12.07
## 진법변환 및 아스키코드 문제
1. 1011100(2진수) --> 10진수 변환
(정답) 64+16+8+4 = 92
2진수 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
10진수 | 64 | 32 | 16 | 8 | 4 | 0 | 0 |
2. 211(10진수) --> 2진수 변환
(정답) 11010011
3. A3(16진수) --> 10진수 변환
(풀이) A가 10이므로 (10X16)+3= 163
4. 아스키코드(*암기필요)
1) null --> 0
2) 스페이스 문자 --> 32
3) A --> 65
4) a --> 97
## Java 동작구성
1. Java vs C언어
: two face launage(코드 생성을 위해 2번의 과정을 거침)
- OS: 플랫폼(CPU Center Processer Unit, 중앙처리장치)
2. 명명규칙
: 사용자 정의(=식별자) : 단, $와 _만 가능(사용은 비추천이라고 함)
(비추천 이유) --> ex. class A { class B --> A.java / A$B.java로 생성되므로 비추천
Java는 붙여서 쓰되 단어의 시작은 대문자
ex) Account_info (X) -- SQL, PLSQL
AccountInfo(O)
- camel casing: 첫글자는 소문자, 단어가 연결되면 단어시작은 대문자 --> 변수, 메소드명(함수=기능을 갖은 모듈)
- pascal casing: 첫글자는 대문자, 단어가 연결되면 단어시작은 대문자 --> 클래스(class)
- 상수형 변수(값 자체이며, 변하지 않는 수): 모든문자 대문자, 단어가 연결되면 단어시작은 _로 연결(언더바)
ex. int sal = 1000; int EMP_SAL=1000; 못바꾸는 상수형 변수
※ 모든 사용자정의(식별자)는 숫자로는 명명이 안되고, 영문으로만 작성(or 아스키코드).
3. 데이터 타입
자바의 메모리 구조 | ||
static | stack | heap |
클래스 영역 정적 영역 상수 영역 메서드 영역 |
※ java는 실제메모리인 heap에 저장할 수 없으므로 stack에 저장함
1) 기본형(8가지)
구분 | 저장값 | 자료형 |
기본 자료형 (소문자) |
참, 거짓: true, false | boolean |
정수: ..., -1, 0, 1, ... | byte, short, int, long | |
실수: -5.4, 1.7, 3.4 ... | float, double | |
문자(정수): 'A', 'D', 'b', 'e' ... | char | |
참조 자료형 (첫글자 대문자) |
객체: Object | 배열, 클래스, 인터페이스 |
기본형 타입에 대한 특징으로는 다음과 같다.
- 모두 소문자로 시작된다
- 비객체 타입이므로 null 값을 가질 수 없다. (기본값이 정해져 있음)
- 변수의 선언과 동시에 메모리 생성
- 모든 값 타입은 메모리의 스택(stack)에 저장됨
- 저장공간에 실제 자료 값을 가진다
출처: https://inpa.tistory.com/entry/JAVA-☕-변수의-기본형-참조형-타입 [Inpa Dev 👨💻:티스토리]
- 숫자
자료형 | 자료의 크기 | 값의 범위 | |
부대울수 | boolean | 1byte | true, false |
정수 음수, 0, 양수 |
byte | 1byte | -2^7 ~ 2^7-1 |
short | 2byte | -2^15 ~ 2^15 -1 | |
int | 4byte | -2^31 ~ 2^31 -1 | |
long | 8byte | -2^63 ~ 2^63-1 | |
실수 | float | 4byte | ±(1.40X10^-45~3.40 X 10^38) |
double | 8byte | ±(4.94X10^-324~1.79 X 10^-308) | |
문자(정수) | char | 2byte | 유니코드 문자(0~2^16-1) |
##실수 자료형의 구성
구분 | 부호비트 | 가수 비트 | 지수 비트 | 정밀도 | 구성 |
float(32bit) | 1 | 23 | 8 | 소수점 7자리 | float a = 1.0000001f (7자리+1+f) f로 끝 표시 |
double(64bit) | 1 | 52 | 11 | 소수점 15자리 | double d = 1.0000000000000001; |
ex. 2bit로 표현할 수 있는 정수는 2^2(=4개)(00,01,10,11)이므로
1byte(=8bit)로 표현할 수 있는 정수는 2^8(=256개)임.
1.1) 정수형: bit(1byte) , short((2byte) int(4byte), long(8byte)
1.2) 실수형: float(4byte) 대입연산자 순서. 뒷쪽부터 계산하는 방식
double(8byte) 소숫점이하 13자리까지 출력됨
※ 자동변환: 우선순위 : 정수< 실수, 작은크기 < 큰 크기 --> 변환연산자는 (type)형태로 코딩
ex. int a = 10+30; 의 경우, 10+30은 int가 아니고 float임
char(2byte) 타입이 byte(1byte) 타입보다 더 크니까 담을수 있어보이지만,
byte 타입을 변환하여 char타입에 저장할 수는 없다. (이유: char는 음수표현 불가) --> shot엔 가능
int a=10;
byte a=10; (a에 들어가는 1byte는 0~255까지만 들어감)
- 문자: char(* 정수형 포함, 2byte) --> 입력방식: '문자' 로 작은 따움표 코딩
ex) (아스키코드) 'A' 찍으면 --> 65가 출력됨
- 논리형: boolean (true or false) // 참,거짓 구별
2) 참조형
- 배열 :
- 클래스 : 객체의 주소를 저장(heap에 저장됨)
ex) String a = "hellow java";
문자열 중 특정 부분을 뽑아내고 싶을 때 (시작위치 <= a < 끝위치)
a.substring(0, 4); // Hell 출력
4. 연산자의 종류
자료형 | 연산기호 | 기능 | 결과 |
산술 연산자 | + - * / % | 사칙연산 및 나머지 연산 | 값 |
증감 연산자 | ++ -- | 값이 1씩 증가 감소 | |
비트 연산자 | & | ~ ^ | &는 and, |는 or, ~는 not, ^는 xor | |
시프트 연산자 | >> << >>> | 비트단위 이동 | |
비교 연산자 | < > <= >= == != | 값의 크기 비교 | 참 또는 거짓 |
논리 연산자 | && || ! ^ | &&는 and, ||는 or, !는 not, ^는 xor | |
대입 연산자 | = += -= *= /= &= |= >>= <<= >>>= |
산술연산 결과의 대입 ('연산자' + '='의 축약표현 |
실행 |
삼항 연산자 | X : Y (참 또는 거짓) |
참일때 X, 거짓일떄 Y |
a++; --> a변수가 사용된 후 증감(후의형)
++a; --> a에 1을 더함 (전위형)
a+=2; --> a=a+2 이며 a+2의 값을 a에 넣으란 의미
a*3;--> a=a*3 a*3의 값을 a에 넣으란 의미
ex) a=1; b=2; c=3;
if( a>b || b>c++) { // a>b가 참 아니면, 이후 연산은 무시됨.
Java level 1
public class DataTypeEX {
public static void main(String[] args) {
// TODO Auto-generated method stub
char ch1 = 'A';
char ch2 = '한';
char ch3 = 0x3091; //16진수 데이터를 의미하며, 0곱하기3091 형태
System.out.println(ch1);
System.out.println(ch2);
System.out.println(ch3);
System.out.println((int)ch1);
System.out.println((int)ch2);
String str="홍동우";
System.out.println(str);
// 연산자 연습
System.out.println("오늘은 자바수업 시작입니다.");
System.out.println("5+6="+(5+6));
System.out.println("5*6=" +5*6);
int a=3;
if (a>3 && ++a>3) {
System.out.println("조건만족");
}
System.out.println(a);
if (a<1 && ++a>3) {
System.out.println("조건만족");
}
System.out.println(a);
int i=20;
int j=30;
int res= (i>j)? i:j ;
System.out.println("큰값:" + res);
int p; // int는 0이 기본값
double t; // double은 0.0이 기본값
System.out.println("결과값: " +(2.45*1.65));
float f;
f =(float)0.123456789f; // 소수점 끝에 f가 안붙으면 double 임
System.out.println(f);
// 제어문자 --> (\문자 형태)
System.out.print("여기는 첫 줄");
System.out.print("입니다.\n"); // \n은 라인스킵
System.out.println("여기는 두번째 줄 입니다.");
System.out.println("여기는 \t두번째 줄\t\t 입니다."); // \t 1칸 띄우기
System.out.println("여기는 \\두번째 줄 입니다.");
}
결과
A
한
ゑ
65
54620
홍동우
오늘은 자바수업 시작입니다.
5+6=11
5*6=30
3
3
큰값:30
결과값: 4.0425
0.12345679
여기는 첫 줄입니다.
여기는 두번째 줄 입니다.
여기는 두번째 줄 입니다.
여기는 \두번째 줄 입니다.
5. Java의 라이브러리
: java는 package에 class들의 총합을 의미
- class가 갖는건 맴버변수와 메소드 외엔 못 갖음.
자바의 package는 java.lang 형태임 ex) system,out.println은 systerm(모니터)에서 out시킬 print란 의미.
package는 모두 소문자로 표시하며 java.io 형태
java level 2
(연습1) 주민번호 성별을 구분하시오
public class OperatorEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
String juminNo="041201-3211111";
// if ~ else~
char gender=juminNo.charAt(7); // char로 변수 담을때 리턴값은 charAt. 0이 시작하므로 7로 써야 됨
if (gender=='1' || gender=='3') {;
System.out.println("남자입니다.");
} else if (gender=='2' || gender=='4') {
System.out.println("여자입니다.");
}
}
}
결과
남자입니다.
java level 3
switch 명령: braek를 줘서 명령값을 구분해야 되며, 반드시 default 값으로 마무리 되야 된다.
(형태)
switch (정수형 or String) {
case 값1 : 명령1; braek; // break는 case 명령문 끝에 써야 구분됨.
case 값2 : 명령2; // case 값1 에는 값을 1개만 취할 수 있음.
defalt : 그 외의 결과;
}
(연습2) 주민번호로 지역구분 하시오.
public class OperatorEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
String juminNo="041201-3911111";
// if ~ else~
char gender=juminNo.charAt(7); // char로 변수 담을때 리턴값은 charAt. 0이 시작하므로 7로 써야 됨
if (gender=='1' || gender=='3') {;
System.out.println("남자입니다.");
} else if (gender=='2' || gender=='4') {
System.out.println("여자입니다.");
}
// switch case(0 서울, 1or2 경기, 3 충청도, 4 강원도, 5 전라도, 7or8 경상도, 9제주도)
char area=juminNo.charAt(8);
switch (area) {
case '0': System.out.println("서울시"); break;
case '1':
case '2': System.out.println("인천/경기도"); break;
case '5': System.out.println("강원도"); break;
case '7':
case '8': System.out.println("경상도"); break;
default : System.out.println("제주도");
}
}
}
결과
남자입니다.
제주도
(연습3) 나이를 계산하시오.
(함수형태)
String 변수 = 주민번호변수,substring(0,2) // substring(시작위치, 끝위치 -1) 형태임
int birthyear = Integer.parseInt(nayiStr) // String 값을 int로 변환함수는 Integer.parseInt 임
// 나이구하기
String nayiStr = juminNo.substring(0,2); //substring(시작위치, 끝위치 -1)형태임
int birthyear=Integer.parseInt(nayiStr); // String값을 int로 변환하는 함수는 Integer.paseInt 임
int age=0;
if(gender== '1' || gender=='2') {
age=2023-(1900 + birthyear)+1;
System.out.println(age);
}else if(gender=='3'||gender=='4') {
age=2023-(2000 + birthyear)+1;
System.out.println(age);
}
}
}
(연습4) 현재날짜 기준으로 나이를 구하시오.
Calendar c= Calendar.getInstance(); // 현재날짜의 달력 불러오는 함수.
int years = c.get(Calendar.YEAR); // calendar 불러오는 함수가 get(calendar.YEAR)임.
(연습3) 키보드를 불러와서 주민번호 입력해 나이 구하는 방법
Scanner. scan2 = new Scanner(system.in); // in으로 입력하도록 코딩
Scanner scan;
System.out.printLn("주민번호 입력:");
String juminNo=scan2.nextLine(); // nextLine 문자열 값을 사용하는 명령어
(참고) 숫자는 nextint()임
## for, while, do-while 형태
while(조건) {
//탈출 : break;
// 다시 조건으로 비교: contine;
do { (반복문)
} while(조건) ;
(연습4) while을 이용해서 1~100까지 합계를 구하시오.
do-while을 이용해서 1~100까지 합계를 구하시오.
// for, while, do-while
// 1~100까지 합계를 구하기
int sum =0;
for(int i=1; i<=100; i++) {
sum += i;
}
System.out.println(sum);
// 1~100까지 합계를 while문으로 구하기
int sums=0;
int d=0;
while(d<100) {
d += 1;
sums=sums+d;
}
System.out.println(sums);
// 1~100까지 합계를 do-while문으로 구하기
int hap = 0;
int c = 0;
do {
hap += 1;
c+=hap;
} while (hap<100);
System.out.println(c);
}
}
결과
5050
5050
5050
'Java' 카테고리의 다른 글
[Eclips] Java class 2 - 논리연산자, 대입연산자, 논리시프트, 구구단, 짝수단, 배열, 로또, 동치연산자(가위바위보) (0) | 2023.12.08 |
---|---|
[Eclips] Java class 1 - 연산자 문제 (4) | 2023.12.07 |
[Eclips] Java class 1 - JDK설치하기, 버전, 종류, 아스키코드, 진법변환, 이클립스 단축키 (0) | 2023.12.06 |
(선행)[Oracle] Java, Python - 혼자 공부하는 사이트 (0) | 2023.10.23 |
(선행)[Oracle] Java Class 10 - 상속의 개념 & 연습, 인터페이스 구조 (0) | 2023.10.23 |