'Java'에 해당되는 글 13건

  1. 2016.03.30 13일차 1
  2. 2016.03.29 12일차 1
  3. 2016.03.29 11일차 1
  4. 2016.03.24 9일차 1
  5. 2016.03.22 7일차 1
  6. 2016.03.21 6일차 1
  7. 2016.03.18 5일차 조건문, 반복문 1
  8. 2016.03.17 4일차 Java 자료형, 연산자, 예제 1
  9. 2016.03.16 3일차 1
  10. 2016.03.15 자바 클래스와 메소드 1

13일차

Java 2016. 3. 30. 13:51

오버라이딩 : 부모클래스에서 상속받은 메소드 등을 자식클래스에서 새롭게 정의하는 것 (재정의)
오버로딩 : 중복 정의(타입만 바꿔서 재정의)


->절차지향
함수만 모아서

-> 객체지향
1.변수 + 함수를 묶은게
2.상속
3.다형성 : GOF 디자인패턴

->프레임워크(Spring)

->함수지향
==========================
상속
어떤클래스가 다른 클래스의 멤버변수와 멤버함수를 물려받는 것

상속의 장점

-상속을 통하여 기존 클래스의 필드와 메소드를 재사용
-기존 클래스의 일부 변경도 가능
-상속을 이용하게 되면 복잡한 GUI 프로그램을 순식간에 작성
-상속은 이미 작성된 검증된 소프트웨어를 재사용
-신뢰성 있는 소프트웨어를 손쉽게 개발, 유지 보수
-코드의 중복을 줄일 수 있다.

class (서브클래스) extends (슈퍼클래스)
-슈퍼클래스에서 서브클래스로 상속

상속이라는게 부모클래스로  객체 찍어 내고 거기에 이어붙여서 자식으로 객체 찍어내서 붙여서 하나의 객체를 만들어내는것


private
-내부에서만 접근 가능한 키워드 가능
-자식의 영역에서도 접근 불가

protected
-같은 패키지와 자신을 상속받은 자식클래스 영역에서 접근 가능





final 함수와 클래스
-함수에 final을 붙이면 상속이나 재정의 할 수 없다.
-클래스에 final을 붙이면 아예 상속이 안됨


자식클래스의 객체 내부에는 부모클래스로 만든 객체가 포함되있기 때문에

부모클래스의 참조변수로 자식클래스의 객체를 참조할 수 있음.

-----

객체지향에서의 다형성
전제: 부모클래스의 참조변수로 자식클래스의 객체를 참조할 수 있음( 자식클래스의 객체에는 부모클래스로 만든 객체를 포함하니까)

-부모클래스의 참조변수로 자식클래스 객체를 참조했을때는 부모클래스에 존재하는 멤버에만 접근이 가능함

-부모클래스의 참조변수로 자식클래스의 객체를 참조해서 부모클래스에 존재하는 멤버함수 호출시 자식클래스에서 해당 메소드를 오버라이딩 했다면 실제 호출되는 함수는 자식에서 오버라이딩한 메소드가 호출됨 (동적 바인딩)


'Java' 카테고리의 다른 글

12일차  (1) 2016.03.29
11일차  (1) 2016.03.29
9일차  (1) 2016.03.24
7일차  (1) 2016.03.22
6일차  (1) 2016.03.21
Posted by 보로로롬
,

12일차

Java 2016. 3. 29. 17:33

지역변수
- 함수안에서 만들어진 변수. 함수가 끝나면 사라졍
- 스택영역에 생성됭

멤버변수( = 필드, 인스턴스(객체) 변수 )
- 클래스 내부에 정의되는 변수 ( new 서클될때 그때 데이터생성 )
- 해당 클래스가 객체화 될때마다 각 객체내에 생성됨 (new 서클될때)
- 해당 객체가 소멸될 때! 같이 사라졍 

