파라미터 괄호 안 -> 지역변수
반환형(응답’피드백O)
() 괄호를 쓰는 3가지
메소드, 생성자, 캐스팅 연산자
전역 변수-초기화 생략 가능(생성자가 대신해준다)
지역변수-초기화 필수!
static이 main보다 먼저 호출되지만(main보다 우선순위가 높다)
static을 많이 사용하면 오버플로우가 나타나 서버에 부담됨
package dev_java.ch01_1202;
public class Static1 {
static {
System.out.println("static 호출"); // main보다 먼저 static이 호출된다
}
// main 스레드라고 한다.
// main은 entry point이다.
// main은 개발자가 호출하는 메소드가 아니다.
// 시스템이 자동으로 호출해준다.(콜백메소드)
// main메소드에 코딩하는것은 좋지 않다.
// main메소드에 작성한 코드는 재사용성이 없다.
// 클래스 안에 main메소드는 없어도 된다(단 그러면 실행은 불가함)
public static void main(String[] args) {
System.out.println("main 호출");
}
}
// static 호출
// main 호출
package dev_java.ch01.ch01_1202;
// 자료구조의 일부로 사용함
// 회원정보를 관리하기 위한 목적으로 설계-그래서 main메소드는 포함x
public class MemberVO {
private String mem_id = null;
private String mem_pw = null;
private String mem_name = null;
// setter는 write, save
// setter메소드를 활용하여 전역변수 mem_id를 초기화한다.
public void setMem_id(String mem_id) {
this.mem_id = mem_id; // 자기자신 this -> 전역변수 mem_id를 의미함
}
// getter는 read, listening
public String getMem_id() {
return mem_id;
}
public void setMem_pw(String mem_pw) {
this.mem_pw = mem_pw;
}
public String getMem_pw() {
return this.mem_pw;
}
public void setMem_name(String mem_name) {
this.mem_name = mem_name;
}
public String getMem_name() {
return this.mem_name;
}
public static void main(String[] args) {
MemberVO memberVO = new MemberVO();
System.out.println(memberVO.mem_id); // 같은 클래스 내에서는 private도 접근 가능
System.out.println(memberVO.mem_pw);
System.out.println(memberVO.mem_name);
}
}
// null
// null
// null
package dev_java.ch01.ch01_1202;
public class MemberVOMain {
public static void main(String[] args) {
MemberVO memberVO = new MemberVO();
String 사용자아이디 = "tomato";
System.out.println(사용자아이디);
// MemberVO클래스에서 mem_id는 접근제한자를 private로 했으므로
// 외부에서 접근이 불가하다.
// 그래서 setter 메소드를 제공하고 있다.
// private로 선언된 변수는 클래스 외부에서 사용이 불가하다.(보안, 캡슐화)
// System.out.println(memberVO.mem_id); //private 접근 불가
// memberVO.setMem_id = "tomato"; //privat 접근 불가
// String set_id = memberVO.setMem_id("apple"); //void이기에 반환불가!
memberVO.setMem_id("apple");
String get_id = memberVO.getMem_id(); // 반환형이 있기에 사용가능
System.out.println(get_id); // apple
System.out.println(memberVO.getMem_id()); // apple
// mem_name의 경우 접근 제한자를 public으로 한다면 직접 초기화가 가능하다.
// memberVO.mem_name = "토마토"; // 직접 초기화
// String name = memberVO.mem_name;
// System.out.println(name); // 토마토
// System.out.println(memberVO.mem_name); // 토마토
memberVO.setMem_name("이순신"); // setter메소드를 호출하는 것만으로 초기화됨
System.out.println(memberVO.getMem_name()); // 이순신
// 아래와 같이 setter메소드를 호출하면 전역변수인 mem_pw에 12345가 초기화됨
memberVO.setMem_pw("12345");
// getter메소드를 호출하면 전역변수인 mem_pw에 저장된 값이 출력됨
// 만일 setter메소드를 호출하지 않으면 null이 출력될 것임
System.out.println(memberVO.getMem_pw()); // 12345
}
}
package dev_java.ch01.ch01_1202;
public class MemberAction {
// 회원가입을 처리하는 메소드 선언하기(회원가입 성공 -> 1 반환 / 회원가입 실패 -> 0 반환)
public int memberinsert(String mem_id, String mem_pw, String mem_name) {
System.out.println("memberinsert 호출-파라미터 3개");
System.out.println(mem_id + ", " + mem_pw + ", " + mem_name);
int result = -1; // End of File(없다를 나타낼 때 -1로 표현하기도함)
result = 1;
return result;
}
public int memberinsert(MemberVO memberVO) {
System.out.println("memberinsert 호출-파라미터 1개");
System.out.println(memberVO.getMem_id() + ", " + memberVO.getMem_pw() + "," + memberVO.getMem_name());
int result = -1;
result = 0;
return result;
}
public static void main(String[] args) {
// insert here-memberinsert 메소드를 호출하시오.
MemberAction memberAction = new MemberAction();
int result = memberAction.memberinsert("apple", "123", "사과");
if (result == 1) {
System.out.println("회원가입 성공");
} else {
System.out.println("회원가입 실패");
}
MemberVO memberVO = new MemberVO();
memberVO.setMem_id("tomato");
memberVO.setMem_pw("456");
memberVO.setMem_name("토마토");
memberAction.memberinsert(memberVO);
if (result == 1) {
System.out.println("회원가입 성공");
} else {
System.out.println("회원가입 실패");
}
}
}
package dev_java.ch01.ch01_1202;
class Static1 {
int i;
}
class Static2 {
static int i;
}
public class StatcExam1 {
public static void main(String[] args) {
Static1 static1 = new Static1(); // static이 없기에 인스턴스화
System.out.println(static1.i);
System.out.println(Static2.i); // static int이기에 바로 호출가능
}
}
package dev_java.ch01.ch01_1202;
class Static3 {
int i;
static int j;
void methodA() {
System.out.println("non-static 변수 i methodA에서 호출가능 ===> " + i);
System.out.println("static변수 j methodA()에서 호출 ===> " + j);
}
static void methodB() {
Static3 static3 = new Static3();
System.out.println("non-static 변수 i methodB에서 호출 =>" + static3.i); // 인스턴스화 후 호출가능
// System.out.println("non-static 변수 i methodB에서 호출 불가 ===> "+i);
System.out.println("static변수 j methodB()에서 호출 ===> " + j);
}
}
public class StaticExam2 {
public static void main(String[] args) {
Static3 static3 = new Static3();
static3.methodA();
Static3.methodB();
}
}
// non-static 변수 i methodA에서 호출가능 ===> 0
// static변수 j methodA()에서 호출 ===> 0
// non-static 변수 i methodB에서 호출 =>0
// static변수 j methodB()에서 호출 ===> 0
package dev_java.ch01.ch01_1202;
class A1 {
static int i = 1;
}
class A2 {
void methodA() {
A1.i = 2;
}
}
public class StaticExam3 {
public static void main(String[] args) {
A2 a2 = new A2();
a2.methodA();
System.out.println(A1.i); // 2
}
package dev_java.ch01;
// java.lang패키지 외 클래스들은 모두 import문을 추가해야함(하지않으면 컴파일에러)
// 클래스의 구성요소 2가지(변수'필드, 메소드)
// 필드+메소드 => 클래스 정의
// 클래스를 인스턴스화하면 메모리(램)에 로딩이 된다.
// 클래스를 인스턴스화하는 이유는 변수와 메소드를 호출하기 위해서이다.
// 인스턴스화.메소드명();
// 인스턴스화.메소드명(파라미터1);
// 인스턴스화.메소드명(파라미터1, 파라미터2, ...);
// 인스턴스화.전역변수(원시형+참조형 모두 가능);
// static은 하나다, 원본을 복사할 수 없다.
import java.util.Scanner;
public class ScannerExam1 {
public static void main(String[] args) {
// 생성자이든 메소드이든 파라미터의 개수, 타입은 반드시 지켜야한다.
Scanner scanner = new Scanner(System.in); // 생성부의 파라미터 자리는 시스템의 입력장치정보
System.out.println("0~9 사이의 숫자를 입력해주세요.");
String user = scanner.nextLine();
scanner.close();
// int의 wrapper Integer
int i_user = Integer.parseInt(user); //user가 입력한 String값을 int로 변환
System.out.println(user + 1);
System.out.println(i_user + 1);
}
}
// 1을 입력할 경우
// 11
// 2
package dev_java.ch01;
public class Wrapper1 {
public static void main(String[] args) {
Integer i = new Integer(10);
int j = i;
System.out.println(i + 1); // int 11
System.out.println(j + 1); // int 11
String x = String.valueOf(j); // int를 String으로 바꿔줌
// String y = j; // 컴파일 에러, 타입이 다름!
String y = x;
System.out.println(y + 1); // String 101
if (y instanceof String) {
System.out.println("y는 String 타입입니다.");
}
if (i instanceof Integer) {
System.out.println("i는 integer타입입니다.");
}
}
}
// 11
// 11
// 101
// y는 String 타입입니다.
// i는 integer타입입니다.
상속관계
상속받으면 그 부모의 기능과 나의 기능을 사용할 수 있음
증조할아버지>할아버지>아버지>나(아버지의 것을 받는 게 가장 유리함, 가장 많은 기능을 쓸 수 있음)
원시형 타입(변수)은 (참조형, 클래스가 아니니까) 변수와 메소드를 선언(소유)할 수 없다
원시형은 호출하면 값이 나오는 직접 참조 방식이므로 간접 참조 방식으로 사용할 수 없다
참조형 타입은 간접 참조 방식이므로 변수나 메소드를 선언(소유)할 수 있다.
wrapper Class
원시형(기본) 자료 타입을 객체로 다루기 위해 사용하는 클래스
Integer는 원시형 int를 감싸 객체(클래스)같이 사용할 수 있게 해 줌
기본 타입(원시형 타입, primitive type) | 래퍼클래스(wrapper class) |
byte | Byte |
char | Character |
int | Integer |
float | Float |
double | Double |
boolean | Boolean |
long | Long |
short | Short |
박싱(Boxing)
기본 타입의 값을 포장 객체로 만드는 과정
언박싱(UnBoxing)
포장 객체에서 기본 타입의 값을 얻어내는 과정
자동 박싱(Auto Boxing)과 자동 언박싱(Auto UnBoxing)
Integer num = 10; //자동 박싱, heap영역에 Integer객체가 생성됨
int i = num; //자동 언박싱
git연동(git에서 repository 생성)
깃허브에서 새로운 repository 만들기
code 눌러서 주소 저장
로컬 repository 만들기(웬만하면 같은 이름으로)
해당 파일에서 cmder here, git init
echo 파일내용 > 파일명
exho 내용 >>(수정의 의미) 파일명
working directory-untracked / tracked
커밋하려면 untracked를 tracked로 옮겨야 함(add 명령어 사용)
tracked상태를 수정하면 untracked상태로 바뀌기에 다시 add 한 다음 커밋해야 함
staging area-커밋 대상들, tracked 된 것들
history로 볼 수 있는 상태(버전 관리 시점)는 커밋을 하고 난 다음부터!
git commit만 치고 엔터 치면 VSC로 연결-내용을 적고 저장, 닫으면 완료(깃 설정해둬서 가능)
로컬과 깃 서버 연결
git remote add origin repository주소
git push origin master master로 깃과 동기화 완료
깃허브 repository 생성&연동 과정
디폴트로 깃허브에서 레포를 먼저 만듦-main(디폴트 값), readme 추가 -> 로컬에도 같은 이름 폴더 생성
git init 엔터 →버전 관리를 위해서 git에서 필요한 파일을 추가하기 →.git파일이 추가됨(보기-숨김 파일 체크할 것)
echo 메시지 문자열 > a.txt(파일 이름) →a.txt 파일에 메시지 문자열이 저장됨
처음 파일(a.txt, b.txt, c.txt)이 생성되면 a, b, c 모두 untracked에 있다가
git add . 엔터 →Staging area로 이동함(이클립스, 소스 트리 같은 깃툴에서는 여기서부터 보임)
untracked → staging area로 이동함
echo a.txt 수정 > a.txt 엔터 →이때 tracked 상태로 감(staging상태에서 수정을 했을 때)
git add a.txt 엔터
git commit -m “메시지” 엔터
===여기까지는 로컬 repository===
===로컬 레포를 웹 레포로 올리기===
git remote add origin repository주소
git push origin master(branch이름) 엔터 →웹 레포로 올라감
github 브라우저에서 새로고침
'국비학원 > 수업기록' 카테고리의 다른 글
국비 지원 개발자 과정_Day7 (1) | 2022.12.06 |
---|---|
국비 지원 개발자 과정_Day6 (0) | 2022.12.05 |
국비 지원 개발자 과정 _Day 4 (0) | 2022.12.01 |
국비 지원 개발자 과정 _Day 3 (0) | 2022.11.30 |
국비 지원 개발자 과정 _Day 2 (0) | 2022.11.30 |
댓글