22.07.18-JAVA 버전, JAVA 구조, 객체, NULL, \ , static, final, 이름 설정 방법, 오버라이딩, 오버로딩, 자료형 연산, continue, break, for문 이름 설정
JAVA의 버전
oracle jdk → 유료
openjdk + 추가기능
open jdk → 무료
주로 무료 버전 사용, 버전은 1.8사용
구조
변수 : 값을 저장하기 위한 것
연산은 ⇒ CPU 처리
변수 ⇒ RAM ( static,stack, heap 영역으로 나눔
stack : heap에 저장되어있는 주소를 저장, ram이 알아서 지움
heap : 실제 데이터가 저장된 곳 )
가비지 컬래션(자바의 기본 기능) : stack영역이 지워지면, heap 영역이 지워진다.
변수 기본형 : int, double, char ⇒ stack에 저장됨, heap에 저장되지 않음
변수 참조형 : String , 객체 ⇒ stack에 주소가 저장되고, heap 영역에 값이 저장된다.
객체
객체 : 변수를 좀 더 현실세계에 맞게 저장하고 싶어서 만든 것
객체 안의 멤버변수 = 속성
Student s1 = new Student();
Student s2 = new Student();
Student s3 = s1;
주소값 : s1,s3 같음, s2 다름
s1과 같은 객체들은 ram의 stack부분에 주소가 저장됨
public class Computer {
int ram;
int hdd;
// int x, y; => 컴퓨터의 속성이 아님
//덧셈
public void add(int x, int y){ //파라미터로 지정해야 말이 됨
//지역변수 메소드 안에서 사용하고 버릴 것들
int z = x+y;
}
}
NULL
NULL : 저장되어있는 주소값을 없애는 것
Student s1 = new Student();
Student s2 = new Student();
Student s3 = s1;
s1= null;
s3= null;
s1이 참조하는 주소를 지우고, s3까지 지워야
이렇게 해야 heap영역에 있는 가비지 컬랙션이 지워진다.
\
\b : 백스페이스
c++에서 한 글자는 1byte
JAVA 에서 한 글자는 2byte ⇒ 사용하면 깨지는 이유
\r : 커서를 다시 처음으로
\n : 엔터 (\r\n 으로 사용해야함 ), 커서가 밑으로 내리고 앞으로 감
\l : 커서를 밑으로 내림
if문
if를 두개 써서 비교하는 것과 if-else를 사용하는 것의 차이
⇒ cpu 처리 횟수를 줄일 수 있다.
else-if 문
참이면 그 이후에 조건문을 보지않고 넘어가는데 if만 있으면 있는대로 검사
⇒ 조건을 검사하는 횟수의 차이
static, final
객체 : 간장게장
속성 : 가격, 만든사람, 이름
public class crab {
//속성
String maker= "김수미";
String name;
int price;
}
static : 객체를 생성할 때 공통된 속성을 지정
⇒ 객체를 많이 만들게 되면 heap에 계속 각각 저장이 되는데 공통된 속성을 가지고 있는것을 따로 static을 붙이면 램 낭비를 줄일 수 있다.
⇒ static의 변수를 수정하게 되면 전체의 값이 변경된다.
⇒static을 지정할 때 변수를 선언할 때 값도 같이 넣는다.
final : 수정을 할 수 없다, 변수 이름은 대문자로, 애초에 변경이 안될 때 작성
public class crab {
static final String PRODUCER= "김수미";
String name;
int price;
double weight;
}
이름 설정 방법
낙타체
변수명을 지을 때 합성어일때 대문자를 입력
ex 개의 나이 = dogAge
중간고사 점수 = midScore
스네이크 체
변수명을 지을 때 합성일때 _를 사용
ex 개의 나이 = dog_age
중간고사 점수 = mid_score
변수명으로 쓸 수 있는 특수문자 : _ , $
참조형 변수는 시작이 대문자로 해야함
클래스,패키지 이름 설정
클래스를 생성할때는 대부분 참조형일것이고 이는 참조형 변수이므로 시작을 대문자로 시작
용량
byte : 1byte
short : 2byte
int : 4byte
long : 8byte
이런거를 알기에는 컴퓨터가 너무 좋아졌다.
참조형 : 프로세스가 몇 비트짜리인지에 따라 다름
오버라이딩, 오버로딩
오버로딩 : 같은 이름의 메소드를 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용
자료형 연산
int + String = String
double + String ⇒ String
int + double = double
int + long = long
기본형 + String = String
헷갈리는거
System.out.println("/oyo\\");
String name ="lsc";
int age = 25;
double weight = 70.4;
boolean solo = true;
System.out.printf("%s %d %1f %d",name,age,weight, solo);
로또
import java.util.ArrayList;
import java.util.Random;
public class OMain7 {
public static void main(String[] args) {
//로또 프로그램
//6개를 랜덤으로 중복 x
Random r = new Random();
int lotto[] = new int[6];
for(int i =0; i<lotto.length;i++){
lotto[i] = r.nextInt(45)+1;
}
for(int i =0; i<lotto.length-1;i++){
if(lotto[i]==lotto[i+1]){
System.out.println("error");
lotto[i+1] = r.nextInt(45)+1;
}
}
for(int i : lotto){
System.out.println(i);
}
}
}
continue, break차이
break : 반복문을 빠져나옴
continue : 반복문에서 다음 조건으로 넘어감 반복문의 continue를 만나게 되면 다시 조건을 확인하러 올라감
for(int i=0; i<10;i++){
if(i==5){
// break;
continue;
}
System.out.println(i);
}
for문 개선
//java 1.5 이상
gd:for(int i =0; i<args.length;i++){
gd2:for(int j =0; j<args.length;j++){
break gd2;
}
}
for문에 이름을 지정해서 break를 선택해서 할수 있다.
'Program > JAVA' 카테고리의 다른 글
| Final, Package, JAR, 접근 제어자(접근 관리자)[public, private, protected,deafult,friendly], DTO (1) | 2022.12.25 |
|---|---|
| OpenJDK, 객체란?,static, 상수화, 생성자, HasA, IsA(상속),삼항 연산자 (1) | 2022.12.25 |
| 주차장 관리 프로그램 (0) | 2022.12.25 |
| JDBC, 쿼리문(Query) (0) | 2022.12.25 |
| Hash Map, 파일 관리 (0) | 2022.12.25 |