정적변수 ( = 클래스변수 )
-해당 클래스로 객체를 하나도 안만들었어도 1개만 존재, 계속만들어도 1개 존재
-클래스 내부의 static 키워드를 포함해서 정의
-프로그램 실행시 생성, 종료시 소멸
-같은 클래스로 만든 객체들은 같은 클래스 영역에 있으니까 private클래스 변수에도 자유롭게 접근이 가능
-해당 클래스의 모든 객체들이 공유할 수 있는 공간 ( 자유롭게 접근가능 )

final - 값이 유지
static - 공간자체가 유지

멤버함수 
- 클래스 내에 정의
- 해당 클래스로 객체를 생성할때마다 각 객체 내에 생성됨. 해당객체가 소멸될때 사라짐.

정적 메소드
- 클래스 내에 static 키워드와 함께 정의
- 프로그램이 실행될떄 한개 생성되서 프로그램 종료시 사라짐
- 멤버변수에게 접근이 안됨..()
-this 사용x

정적 메소드 활용 용도
1.정적변수에 대한 게터 세터
2.멤버변수의 상태와 상관없는 동작을 수행하는 기능을 구현할 때
3.객체의 상태와 상관없는 동작을 수행하는 메소드를 정의할때 사용

finalize
- 원래 존재함.
- 객체가 소멸되기 직전에 호출되는 메소드
- 우리가 똑같은 이름으로 다시 정의하면 해당 객체가 소멸될 때 우리가 정의한 함수내용을 실행함


1. 정적 변수는 어떤 경우에 사용하면 좋은가?

     답: 정적 변수에 대한 게터 세터를 만들거나, 객체의 상태와 상관없는 동작을 수행하는 메소드를 정의할 때 사용 


2. 정적 변수나 정적 메소드를 사용할 때, 클래스 이름을 통하여 접근하는 이유는 무엇인가? 

     답 : 객체가 없을 때도 존재하기 때문에 클래스 영역으로 분류함


3. main() 안에서 인스턴스 메소드를 호출할 수 없는 이유는 무엇인가?

     답 : 정적 함수에서 멤버 함수에 접근 못하는 것처럼 Main함수는 static이기 때문에  

가비지컬렉터
참조값이 다 끊긴 객체를 gabage 라고 불린다. 가비지 컬렉터는 이러한 가비지들을 수집하여 메모리를 해지를 해주어 메모리 공간을 확보하는데 사용한다.


'Java' 카테고리의 다른 글

13일차  (1) 2016.03.30
11일차  (1) 2016.03.29
9일차  (1) 2016.03.24
7일차  (1) 2016.03.22
6일차  (1) 2016.03.21
Posted by 보로로롬
,

11일차

Java 2016. 3. 29. 08:41

비트코인 : 가상화폐

헤시함수 : 암호, 데이더 검증



인스턴스 변수(instance variable) : 객체마다 하나씩 있는 변수


멤버변수, 멤버함수 : 클래스를 구성하는 구성요소로 클래스를통해 객체를 생성하면 각객체마다 멤버변수와 멤버함수들이 생성


class Car{

    int speed;

    String name;

    public void speedUP(){

        speed++;

    ?}????


}


정적 변수(static variable) : 멤버변수와 다르게 객체를 생성하지 않아도, 아무리 많이 생성해도 한개만 존재하는 변수

모든 객체를 통틀어서 하나만 있는변수

-객체 참조변수, 정적변수로도 접근은 가능하지만 기본적으로 정적변수는 클래스명, 정적변수로 접근하는게 맞음

왜냐하면 객체가 없을떄도 존재하고 그떄도 사용하려면! 

-정적변수 = 클래스변수 



정적변수의 용도!

1. 모든객체가 하나의 데이터를 공유하기 위해

2. 각각의 객체가 항상 같은 값을 가질 변수이기 때문에 각자 공간을 가질 필요는 없음 이런놈을 위해서

=객체가 아무리 없거나 많아도 하나




클래스와 클래스의 관계

