오전
Stringbuffer와 Stringbuilder의 차이
StringBuffer는 멀티스레드 O, StringBuilder는 멀티스레드 X
일반적으로 String은 할당된 메모리를 가져가는 반면, 이 둘은 공통적으로 가변성을 가지고 있음.
중복,수정,삭제가 많은 데이터의 경우 StringBuffer, StringBuilder를 쓰는게 메모리 효용성에 좋다.
-
데이터타입을 바꾸는 상황에 대해 공부했다.
* 숫자=>문자
: 모든 숫자는 문자로 변경이 가능하다
: 숫자 + "" -> 문자로 변환된다. ex). 2+ "" = > 문자 2 로 바뀜.
* 문자=>숫자
: 숫자형식을 가지고 있는 데이터만 가능.
*boxing & unboxing. 같은 숫자 타입일때. 데이터방식을 동일하게 만들어주는 상황(Stack메모리)
int i;
int=10;
short s;
s=(short)i;
short은 2byte, int는 4byte의 용량을 가지고 있다. int->short 큰용량에서 작은용량으로 바뀌는 경우 큰값의 앞에(바뀌는 데이터타입방식을 괄호로 기재해줌으로써 변환이 가능하다.
위 과정을 거치면
i=s; 가 성립.
* 문자(heap) 에서 숫자(stack)으로 변환하는 경우.
String str = "70" ;
int i;
i = Integer.parseInt(str); < 이 함수를 써주면 문자(String)을 숫자(Int)값으로 변환 가능하다.!
또한 계산기 메인화면에서 실행하시겠습니까? Y/N과정에서 반복문을 배웠다.
while(condition) {
true_exec_statement;
}
**반복 탈출할 기준을 설정
실습에서 적용은 이렇게 이루어졌다.
//실행여부출력//
String query;
while(true) {
output("실행하시겠습니까? y/n");
//실행여부 입력//
query = input();
if(query.equals("y") || query.equals("n")) {
break;
*MVC Pattern
Model -- 데이터 활용 --> 데이터관리 , 비즈니스 로직
View
Controller
* Access Modifier : Restrict 접근제한, class 앞에있는!
* public --> 모든 외부 접근 허용
* private --> 모든 외부 접근 불허, 내부에서는 접근 가능
* protected --> 상속자로부터의 접근만 허용
* default --> 같은 패키지에 속해있는 클래스에서만 접근 가능
------------------------------------------------------------------------------------------------
내일 오전으로 계산기 실습이 종료된다. 그런의미에서 여태배운것들, 내가 생각하는 개념들을 정리해보자.
i) Loader. : 프로그램 실행기 개념이랄까
ii)Operator : 백엔드부분. 실제 계산이 이루어지는 파트이며 연산장치.(코딩)
iii)InputOutput : 프론트엔드 부분. 사용자에게 보여지는 화면 이라 볼 수 있는 파트이며 입력과 출력
Loader <=====InputOutput<==========Operator 이런식으로 연결되어있다.
Operator같은경우
i)
클래스=>생성자를 만들고
public String controller(String operate, String number1,String number2)
String(문자) 컨트롤러를 통해 연산, 숫자값1,숫자값2를 선언해준 뒤
number1,number2를 int값으로 데이터형식을 바꿔준다.
num1=Integer.parseInt(number1);
그리고 int result; 연산결과를 선언&할당해준다.
ii)
그리고 if 조건문을 통해 1을 누르면 덧셈, 2를 누르면 뺄셈, 3을 누르면 곱셈, 4를 누르면 나누기 실행으로 만들어준다
if(operate.equals("1")) { result = this.plus(num1,num2); else if {
이런식이고 this는 밑에있는 함수를 그대로 써준다는 뜻이다.
마지막줄엔 return result+""; 로 정리해준다. 연산으로 끝이 아닌 값을 되받아야하므로 return함수를 써주고
int(숫자값)인 result에 ""(공백)을 더함으로써 결과의 데이터방식은 문자값이 된다
iii)
사칙연산을 각각의 method를 통해 만들어주자.
한 method에는 한가지의 기능을 담는것이 효용성이 높고, 객체지향의 장점을 살릴수있다.(아마도?)
public int plus(int number1, int number2) {
return number1 + number2;
}
소괄호는 파라미터값 이며 중괄호안에 return값은 계산결과를 되받야하므로 작성해준다.
--
이번엔 InputOutput 사용자입출력단에 대해 알아보자.
내가 제일 애를 먹었던.. 정리가 좀 어려웠던 파트다.
클래스를 만들어주고 생성자사이에 field 영역에
i)
타이틀화면
연산화면
스캐너(잘 모름)을 만들어주었다
그리고
ii)
생성자 부분엔
초기화, 객체생성이 이루어지는데
title=new String(); <- 타이틀화면 객체생성
yeonsan=new String(); <--연산화면 객체생성
StringBuffer s1 = new StringBuffer(); s1이라는 이름으로 Stringbuffer를 지어준다.
그리고 타이틀, 연산화면에넣을 문자들을
s1.append("++++++++++++++++++++++++++++++++++");
s1.append(" calculator ");
대충요런식으로 넣어주고 마지막으로
title=to.String(); 문자열로 리턴하는 메소드를 이용해준다.
그리고 마지막엔 controller();
컨트롤러를 이용해 화면순서를 용이하게 만들것이다.
iii)
public void controller () {
//타이틀출력//
output(title)
//실행여부출력//
output(실행ㄱ?)
String query
while 문
//실행여부입력//
querty = input()
query를 if else문에 넣어 y누르면 실행 n누르면 비실행
//타이틀출력//
//숫자문구출력//
//숫자입력//
String number1 = input()
//연산메뉴출력//
//연산메뉴입력//
String oper = input()
//숫자문구출력//
//숫자입력//
String number2 = input()
//연산요청 연산자// ((연산을 이루어지게 하는 opetare를 선언 할당할것이다.)
Operator op = new Operator (); => Operator 클래스와 연결됨.
//사용자 선택에따른 연산분기//
if문을사용해 1= 덧셈 2=빼기 3=곱셈 4=나눗셈
if(oper.equals("1") || ....
result=op.controller(oper,number1,number2); ==>Operator에 있는 클래스의 콘트롤러. oper(연산메뉴입력)과 넘버1,넘버2를 통해 연산. 저 세값들은 Operator의 String Controller값에 들어있는것과 연결.!
------
(iv)사용자입력메소드
public String input() {
String number1 = new String();
number1 = scannr.next(); <--몰라 이건
return number1 ;
(v)사용자 출력 메소드
public void output(String text) {
System.out.println(text);
}
'BackEnd > Java' 카테고리의 다른 글
JAVA_배열(Array) (1) | 2021.04.30 |
---|---|
JAVA_Substring, Length (유효성 검사) (0) | 2021.04.26 |
JAVA_Boolean Type (0) | 2021.04.22 |
JAVA_실행단위(Class,Method,Void-Return Type) (1) | 2021.04.20 |
JAVA_데이터타입, 힙&스택 데이터 (1) | 2021.04.19 |