단위 영역 각각 개발 가능 - package(나중에 웹의 directory가 됨, package 없이는 class 생성 x)
=> 나중에 하나로 합침
JAVA의 장점
멀티 스레드를 활용함 (따로 라이브러리가 아닌 자체 멀티스레드 기능 탑재)
코드 심플
객체지향 언어
유지보수 용이
여러가지 운영체제 서버에 적합
독립적 플랫폼을 사용함 - VM을 사용하기 때문에 가능
단점
VM( Virtual Machine ) 이 있어야 돌아감
⚡ 변수 종류 및 출력 - class 생성 후 method를 생성할 수 있음
package oop; //package 단위명 = project 디렉토리 구분
//변수 종류 및 출력
public class oop1 { //class명
public static void main(String[] args) { //method : (javascript의 함수에 해당)
//String[] args : 인자값, 빠지면 작동 안됨
//System.out : 결과를 출력하는 클래스
//println : 출력형태 메소드(한칸 내려쓰기)
System.out.println("홍길동"); // ln : <br>과 같다고보면 댐
System.out.println("강감찬");
//print : 모든 내용을 한줄에 출력(유관순이순신 이렇게 출력)
System.out.print("유관순");
System.out.print("이순신");
// printf : (지시자 %s-문자,%b-숫자,%n-줄바꿈)에 다음 ""에 들어있는 값 넣어서 출력
System.out.printf("%s님 %s입니다!","에이핑크","화이팅");
}
}
⚡ class형태,자료형태의 data type - 단위 크기 : bit,Byte,KByte,MByte,GB,TB...
- class형태(자료 형태를 for문으로 돌려 열로 만든 것) / 자료형태(숫자 or 글자 한글자)
package oop;
public class oop1 { //class명
public static void main(String[] args) {
//---- class 형태
String user = "홍길동"; //문자열 변수(class)
Integer age = 25; //숫자열(class)
//--- 자료 형태
int point = 5000; //숫자(정수)
float money = 25.25f; //소수(실수)
double sales = 0.13; //소수
//2byte:한글자(한글자만 담을 수 있음), ""붙이면 안됨~! ''붙어야함 !!!!!
char agree = '홍';
//System.out.print(user + "님 환영합니다");
System.out.printf("%s 님 환영합니다. 포인트 : %d" , user, point);
int sum = age + point;
System.out.println(sum);
//float total = money + sales; //error
//float < double 자료형이 더 크다
//float + float : float,double 둘다 계산 결과 가능
// double + double : 무조건 double로 받기 / double + float : double(더 큰 자료형)
double total = money + sales;
System.out.println(total);
//정수 + 실수 결과는 실수로 처리해야만 정상적으로 계산이 처리된다.
int a = 90;
float b = 12.3f;
float c = a+b; //float,double 둘다 가능
System.out.println(c);
}
}
class형태인지 자료형태인지 ctrl+spacebar로 확인 가능
⚡ 자료형(숫자)
package oop;
public class oop2 {
public static void main(String[] args) {
//int : 21억정도까지만 담을 수 있음
//long : 9경(21억 이상이면 뒤에 L붙여줘야함)
//short : 3만까지,그 이하(ex-장바구니..)
long a = 2234567891L;
System.out.println(a);
short b = 32345; //정상출력
System.out.println(b);
}
}
⚡ 문자 형태 변환
package oop;
//문자 자료형을 클래스로 변환
public class oop2 {
public static void main(String[] args) {
char word = '홍'; // 꼭 '' 사용!
String name = String.valueOf(word); //char => String 형태로 변환
//class java.lang.String 출력(class타입형태 출력해라)
System.out.println(name.getClass());
String id = "hong";
char name2 = id.charAt(2); //charAt(배열번호) / (3번째 단어 배열 출력하세요)
System.out.println(name2); //n 출력 (javascript의 indexOf() 기능)
}
}
⚡ 숫자형태 변환
package oop;
public class oop2 {
public static void main(String[] args) {
/* Integer(int 사이즈 정도 된다) => short,int,byte 변환 가능 , 실수형은 불가능 */
//숫자 자료형을 클래스로 변환
int n = 100;
Integer z = n;
System.out.println(z);
//숫자 클래스를 숫자 자료형으로 변환
Integer n2 = 1000;
int z2 = n2;
System.out.println(z2);
}
}
⚡ 문자열 클래스를, 숫자형 클래스 or 숫자 자료형으로 변환
package oop;
public class oop2 {
public static void main(String[] args) {
/* 문자열 클래스를 숫자형 클래스 또는 숫자 자료형으로 변환 */
String total = "10000";
String etc = "19890000";
//두가지 방법(p+p,p+v,v+v 다 쓸 수 있음)
//parseInt : 기본 자료형 int -> 직접적으로 문자 데이터를 변환
//valueOf : 기본 자료형 int
// -> 문자 데이터 값을 검토 후 변환(정수인지 실수인지..등 - 실제 속도가 더 느림)
// 안에 paseInt가 포함되어있다
//더해지는 값 봐가면서 데이터 타입 정해줘야함 short는 x (Integer은 사용 가능)
//javascript의 Number()기능
int all = Integer.parseInt(total) + Integer.parseInt(etc);
System.out.println(all);
int all2 = Integer.parseInt(total) + Integer.valueOf(etc);
System.out.println(all2);
/*-----------------------------------------------*/
//실수 자료형을 문자 클래스로 변환
float m = 38.72f;
String sm = String.valueOf(m);
System.out.println(sm);
}
}
Parsing : JASON 및 XML을 받은 문자를 배열화 하는 작업을 말함
Parser : database의 값을 XML또는 JASON으로 변환 작업을 하는 것을 말함
⚡ 외부 클래스 및 메소드 데이터 호출 - 동일한 클래스명 사용 불가(한 패키지 전체에서도 중복 불가)
package oop;
//클래스와 메소드의 형태
public class oop3 {
//public class는 한개의 파일당 한번만 사용 가능
//public class명과 파일명은 동일해야함 즉,public class abc => abc.java
public static void main(String[] args) {
//main : public class에서만 사용하는 메인(실행) 메소드
//실제로는 외부 class를 작성 후 여기에 때려 넣음
//새롭게 호출하겠단 뜻~ new하는 순간 메모리에 저장(pc 껏다 키면 다 사라짐)
box b = new box(); //인스턴스화 시킴
//클래스(new box()),객체(box),인스턴스(b)
b.abc(); //해당 클래스에 abc메소드 호출
b.bbb();
//b를 인스턴스명으로 사용했기 때문에 다른 변수로 사용할 수 없음
box2 b2 = new box2();
b2.kkk();
}
}
class box { //외부 class 선언
public void abc() { //box를 호출해야 abc 메소드를 쓸 수 있음
System.out.println("외부 클래스 및 메소드 데이터 호출");
}
public void bbb() {
System.out.println("bbb 메소드 데이터 호출~!");
}
}
class box2 { //동일한 클래스명 사용 불가(한 패키지 전체에서도 중복 불가)
public void kkk() {
System.out.println("kkk 메소드 호출!");
}
}
⚡ 메소드 인자값 호출 및 전달 - 외부 class는 동일한 package에 있을 경우 같은 이름을 사용하지 못함 - 해당 class 안에서 method는 동일한 이름을 사용할 수 있음 (단, 인자값에 대한 자료형 및 인자값 갯수에 따라 동일한 이름을 사용가능함)
package oop;
//메소드 인자값 호출 및 전달
public class opp4 {
public static void main(String[] args) {
oop4_box op4 = new oop4_box();
op4.abc();
op4.abc("123");
op4.abc(5, 2);
}
}
class oop4_box {
public void abc() {
System.out.println("테스트");
}
//자바는 인자명 작성시 형태도 꼭 적어줘야함
//아래 네개는 다 다른거 , 인자값의 형태가 다 다르므로
public void abc(String a) { //문자 인자값을 받는 메소드
System.out.println("테스트222");
}
public void abc(int a) { //숫자 인자값을 받는 메소드
System.out.println("테스트333");
}
public void abc(int a, int b) { //숫자 2개의 인자값을 받는 메소드
System.out.println("테스트333");
}
//이렇게는 사용 불가
// public void abc(int a) {
// System.out.println("테스트333");
// }
}