-사용(use) : 하나의 클래스가 다른 클래스를 사용한다.

-집합(has-a):

'Java' 카테고리의 다른 글

13일차  (1) 2016.03.30
12일차  (1) 2016.03.29
9일차  (1) 2016.03.24
7일차  (1) 2016.03.22
6일차  (1) 2016.03.21
Posted by 보로로롬
,

9일차

Java 2016. 3. 24. 11:44

구조체 : 다른 타입의 변수들을 묶음 자료형
        =>사용자 정의 자료형

class 변수{
    int age;
    int score;
    String name;
}

1.구조체가 뭔지 대답할 수 있다.

2.구조체(다른데이터집합)을 정의하고 데이터를 생성할 수 있다.

3.구조체 내의 변수를 읽고 쓸수있다.


함수(메소드) : 명령어들의 집합
이름을 지어주어서 재활용하기 쉬움

매개변수를 쓰는 이유 : 함수의 확장하려고

함수실행 전 매개변수 = 인자값 코드를 사용함 
매개변수는 인자값




객체지향: 관련있는 변수와 함수를 하나의 꾸러미로 묶어서 관리 


객체지향의 장점 : 수정 용이 

배열도 하나의 객체 

자바에서의 객체 

힙 영역에 할당되있는 모든 데이터 (new 연산자를 이용해 만들어진 데이터) 


동작=> (함수) 

특징값(속성)=> 변수(필드)



클래스: 관련있는변수와 관련있는 함수를 조합해 만든 자료형 (관련 있는 함수와 변수를 묶어 만든 자료형) 

객체  : 클래스를 통해 생성해낸 데이터 (인스턴스) 




랩퍼클래스 

기초 자료형을 객체로 포장하여 주는 클래스 


클래스 이름은 하나의 패키지 안에서 중복되면 안됨! 



상속 

-코드절약 , 부모가 가지고있는 것을 물려받는 의미 


자바에는 Object 라 불리는 클래스가 있음 

객체로서 동작하기위한 최소한의 기능들을 포함하고 있음 .


Object안에 있음 toString() 은! 

toString()

현재 나의 상태를 알리는것 


오버라이딩 (=재정의)

덮어씌어지는 기능  


앞으로는 프린트 함수만들지말고 toString()으로!!! 

static을 쓰면 그냥 자동으로 생김 !!! 



Car myCar;            //참조변수를 선언

myCar = new Car();    //객체를생성하고 참조값을 myCar에 저장





myCar.speed=100;


객체 포함되 있는 상태값 -> 필드, 멤버변수

객체 포함되 있는 기능들 -> 메소드, 멤버함수 

'Java' 카테고리의 다른 글

12일차  (1) 2016.03.29
11일차  (1) 2016.03.29
7일차  (1) 2016.03.22
6일차  (1) 2016.03.21
5일차 조건문, 반복문  (1) 2016.03.18
Posted by 보로로롬
,

7일차

Java 2016. 3. 22. 17:53

do while문
문장을 한번시작하고 while 시작

do 
   문장
while(조건)


배열
-배열데이터가 생성되는 내부동작
-같은타입 변수들의 집합
-여러가지 같은타입 변수를 한번에 생성하기 위해서
-스택에 저장되지 않음
-배열로 변수집단을 생성하면 같은 집단(배열)에 속한 변수들은 메모리상에 연속된 공간에 할당됨

double[] Array2= {1.2, 3.1, 6.7};
배열을 선언과 동시에 초기화

int[] s = new int[29];  // 한번의 같은타입의 정수변수 29개를 한번에 생성 (정수배열 29칸)
//s[0];
//s[1];
//...
//s[29];  이런 이름의 29칸의 정수공간을 사용할 수 있음.

int[] s <- 정수배열의 위치를 저장할 수 있는 참조변수
int[] <-정수 배열의 위치를 저장할 수 있는 변수 타입
[] <- 배열의 인덱스
new 키워드 = 힙영역에 만들어라

