프로젝트파일명/build/classes/basic_html/java1.class => 실행파일
프로젝트파일명/src/main/java/basic_html/java1.java => 소스파일
packeage 이름 = 프로젝트이름
public class 는 한 파일에 하나만
class명 중복 불가능
기본 class 이름 = 파일명
static : 메모리에 저장시켜서 사용하는 자료형 //쓸수도안쓸수도
신경써야할것
1. java : class, method를 잘 관리
2. cpu : 쓰레드(thread)
3. memory : 메모리관리
콘솔에 출력
sysout+컨트롤+스페이스바
System.out.println("출력"); //자동줄바꿈
System.out.printf("출력"); //줄바꿈안함 %사용 가능
1. 자료형
//데이터 범위에 주의
구분
|
자료형
|
크기
|
범위
|
문자형
|
char
|
2 byte
|
0 ~ 65,535 (유니코드)
|
정수형
|
byte
|
1 byte
|
-128 ~ 127
|
short
|
2 byte
|
-32,768 ~ 32,767
|
|
int
|
4 byte
|
-2,147,483,648 ~ 2,147,483,647
|
|
long
|
8 byte
|
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
|
|
실수형
|
float
|
4 byte
|
3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)
|
double
|
8 byte
|
1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)
|
|
논리형
|
boolean
|
1 byte
|
true, false
|
String, Inteser 은 클래스
int 와 다르게 Integer는 클래스형 변수 //컨트롤+스페이스바 눌렀을때 C아이콘이 붙어있음
package basic_html;
public class java1 {
// main method
// static(쓸수도안쓸수도있음) : 메모리에 저장시켜서 사용하는 자료형
public static void main(String[] args) {
System.out.println("자바 실행!");
//String~double : 데이터형 (Byte)
String user = "구나영";
int age = 27; // 숫자
Integer point = 5000; // 숫자열(class)
float money = 25.5f; // 소수점(실수)
double sales = 0.8; // 소수점
int sum = age + point; // 정수 -> int, Integer
System.out.println(sum);
float sum2 = point * money;
System.out.println(sum2);
String msg = "님 환영합니다.";
String login = user + msg;
System.out.println(login);//자동줄바꿈
System.out.printf("출력 테스트%n");//줄바꿈안함 %사용 가능
System.out.printf("%s님 로그인 되셨습니다. 포인트 : %d%n", user, point);
boolean ck = true;
short no = 32767;
long no2 = 500000000000L; //long : 맨뒤에 L붙여서 사용
System.out.println(no);
char agree = 'Y'; // char : 한글자만 사용, ''외따옴표만 사용
}
}
2. 전역변수, 지역변수, 자료형변환
package basic_html;
public class oop2 {
//필드
String user = "홍길동";
public static void main(String[] args) {
int point = 8000; //지역변수
String money = "9000";
String delivery = "3000";
//int sum = Integer.parseInt(money) + Integer.parseInt(delivery);
int sum = Integer.valueOf(money) + Integer.valueOf(delivery);
System.out.println(sum);
Integer no2 = null;
float m = 10.23f;
String total = m + " sale 가격"; //간혹 오류 발생해서 아래처럼 사용
String total2 = String.valueOf(m) + 10;
}
}
- 필드 : class와 method 사이의 영역
- 필드에 전역변수를 선언하여 셋팅, 객체, 외부class 호출
- Integer.parseInt() : 문자를 숫자로 바꾸는 클래스 (int)
- Integer.valueOf() : 문자를 숫자로 바꾸는 클래스 (Integer)
- int는 null값을 못가짐 Integer는 null 가능
- String.valueOf() : 숫자, 소수점을 문자로 자료형을 변환하는 클래스
3. 클래스와 메소드
package basic_html;
//메인 클래스
public class oop3 {
public static void main(String[] args) {
oop3_box ob = new oop3_box(); // new 클래스() : 클래스를 호출
ob.kkk("hong"); // 해당 객체를 호출 후 메소드를 실행
ob.aaa(50); // 인수값 전달
new oop3_box2().aaa(); // 인스턴스 적용 후 메소드 호출
}
}
//외부 클래스
class oop3_box {
public void kkk(String b) { // 일반 메소드 (문자 매개변수 받음)
System.out.println("외부 클래스 호출 및 메소드 실행");
System.out.println(b);
oop3_box2 ob2 = new oop3_box2();
ob2.ccc();
}
public void aaa(int a) { // 매개변수로 값을 받는 경우 자료형 넣기
System.out.println("aaa메소드");
System.out.println(a);
}
}
class oop3_box2 {
public void aaa() { // 메소드 명이 같아도 클래스명이 다르면 다름
System.out.println("추가 클래스 호출!");
}
public void ccc() {
System.out.println("회원가입 메소드 처리");
}
}
4. 필드의 변수 핸들링
package basic_html;
public class oop4 {
// static : 메모리에 해당 변수를 저장 (무조건 필드에만 적용하기)
static String user = "홍길동";
//메모리에 저장된 메소드
public static void main(String[] args) {
System.out.println(user); // 같은 메모리 상에서 해당 변수를 호출 //this 안씀!
oop4_box pb = new oop4_box();
// 외부 클래스의 필드에 있는 변수의 값을 변경할 수 있으며, 가져올 수 있음
pb.product = "김치냉장고";
pb.money = 600000;
pb.aaa();
}
}
class oop4_box{
String product = "냉장고";
static int money = 50000; // 메모리에 해당 변수를 등록
// 단, 외부 클래스를 이용하여 메소드를 실행 전역변수를 호출할 경우
// this또는 변수명으로 static
public void aaa() {
String product = "에어컨";
System.out.println("실행!");
System.out.println("상품가격 : "+this.money); //외부클래스의 static전역변수를 사용할땐 this 써도 안써도 됨 //static 메소드가 아니기때문
System.out.println(this.product); //전역변수 사용할땐 this를 꼭 사용하기
System.out.println(product);
this.bbb();
}
public void bbb() {
//메인 클래스를 객체화하여, 해당 필드에 있는 변수를 호출함
oop4 po4 = new oop4();
System.out.println(po4.user);
}
}
😊응용문제
외부 클래스를 이용하여 다음과 같이 결과값이 출력되도록 코드를 작성
단, 전역변수에 다음과 같은 결과값이 있습니다.
전역변수 : 100000, 80000, 3.5
해당 전역변수의 모든 값을 외부 클래스에서 이관받아서 세개를 곱한 값을 출력
public class oop5 {
static long n1 = 100000l;
static int n2 = 80000;
static float n3 = 3.5f;
public static void main(String[] args) {
oop5_box op5 = new oop5_box();
op5.mult(n1,n2,n3);
oop5 op = new oop5();
op.main2();
//main2 메소드에 static을 적용한 경우에는 아래와 같이 사용
//main2();
}
//메인 클래스에 일반 메소드를 활용한 상황
public void main2() {
System.out.println("메인 일반 메소드 호출");
}
}
class oop5_box{
public void mult(long a, int b, float c) {
double total = a*b*c;
System.out.println(total);
}
}
- 자료형의 범위에 유의 //오버플로우, 언더플로우
- Long.valueOf() : 클래스를 이용하여 자료형을 long으로 변경
5. 메소드 형태
public class oop6 {
public static void main(String[] args) {
oop6_box ob = new oop6_box();
ob.aaa();
ob.aaa("구나영");
ob.aaa(27);
String result = ob.aaa(10,20);
System.out.println(result);
int result2 = ob.aaa("홍길동","01012345678");
System.out.println(result2);
}
}
class oop6_box{
public oop6_box(){ //즉시 실행 메소드
System.out.println("즉시 실행 메소드");
}
//메소드 명은 동일하게 사용가능
//단, 매개변수에 할당되는 자료형으로 구분
public void aaa() { //일반 메소드
System.out.println("일반 메소드 실행");
}
public void aaa(String a) { //문자를 할당받는 메소드
System.out.println("일반 메소드 : "+a);
}
public void aaa(int a) { //숫자를 할당받는 메소드
System.out.println("일반 메소드 : "+a);
}
/* 자료형 return 메소드이며, 해당 return에 동일한 자료형 데이터를 return해야함 */
public String aaa(int a, int b) { //리턴 메소드
int sum = a + b;
String msg = "";
if(sum % 2 ==0) {
msg = "짝수";
}else {
msg = "홀수";
}
return msg;
}
public int aaa(String a, String b) {
int z = 1;
return z;
}
}
- 즉시 실행 메소드 : 클래스명 동일한 메소드
- 이름이 같은 메소드 사용가능!
- 단, 매개변수가 모두 달라야함
- return 메소드 : return이 해당 메소드와 동일한 자료형이어야함
- String : 숫자리턴 불가능
- int : null 불가능
주저리주저리
꿀팁
프리퍼런스 제너럴 힙체크 : 메모리사용량보여줌