java - jsp
- android
java의 개량언어 - kotlin
JDK - Java Development Kit: 개발자 도구
- SE(Standard Edition) : Core
- EE (Enterprise Edition) : 기업용 추가 라이브러리(대용량, 분산, 웹/데이터베이스)
- ME (Micro Edition) : 모바일 추가라이브러리
* JDK는 기본적으로 SE이며 EE, ME는 따로 추가..
<JDK를 제공하는 업체>
sun - java opensource
oracle 사용권
OpenJDK - linux
JDK
자바개발도구
JRE(Java Runtime Environment:실행환경)
JVM(Java Virtual Machine)
System Library
sun - 8버전
oracle -9버전
Java - 핵심 서버
버전 => 안정성
java- 컴파일 언어
소스 -.java
컴파일 - javac
파일 - .class
실행 - java(jvm 실행기)
소스코딩
전용 에디터- visual studio code
IDE(개발자 환경)
- 이클립스
- Intellij
- netbeans
<암기>
문법
1. 대/소문자 구별
2. 문장 끝에는 반드시 ;
3. 주석(comment)
// /* ~*/
형태
public class 클래스명 {
public static void main(String[] args){
//프로그램 시작
//화면 출력
System.out.println("문자열");
//프로그램 끝
}
}
클래스명 = 파일명
식별자 규칙 = js와 동일
* 대문자로 시작
Java (Visual Studio Code로 코드 짜기)
javac -> 클래스를 생성
java로 클래스 실행
- java 파일에 한글이 있을 경우
컴파일 명령어에 javac -encoding utf-8 HelloWorld.java 처럼 인코딩 명령어를 추가해주어야한다.
* 기본 출력
public class HelloWorld{
public static void main(String[] args){
//System.out.println("Hello java");
System.out.print("안녕 자바"); //띄어쓰기 없음
System.out.print("안녕 자바");
System.out.println();
System.out.println();
System.out.println("안녕 자바"); //ln줄바꿈이 있기 때문에 두줄로 나옴
System.out.println("안녕 자바");
//형식화(format)된 문자열
//%s - 문자열
//%d - 숫자
System.out.printf("%s - %s","Hello","World");
}
}
상수 - final
final int x =5; //final(상수)
System.out.println(x);
DataTypeEx01.java - 대소문자 구분
public class DataTypeEx01{
public static void main(String[] args){
//boolean (true/false)
boolean bool1=true; //True는 안됨
System.out.println(bool1);
}
}
DataTypeEx02.java - 문자와 문자열 / 아스키코드
**문자열 표현 시 쌍따옴표 사용하기**
public class DataTypeEx02{
public static void main(String[] args){
//char - 한 자
//String - 문자열
char c1 = 'A';
System.out.println(c1);
//code
//영어, 숫자, 특수: ascii
//다국어: unicode
char c2=97;
System.out.println(c2);
char c3 ='\uc790';
System.out.println(c3);
c2=97+2;
System.out.println(c2);
//char c4 ='abc'; 문자 하나이기 때문에 문자열을 집어넣을 수 없다.(자료형태 안맞음)
}
}
// \n -enter키
// \t -tab키
// \' -단일 따옴표 표기
// \" -쌍따옴표 표기
DataTypeEx05.java - 진법에 따른 숫자표현
public class DataTypeEx05{
public static void main(String[] args){
//정수
int i =1;
System.out.println(i);
byte b =1;
short s =1;
System.out.println(b);
System.out.println(s);
//long l =1;
long l =1L;
System.out.println(l);
int i2=0b1010;
int i8=030;
int i16=0xA4;
System.out.println(i2);
System.out.println(i8);
System.out.println(i16);
//10 -> 각 진수
int i10=100;
System.out.printf("%o\n",i10); //8진수 표현
System.out.printf("%x\n",i10); //16진수 표현
int i3 = 1_000_000; //실행결과 : 1000000 숫자 표기법임
System.out.println(i3);
//float,double
float f1=10.1f; //possible lossy conversion from double to float오류 발생(수용 범위가 작아서 안되는것)
//float형태로 저장하고 싶다면 숫자뒤에 f를 붙이면 된다.
System.out.println(f1);
double d1=10.1;
System.out.println(d1);
//1000을 지수형태로 표현할 때 double사용한다.
double d2=1.0e3;
System.out.println(d2);
}
}
OperatorEx01.java -자료형의 오버플로우
public class OperatorEx01{
public static void main(String[] args){
System.out.println(10+4); //연산결과 확인
System.out.println(10-4);
System.out.println(10*4);
//연산후 자료형
//정수 나누기 정수이기 때문에 2.5실수가 나오지 않는다. //정수/정수 = 정수
//2.5가 나오게 하려면 실수로 나누어 주어야 한다. //정수/실수 = 실수
System.out.println(10/(double)4); // 정수/실수 = 실수
System.out.println(1%2); //%연산자
System.out.println(2%2);
System.out.println(3%2);
System.out.println(4%2);
//오버플로우
int i1 = 1_000_000;
int i2 = 2_000_000;
//int product =i1*i2;
long product =(long)i1*i2; //오버플로우가 되지 않는 범위의 자료형을 사용하여 표현하도록 한다.
System.out.println(product);
int i3= 10;
int i4=20;
int sum1= i3+i4;
System.out.println(sum1);
short s3=10;
short s4=20;
//자바 - 산술에서의 최소 자료형 : int
//short sum2=s3+s4;
//int sum3=s3+s4;
short sum4=(short)(s3+s4);
System.out.println(sum4);
}
}
TypeCastingEx01.java - 자료형의 형변환
class TypeCastingEx01{
public static void main(String[] args){
//형변환
// 작은 자료형-> 큰 자료형: 묵시적(자동) 형변환
// 큰 자료형 -> 작은 자료형: 명시적 형변환
short s1 =10;
//자동형변환
int i1=s1;
System.out.println(i1);
float f1 = 10.0f;
double d1 = f1;
System.out.println(d1);
char c1='A';
int i2 =c1;
System.out.println(i2);
int i3 = 10;
short s2 = (short)i3;
System.out.println(s2);
char c2='A';
int i4=c2+3;
System.out.println(i4);
char c3 =(char)i4;
System.out.println(c3);
}
}
조건: true/false(비교연산자, 논리연산자, 부정연산자)
조건에 의한 분기
1. 단순조건
if~else~
2. 선택조건
if~else if~else~
=>switch~case~default~
(byte, short, int, char, String)
조건에 의한 반복
ConditionEx02.java
*5~10 사이에 있으면 영역 내/ 그 밖에는 영역 외 표현
public class ConditionEx02 {
public static void main(String[] args){
System.out.println("시작");
int i=9;
if(i>5&&10>i){
System.out.println("영역내");
}else{
System.out.println("영역외");
}
System.out.println("끝");
}
}
ConditionEx03.java
*if~else if~ else로 성적나누기
public class ConditionEx03 {
public static void main(String[] args){
System.out.println("시작");
//점수계산
//90점 이상 A
//if~else if~else
int i = 60;
if(i>=90){
System.out.println("A");
}else if(i<90&&i>=80){
System.out.println("B");
}else if(i<80&&i>=70){
System.out.println("C");
}else if(i<70&&i>=60){
System.out.println("D");
}else{
System.out.println("F");
}
System.out.println("끝");
}
}
ConditionEx05.java
*Switch~case문으로 출력
public class ConditionEx04 {
public static void main(String[] args){
int data=20;
switch(data){
case 10:
System.out.println("10");
break;
case 20:
System.out.println("20");
break;
case 30:
System.out.println("30");
break;
default:
System.out.println("기타");
}
}
}
* Ex3_17.java -삼항연산자
public class Ex3_17 {
public static void main(String[] args){
int x,y,z;
int absX, absY,absZ;
char signX, signY, signZ;
x=10;
y=-5;
z=0;
absX = x>=0?x:-x;
absY = y>=0?y:-y;
absZ = z>=0?z:-z;
signX =x>0?'+':(x==0?' ':'-');
signY =y>0?'+':(y==0?' ':'-');
signZ =z>0?'+':(z==0?' ':'-');
System.out.printf("x=%c%d%n",signX,absX);
System.out.printf("y=%c%d%n",signY,absY);
System.out.printf("z=%c%d%n",signZ,absZ);
}
}
*LoopEx05.java -중첩(문자 A부터 정해진 반복 횟수대로 문자열 출력하기)
public class LoopEx05 {
public static void main(String[] args){
//중첩
for(int row=1;row<=10;row++){
for(int col=1;col<=row;col++){
System.out.print('*');
}
System.out.println();
}
System.out.println();
for(int row=1;row<=10;row++){
for(int gon=1;gon<row;gon++){
System.out.print(" ");
}
for(int col=1;col<=11-row;col++){
System.out.print('*');
}
System.out.println();
}
for(int row=1;row<=10;row++){
int i=65; //새로운 행이 시작될때마다 65로 설정하여 A부터 뜨게하고
for(int col=1;col<=row;col++){
char al=(char)i;
System.out.print(al);
i++; //i의 값을 증가시켜 열의 반복에서는 증가될때마다 다른 알파벳이 뜰 수 있도록 한다.
}
System.out.println();
}
}
}
*LoopEx06.java - while과 do while문
public class LoopEx06 {
public static void main(String[] args){
//while
int i =1;
while(i<=10){
System.out.println(i);
i++;
}
int j=1;
//do-while
do{
System.out.println(j);
j++;
}while(j<=10);
}
}
*LoopEx09.java - break, continue, label 사용
public class LoopEx09 {
public static void main(String[] args){
System.out.println("시작");
int n = 0;
//라벨
outer:
while(n<=5){
n++;
int m =0;
while(m<=5){
m++;
if(m==3) //반복문이 두개 있을 때 가장 가까운 반복문이 break/continue된다
{
//break outer; //outer 이후부터는 출력안됨
continue outer; //outer만 빠져나감
}
System.out.println(n+" / "+m);
}
System.out.println(n);
}
System.out.println("끝");
}
}
#연습문제
Q4_2.java
- 1부터 20까지의 정수 중에서 2또는 3의 배수가 아닌 수의 총합을 구하시오
public class Q4_2 {
public static void main(String[] args){
int sum=0;
for(int i=1;i<=20;i++){
if(i%2==0||i%3==0){
continue;
}
sum+=i;
}
System.out.println(sum);
}
}
Q4_3.java
- 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오
public class Q4_3 {
public static void main(String[] args){
int sum=0;
for(int i=1;i<=10;i++){
for(int j=1;j<=i;j++){
sum+=j;
}
}
System.out.println(sum);
}
}
Q4_4.java
- 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오
public class Q4_4 {
public static void main(String[] args){
int sum=0;
int i =0;
while(sum<=100){
if(i%2==0){
sum=sum-i;
}else{
sum=sum+i;
}
System.out.printf("%d .... %d%n",i,sum);
i++;
}
}
}
.............JAVA 언어... 이전에 학교에서 배운 언어와 별다를 게 없어서 내용은 쉬운 편이었다............