배열을 쓰면 컴퓨터 입장에서도 
s[0] 과 s[1] 같은집단으로써 관련있음
age와 s[0]은 관련없는 놈으로 인지

s12 -> 여기있는 숫자들은 단지 변수명으로서의 글자
s[0] -> []안에 있는 숫자들은 정수데이터


for-each 루프
for( 자료형 변수 : 배열이름)   //  해당집합의 타입변수 : 데이터집합
{
    //반복 문장들
}

length : 자기자신의 길이를 기억


배열이란??  
같은 타입의 변수들의 집합 

배열의 특징
(안쓰고 그냥 변수 여려개 만들었을 떄와의 비교) 
1. 지들끼리 관련있음
2. 연속된 메모리 공간 할당
3. 배열의 인덱스는 변수명으로서의 글자가 아니라 숫자임 
4. 동적으로 할당됨 -> 실행시에 배열의 크기를 정할 수 있음 


배열에서
위치만 복사하면 얕은복사
실제 데이터를 복사하면 깊은 복사



'Java' 카테고리의 다른 글

11일차  (1) 2016.03.29
9일차  (1) 2016.03.24
6일차  (1) 2016.03.21
5일차 조건문, 반복문  (1) 2016.03.18
4일차 Java 자료형, 연산자, 예제  (1) 2016.03.17
Posted by 보로로롬
,

6일차

Java 2016. 3. 21. 17:36

break문
break를 만나면 정지

continue문
-continue를 만나면 다음해야할거 패스


Scanner scan = new Scanner(System.in);
String name;
int age;

System.out.println("나이를 입력하세요");
age = scan.nextLine();
scan.nextLine(); // 엔터키를 한번 먹어줌

System.out.println("이름을 입력하세요");
name = scan.nextLine();
System.out.println(name);



'Java' 카테고리의 다른 글

9일차  (1) 2016.03.24
7일차  (1) 2016.03.22
5일차 조건문, 반복문  (1) 2016.03.18
4일차 Java 자료형, 연산자, 예제  (1) 2016.03.17
3일차  (1) 2016.03.16
Posted by 보로로롬
,

5일차 조건문, 반복문

Java 2016. 3. 18. 16:08

제어문 : 문장이 실행되는 순서에 영향을 주는 문장

조건문 : 조건에 따라서 여러개의 실행경로 가운데 하나를 선택

반복문 : 조건에 따라 여러개의 같은 처리를 반복


3가지 제어구조

-순차구조
-선택구조
-반복구조


IF문    if( 조건식 )
if조건식 다음 문장 한개만 인식
두문장 이상 사용시 if아래 {}사용


if else
if문을 사용하고 맞으면 if문 문장
아니면 else 문장 출력


Math 꾸러미
Math.rqndom() : 0.00000000~0.9999999 까지의 숫자를 갖다줌.

String : 문자열을 저장할수 있는 변수
ex) String 변수 = "이름";

import java.util.*;
스캐너말고 다른기능 다대려오기 ㅋㅋ

Switch문
여러가지 경우에서 하나를 선택하는데 사용
swich( 변수 )
{
    case 값:
      문장
    case 값:
      문장
    default 값:
      문장
    break;
}

while
주어진 조건동안 반복하는데 사용.
while (조건문)
문장;


for
for(초기화식; 조건식; 증감식)
for(int i=0 ; i<7 ; i++)


ex) 구구단짜기



'Java' 카테고리의 다른 글

7일차  (1) 2016.03.22
6일차  (1) 2016.03.21
4일차 Java 자료형, 연산자, 예제  (1) 2016.03.17
3일차  (1) 2016.03.16
자바 클래스와 메소드  (1) 2016.03.15
Posted by 보로로롬
,

팁: alt + 위아래 (한줄이 이동함)

힙영역의 데이터는 이름을 가지지 않고 주소만 가짐.

참조변수 : input의 데이터의 위치를 알수있는 변수

오버플로우 : 범위의 끝에서 초과해서 최소로 이동

1픽셀 : 5비트

프로그램은 공통점을 끌어모으기 (겹치는 것은 의미를 가지고 분류시키기)

*심볼릭 상수 : final double 변수 = 3.14  
-> 한번 변수 생성시 초기화된 값이 프로그램 종료시까지 유지 중간에 값을 대입시킬수 없음
-> 관례적으로 심볼릭상수는 변수의 첫글자는 대문자!  

======================================================================

자료형 : 자료의 타입, 기초형과 참조형으로 나눠진다.

-기초형 : 실체값이 저장
ex) 정수형: int, byte, shot, long / 실수형: float, double / 문자형: char 

-참조형 : 실제 객체를 가리키는 주소저장 (데이터의 위치)
ex) class

데이터형 

설명 

크기 (비트) 

기본값 

최소값 

최대값 

byte 

 부호있는 정수

 8

 0

 -128

-127 

short

 부호있는 정수

 16

 0

 -32768

32767 

int

 부호있는 정수

 32

 0

 -2147483648

2147483647 

long

 부호있는 정수

 64

 0L

 -2^63

2^63-1 

float

 실수

 32

 0.0f

 (+/-)3.4E-38

 (+/-)3.4E38

double

 실수

 64

 0.0d

 (+/-)1.7E-308

 (+/-)1.7E^308

char

 문자(유니코드)

 16

 null

 \u0000 (0)

\uFFFF (65535) 

boolean

 true / false

 8

 false

 해당없음

해당없음 


*변수의 이름

-식별자는 유니코드와 식별자의 조합
-식별자의 첫 번째는 유니코드
-예약된 키워드(int, class) 사용 안됨
-첫글자 숫자나 # 사용 안됨

*유니코드 전세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰수 있도록 설계된 산업표준 (16비트)


*식별자 관례

-클래스명 : 각단어 첫글자 대문자
-변수명, 메소드명 : 소문자로 시작되어 2번째 단어의 첫글자는 대문자로 한다.
-static final 변수 : 변하지 않는 숫자를 나타내는 변수, 모두 대문자 (실볼릭 상수)


*오버플로우 : 범위의 끝에서 초과해서 최소로 이동

System.out.println(2147483648L);  -< 인트?
괄호 안의 2147483648은 int범위에서 벗어나기때문에 에러가난다.
그래서 숫자 뒤에 long인 L을 붙여주면 출력이 제대로 된다.


연산자



단항연산자



복합대입연산자



관계연산자
-
관계연산자 타입은 항상 참(true)과 거짓(false)으로 나옴


논리연산자
참/거짓간의 연산

 연산자 기호

 사용 예 

 의미 

 && 

 x && y 

 AND연산, 모두참이면 참 / 그렇지않으면 거짓

 ||

 x || y 

 OR연산, 둘중 하나가 참이면 참 / 그렇지 않으면 거짓

 !  

 !x 

 NOT연산, x가 참이면 거짓 / x가 거짓이면 참 


삼항 연산자

 condition ? exp1 : exp2;

-condition이 참이면 exp1 선택, 거짓이면 exp2 선택

ex) 변수 = x > y ? x : y ;
ex2) System.out.println( a>b ? "a가 큽니다." : "B가큽니다" );  이렇게 문자로도 사용이가능.


비트연산자

AND : 서로 같으면 1 아니면 0
OR : 둘중 하나가 1이면 1, 아니면 0
XOR : 서로 같으면 0, 다르면 1
NOT : 참이면 0, 거짓이면 1
<< n : 비트왼쪽으로 이동 제일 왼쪽부터 0으로채워짐 (n만큼)
>> n : 비트오른쪽으로 이동 제일 오른쪽으로부터 지워짐 (n만큼)  *오른쪽갈때만 >>> 있음


형변환 : 어떤 자료형의 값을 다른 자료형의 값으로 바꿔주는 연산
double x = (int) 

묵시적 : 묵시적으로 형이 변환되는거 대부분
명시적 : 앞에 (자료형)을 넣어주는 것
확대변환 : 더 큰 크기의 변수로 값을 변환 
축소변환 : 명시적으로 자료형을 바꾸면서 손실되버리는 변환 (double) -> (int)로가면 소수점을 잃음


예제) 점수를 입력받아 점수에 따라 학점부여하기.



예제) 년도를 입력받아 윤년인지 아닌지 판별하기.
(조건1. 4로 나누었을때 나머지가 0이며, 100으로 나눴을때 나머지가 0)
(조건2. 400년에 한번 윤년이다.)
위 두 조건중 하나를 만족하면 윤년.




예제) 정수를 입력받아 입력받은 정수가 양수이면 ( x^2+4x+7 )을  음수이면 ( x^2-6x+1 )을 출력하시오.


예제) 세 수를 입력받아 중간값을 구하시오.


예제) 사용자로부터 반지름을 입력받아 원의 넓이와 둘레를 출력하고 소수 2째짜리까지 표시.







'Java' 카테고리의 다른 글

6일차  (1) 2016.03.21
5일차 조건문, 반복문  (1) 2016.03.18
3일차  (1) 2016.03.16
자바 클래스와 메소드  (1) 2016.03.15
통합개발환경 이클립스 설치하기  (1) 2016.03.15
Posted by 보로로롬
,

3일차

Java 2016. 3. 16. 16:37

변수(variable) : 값을 담는 바구니 인데 값의 유형에 따라 바구니에 유형도 여러가지가 있음

                  변수는 타입과 이름(바구니들을 구분하기 위한)을 가지고 있다.


상수(constant) : 그 값이 프로그램이 실행하는 동안 변하지 않는 값 

  ex) 3.14 (실수형상수) , 1000 (정수형상수), "Hello World!" (문자형 상수)
  10.0 (실수상수), 10 (정수상수)   -> 10.0과 10은 같지않다.
  'a' (문자상수 1글자만가능),  "a" (문자열 상수 글자수 제한x) -> 'a' 와 "a" 는 같지않다. 

*심볼릭 상수 (Symbolic Constant) : 변수인데 절대로 값을 못바꾸는 것, 변수를 상수화 (이것은 변수인데 상수)

*리터럴 상수 (Literal Constant) : 원래 그냥 그런 값 (1, 2, a, b)



변수의 초기화 : 변수에 처음으로 값을 넣어주는 것


int x;

int타입의 변수 x를 생성 (정수변수 x를 선언)


x=100;

x라는 변수에 100이라는 값을 담음 (x라는 값을 100으로 초기화 했다.)


int x = 0;

변수를 선언과 동시에 초기화


대입연산자(=) 오른쪽에 있는 값을 왼쪽의 변수에 담음

* (==) : 프로그램에서는 같다라는 표현을 == 로 사용함 

수식 : 피연산자와 연산자로 이루어진다.
        수식의 결과값을 가진다.

x = 100;
y = 200;
sum = x + y;   (2개의 수식이 합쳐져있는 것)


산술연산자 : 프로그래밍에서는 두개의 피연산자와 같은 타입이면 결과도 그 타입이 나와야됨

4/3 = 1  (정수와 정수로 연산해서 결과도 정수)
5.0/2 = 2.5  (서로다른 타입으로 연산하면 더 큰타입이 결과로 나옴)
6/2 = 3
6.0/2 = 3.0    -> 6.0/2.0 = 3.0  (계산하기 전에 더 큰 타입으로 변환이 됨)



연산

연산자 

자바 수식 

수학에서의 기호 

덧셈

+

x + y 

x + y 

뺼셈 

 - 

x - y 

x - y 

곱셈 

 * 

x * y 

xy 

나눗셈 

 / 

x / y 

x/y 

나머지 

 % 

x % y 

x mod y 


System.out.println("  ");

System
필수기능으로 그냥 언제든 사용가능
System이라는 묶음에는 여러개의 값과 기능들이 들어있음

.
.연산자는 System꾸러미에서 가져올수 있음

System.out.println("안녕")
System 꾸러미에서 out을 가져왔고
out 꾸러미에서 priintln기능을 호출
println을 호출하면서 "안녕" 이라는 값을 전달

println("  ");
여기서 print 뒤에 ln은 한줄넘기기
print("단어");로 쓰면 출력값이 단어가 나오고 한줄넘기기를 하지않음

\n
print문에서 한줄을 뛰는 것

\t
한칸을 뛰는 것


System.(     )

out(표준출력)
모니터로 데이터를 출력할 수 있는 기능을 가진 꾸러미

in(표준입력)
키포드로부터 데이터를 읽어들일 수 있는 기능을 가진 꾸러미


Scanner input = new Scanner(System.in);   * input = 변수

Scanner
(Systin.in으로 들어오는)입력데이터를 편리하게 가공해주는 도우미 꾸러미
외부에 있어서 임포트선언을 해야 사용이 가능
(클래스 위에 선언 import java.util.Scanner; )

import 자동 입력팁 2가지
1. Scanner input = new Scanner(System.in); 를 작성하고 ctrl + shift + o  
2. scan 쓰고 ctrl + 스페이스바 를 누르고 설정해주면 import가 설정됨 (Scanner뒤는 따로작성해야됨)

input.nextInt();
이것은 키보드로 입력받은 (System.in); 으로부터 들어오는 다음 데이터를 정수로 읽어서 갖다줌.
nxtInt는 가만히 기다리다가 데이터가 들어오면 정수로 가공해서 가공한 결과를 return.

*import 없이 사용하려면 아래와 같이 스캐너앞에 Scanner 앞에 java.util. 을 붙여주면 됨.
java.util.
Scanner input = new java.util.Scanner(System.in);


예제) 사용자로 부터 숫자를 두번 입력받아 입력받은 두수를 더 한값을 출력하기.

-학습목표: 사용자로부터 숫자를 입력받아서 어떤 연산을해서 결과값을 출력할수 있다.


* 한줄에 입력하고 싶은 문자나 숫자를 표현하는 방법

1.문자열끼리 덧셈연산

문자열 끼리의 덧셈연산은 문자열 이어 붙이기와 같아서 아래와 같이
System.out.print("문자" + "문자" + 333(숫자) ) 를 입력하면 한줄에 표현가능
(문자와 숫자를 더하면 타입이 달라서 숫자가 문자타입으로 변해서 출력값이 나옴)
"문자" + "문자" + "333" 로 숫자가 문자타입으로 바뀜


2. 서식문자열 사용하기

쓰고 싶은 문자열과 서식문자를 같이 사용하고 콤마 이후에 서식문자의 변수이름입력
서식문자열을 사용할때는 printf 를 사용!
System.out.printf("결과 : %d + %d = %d", x,y,sum);     

%d : 양수와 음수의 10진수 정수
%x : 양수의 16진수 정수
%o : 양수의 8진수 정수
%f : 양수와 음수 표현 가능한 10진수 실수
%c : 한 개의 문자
%s : 문자열
%u : 양수만 표현 가능한 10진수 정수
%e : 실수
%.2f : 소수점 둘째자리 이하 자리 수 (숫자를 변경하면 자리수)
%% : % 출력




상수메모리

스택영역(stack) : 지역변수들이 저장됨

힙영역(heap) : 동적으로 할당한 데이터 들이 저장


*프로그램에서의 정적 과 동적

-정적 : 컴파일시에 미리 예측가능하여 결정된 사항 (기초자료형)

-동적 : 실행시에 결정이 되는 사항 (기초자료형이 아닌 데이터)
ex) new 키워드 : 힙영역에 동적으로 데이터 할당

*동적으로 할당 : 내가 원할때 만들었다가 원할때 지울수 있는 것 
*힙 영역 : 다른 형태의 데이터를 관리하기 위한 빈공간


int x (기초변수) : 정수를 하나 담을 수있는 바구니(변수)

Scanner input (참조변수) : Scanner로 만들어낸 데이터의 위치를 저장할수 있는 바구니(변수) input  
input을 지우고 싶으면 input=null; 아무값도 안넣으면 제거됨

*참조변수 : 데이터의 위치를 저장

*지역변수 : {}블록 안에서 만들어진 변수
           변수선언문을 만날 때 생성(공간할당), 자신이 포함된 블록이 종료될때 없어짐.

*스택 

제한적으로 접근할 수 있는 나열구조(LIFO)
한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조
*LIFO (Last In First Out) *(=스택(Stack))
먼저 만들어진 변수가 늦게 없어지고 늦게 만들어진 변수가 먼저 없어짐
데이터를 넣는것 (PUSH) / 데이터를 꺼내는 것 (POP)

*큐(queue)
먼저 들어온 데이터가 먼저 나오는 FILO(First In last Out) 구조
데이터를 넣는것 (Put) 데이터를 빼는것 (Get)
큐에서는 front( put할수 있는 위치= 삽입 )와 rear( get할수 있는 위치 = 삭제 ) 가 있다.


예제) 사용자가 생각하는 월급을 입력받아 10년동안의 저축률 계산하기.


예제) Double타입을 사용하여 소수점의 원의 면적구하기




오류
-컴파일 오류(compile error) : 컴파일이 실패 (문법이 틀려서), 계산식 오류
-실행 오류 (run-time error) : 실행 중에 프로그램이 뻗는거 (정수입력 받아야하는데 문자를 받은경우)
-논리 오류 (logical error) : 컴파일/런타임 에러 없이 잘 동작했는데 결과값이 원하는 결과가 아님

*디버깅 : 논리 오류를 고치는 과정

-오류들의 차이
컴파일 오류 : 발견이 쉬움
실행 오류 : 충분한 테스팅을 하면 발견할 수 있음
논리 오류 : 발견이 어려움, 가장 조심해야됨 오류해결하기 짜증남


예제) 1.사용자가 입력하는 원화를 달러화로 계산하는 프로그램을 작성하여 보자.
        달러에 대한 원화 환율(예를 들어 1달러는 1392.83원)은 실수형 변수에 저장하고 
        사용자로부터는 받는 원화는 정수변수에 저장한다. 
        원화를 환율로 나누어서 사용자가 입력한 원화가 몇 달러에 해당하는지를 계산한다.



예제) 사용자로부터 입력을 받아 삼각형의 높이를 구하시오. 








Posted by 보로로롬
,

자바 클래스와 메소드

Java 2016. 3. 15. 16:47

클래스

-객체를 만드는 설계도 (자바프로그램은 클래스로 구성)
-public 키워드는 Hello 클래스가 다른클래스에서도 사용가능함을 나타낸다.
-같은클래스에서는 똑같은 클래스가 있으면안됨
-클래스 = 필드(변수) + 메소드(함수)


메소드(method, 함수) 

-입력을 받아서 작업을 수행하고 결과를 내보내는 작은 기계
-메소드 안에 들어있는 문장들을 차례대로 실행한후에 작업의 결과를 외부로 반환
-명령어들의 집합


메소드의 정의 

-public: 누구나 이용할 수 있음
-static: 정적 메소드(다음에 학습)
-void: 반환값이 없음
-Main: 메소드 이름
-String args[]: 매개 변수(메소드가 외부에서 받는 데이터)


프로그래밍에서 함수 : 명령문장들의 집합

함수의 구성요소

-몸통: 이 함수가 호출됐을 때 실행해야될 문장집단
-매개변수 : 함수가 실행될 때 전달 받는 입력 값
-반환값 : 함수가 끝나고 돌려줘야되는 값




Posted by 보로로롬
,