- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이클립스를 켜보도록 합시다.
이클립스가 실행이 안되면 관리자 권한으로 시행해보기 !
ctrl + n을 눌러서 새로운창을 한번 만들어 봅시다.
package : 클래스가 여러개 묶여 있는 것. 여러개의 클래스를 비슷한 성격의 꾸러미로 묶어놓은것.
class를 생성.
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
" // TODO Auto-generated method stub " 이 부분은 메소드가 무슨역할을 한다는 것을 알려주는 것으로 지워도 됨.
메서드 : 명령문의 집합
main 메서드 : 프로그램의 시작과 끝
주석 : 프로그램 코드로 인식하지 않는 문장 즉 반영이 되지 않는 문장
주로 코드를 설명하는데 사용한다.
한줄짜리 주석은 //로 시작한다.
한줄짜리 주석의 단축기 : ctrl + shift + c
범위주석 ( 전체를 다 주석처리할수 있는것 ) /* */
범위주석의 단축기 : ctrl + shift + /
범위주석을 해제하는 단축기 : ctrl + shift + \
범위주석을 해제할때는 /* */ 사이의 어떤 영역이든 클릭하면 된다.
데이터의 종류
- 정수 : 10, -5
- 실수 : 3.15 , -1.5
- 문자 : 'a', '3' 따옴표로 묶여 있는 것이 문자. ( 숫자임에도 따옴표로 묶여있으면 문자 )
- 논리 : true, false 논리에는 두가지 데이터만 있다.
프로그래밍에서는 데이터를 사용하기 위해 종류별로 이름을 붙여 놓았다.
( 자료형 : data type 데이터 타입은 )
기본형 타입
1. 정수 : byte (1), short (2), *int(4) , long (8)
일반적으로 int을 많이 사용한다. 가장 많이 사용하는 것.
()는 크기를 의미하며 가로안에 든것은 1바이트, 2바이트, 4바이트, 8바이트 크기별로 표현할 수 있는게 다름.
2. 실수 : float(4) double(8)
숫자의 표현할 수 있는 정확도가 다름 근사치를 표현 7자리, 15자리까지 사용 가능
3. 문자 : char (2)
캐릭터. 2바이트의 크기이며 문자를 한글자만 표현이 가능하다.
4. 논리 boolean ( 1)
1바이트 true 와 false 를 표현 가능
변수란 ? ( 상수 vs 변수 )
상수란 값이 변하지 않는 데이터 ( 예 : 10, -5)
변수란 값이 변하는 데이터 ( 예 : x, y )
변수를 만들고 변수를 조작해서 원하는 결과를 만들어내는 것이 프로그래밍의 전부이다.
변수를 만드는 것 : 변수 선언
변수를 만드는 방법 : 데이터 타입, 변수이름
ex) int name
( name 은 임의로 정할 수 있는 변수 )
-데이터 타입을 선택해야 한다 ( int처럼 )
-데이터 타입을 선택할 때는 표현하고자 하는 데이터에 맞는 타입을 선택해주면 된다.
-변수 이름을 정할때는 표현하고자 하는 데이터의 의미와 부합하는 이름을 지어주면 된다.
ex) double pi;
-변수를 만들 때 주의할 점
빨간줄이 생기면 문법상의 오류가 있어서 번역을 할 수가 없다는 뜻.
문제의 원인 : 똑같은 이름의 변수가 위에도 있다.
한블록안({})에서는 이름이 중복되어서는 안된다.
중과로에서는 중복되는 이름이 오면 안됨 -> 컴파일 에러가 발생 빨간 밑줄 -> 실행할 수가 없다.
변수를 만드는 것은 변수를 만들면 -> 메모리 공간을 저장할 수 있게 해줌
값을 저장하기 위해서는 = ( 대입 연산자 ) : 오른쪽의 값을 왼쪽의 변수에 저장
long name;
double pi;
name = 10; // 정수를 표현, 초기화한다. -> 변수에 처음으로 값을 저장하는 것.
;는 문장의 마침표 역할을 한다.
pi = 3.14; 실수를 저장. 변수의 타입에 맞는 값을 저장해야함.
저장을 할때 주의할 점 : 선언과 초기화를 동시에 해주는게
int abc = 30;
-> int abc는 int는 정수를 표현하는 data type이고 abc는 변수 30은 초기화로 int abc 에 30을 넣어주는 것 ; 얘는 문장의 맞침표.
long h = 40L;
long 은 정수 data type이고 long h는 h를 선언한것. 40은 h에 초기화한것. L은 접미사로 숫자가 Long 타입이다를 알려주는 것인데 소문자도 되지만 대문자로 쓰는게 헷갈리지 않는다.
접미사 L을 붙여야 long 타입이다.
float f = 5.5f;
float f는 f라는 변수를 실수(float)으로 선언한것. 5.5는 f에 초기화한것. 뒤에 f는 접미사 f를 붙여야 float 타입이 된다. f를 붙이지 않으면 실수는 기본적으로 double 타입이다.
boolean b = true; //true, false
char c = '한'; 따옴표안에 한글자만 넣어야 한다. 두글자 이상을 넣으면 에러, 빨간줄이 생긴다.
char는 character data type으로 c를 문자 data type으로 선언해준것이고
질문사항 : new java , method, class, package 의 제대로된 비교와 정의.
선언 및 초기화
byte Y = 3;
short x = 20;
int ad = 300
long kr = 2039L;
float xd = 3.29f;
double c = 40302.30;
char g = '수';
boolean kl = false;
변수 안에 있는 것을 출력을 해 보자.
System.out.println(name); -> ()안에 있는 애를 출력.
실행하는 단축기 : ctrl + f11
타입의 선택 기준
정수
- byte short : 메모리를 절약할 때 (메모리는 램)
- int : 기본 int의 기본은 -20억 부터 20억까지
-long : int 의 범위를 벗어날때
약 900경정도
실수
- float : 메모리를 절약해야 할때 int 와 4바이트로 같지만, 데이터를 저장하는 방식이 int 와 다름. 훨씬 더 큰 숫자를 표현할 수 있다 ( 실수니까 ) 소숫점 위치만 저장하면 되기 때문에 int보다 굉장히 더 많은 숫자를 지정할 수 있다.
-double : 기본 ( 얘가 더 숫자를 정확하게 표현할 수 있음 )
문자
char c = '수'; 는 한글자만 사용할 수 있기 때문에 여러개의 문자를 사용할 수 있는 것은 string 이라는 data type을 사용해야 한다.
string ss = " 문자 여러개 "
문자열을 표현하기 위해 만들어진 class 가 string
? 앞 문자가 대문자라는 것은 클래스의 이름이라는 뜻.
System
위에 여덟까지 기본형 타입 외에 나머지는 참조형 타입 ( 값을 직접 저장하는 것이 아니라 )
형변환
다른타입의 값을 저장하기 위해서는 값의 타입을 변경해 주어야 한다.
이를 형변환 ( type casting) 이라고 한다. 앞에 가로를 치고 변화시키고 싶은 타입을 입력하면 된다.
타입에 맞지 않는 값을 저장하고 싶을때
타입을 변경하는 것
int small = 10 ;
long big = 10L;
( 형태를 보니까,
-> small 과 big 즉 변수에 변수를 집어넣는것처럼 보이네
즉 smal = (int) big; small 에 big을 집어넣는데, big이 long 이니까 big을 int 로 변경 해주어야 함.
big = (long)small (원래는 이게 맞을 텐데. small 보다 big이 더 범위가 넓기 때문에 small 은 굳이 long 으로 변환해줄 필요가 없다.
따라서 bing = small;
즉 표현 범위가 작은쪽을 큰쪽에 넣는 형변환은 생략이 가능하다.
표현 범위가 기준이나 바이트 크기가 아니다.
데이터가 손실될 염려가 없기 때문에 가능 ( 작은쪽 -> 큰쪽 )
? 그럼 표현 범위는 어떻게 알 수가 있을까?
명명규칙 (변수, 메소드, 클래스 등등의 이름을 정할때 )
- 영문자 대소문자, 한글, 숫자, 특수문자 (특수문자는 두가지 : _ , &언더바와 달러 두가지 )
- 숫자로 시작할 수 없다. 맨앞에 숫자가 있으면 안된다.
- 예약어는 사용할 수 없다 ( int, long etc )
- 낙타식 ( 처음에는 소문자로 시작했다가 새로운 단어가 시작될때 앞글자를 대문자로 사용하게 하는것 ) 표기법을 사용한다 ( mySampleVariable
- 클래스명의 첫글자는 대문자로 한다. ( Mysampleclass) 낙타식 표기법을 사용하지만 앞글자를 대문자로 한다.
? 클래스가 도대체 피부로 와닫지 않음
상수
처음 담긴 값을 변경할 수 없는 그릇
리터럴에 의미를 부여하기 위해 사용한다.
final int MAX_NUMBER = 10;
10이라는 숫자의 이름을 정확하게 알려주기 위해서 이름을 붙임 MAX NUMBER
상수는 변수와 구분시켜 주기 위해서 모두 대문자로 사용 두 단어 이상일때 언더바_를 사용해서 구분.
밑에 값을 변경하는 코드가 온다면 ex) MAX_NUMBER = 100; -> 컴파일 에러가 발생을 한다.
final 이 뭐지...?
출력
System.out.print ("줄바꿈을 하지 않는다");
println 는 줄바꿈을 하고 print 는 줄바꿈을 하지 않는다. [문장을 다 쓰고 println 은 다음문장을 띄어쓰기를 해주고 print 는 그 뒤에 줄바꿈을 해주지 않는다.]
만약 print 얘를 줄바꿈을 해주고 싶은 부분이 있다면
System.out.print("줄바꿈을 하지\n않는다")처럼 줄바꿈을 하고 싶은 문장에 \n를 넣어준다. (역슬러쉬 n을 넣어준다. -> 그 뒤에 나오는 문자부터 줄바꿈이 된다. )
System.out.println("줄바꿈을\t 한다.") -> \t는 tap을 의미하며 tap 은 space 4개를 의미한다.
System.out.println("A" + 100) -> A100으로 출력이 된다.
모든 타입들은 문자열을 만나게 되면 모두 문자열로 바뀜
System.out.println(10 + 20 +"30")
프로그램이 기본적으로 왼쪽에서 오른쪽으로 계산되기 때문에 10+20먼저 더하고 문자인 30을 만나게 되는것.
따라서 10과 20이 더하고 그 뒤에 문자열인 30이 출력 되기 때문에 3030이 출력됨
System.out.println("10"+ 20 + 30);
10이 문자이기 떄문에 문자와 만난 애들은 모두 문자가 된다.
따라서 102030이 출력됨
System.out.println("20" + (20 + 30));
요렇게 하면 괄호부터 계산이 되어서 2050이 됨.
System.out.printf("문자열:%s, 숫자:%d", "Hello", 10);
출력 : 문자열:Hello, 숫자:10
System.out.print 에서도 역슬러시 t가 가능한가?
Scanner sc = new Scanner(System.in); -> 입력받기 위한 클래스
Scanner 가 담겨 있는 애가 sc
이렇게 이클립스에 쓰면 빨간 줄들이 Scanner 에 그어진다. ->입력을 받기 위해서는 Scanner 라는 클래스가 필요하다.
클래스의 위치를 알려줘야함 import ( import 는 맨 위에다가 해준다. )
import 의 단축기 : ctrl + shift + o
1. 윗부분 import 하기 전
public class Hello {
public static void main(String[] args) {
2. 윗부분 import 한 후
import java.util.Scanner; 얘가 위에 생긴다.
public class Hello {
public static void main(String[] args) {
출력 포멧을 지정한다.
Scanner sc = new Scanner(System.in);
System.out.println(" 아무거나 입력해주세요.");
sc.nextline();
입력을 받기 위해서는 Scanner 라는 클래스가 필요.
입력
https://2018-start.tistory.com/41 블로그 참조 아랫글.
왜냐하면 입력을 받기 위해서는 Scanner 라는 클래스가 필요하다.
Scanner 클래스 특징 java.util 패키지 안에 속해 있는 클래스이므로 import 를 해주어야 합니다.
Scanner 클래스 객체를 생성해보자.
Scanner sc = new Scanner(System.in);
클래스도 객체를 생성해야만 기능을 사용할 수 있는 것이 있고 생성하지 않아도 되는 클래스가 있다. println()메소드와 같은 것은 객체를 생성하지 않고 사용가능하지만 Scanner클래스는 꼭 객체를 생성해야만 사용할 수 있습니다.
System.in 은 화면에서 입력을 받겠다는 의미 . Scanner클래스는 화면 뿐만 아니라 파일로부터 입력을 받을 수 있는데 화면으로부터 정수형, 소수형과 같은 데이터 타입을 입력을 받을 것이기 때문에 system.in 을 사용합니다
system.in은 입력한 값을 byte 단위로 읽으며 키보드와 연결된 자바의 표준 입력 스트림입니다.
Scanner 객체 사용
1. int iValue = sc.nextlnt(); // 입력받은 정수를 변수 ivalue에 저장
만약 입력받는 데이터 타입이 정수가 아니라 실수형 일 경우에는 nextDouble()처럼 사용하면 됩니다.
이름과 나이를 입력받아서 출력하는 예제. 이름은 문자열이므로 nextLine()을 사용합니다. next()를 사용할 수 있는데 둘의 차이점은 next()는 공백단위로 입력을 받고 nextLine()은 Enter 단위로 입력을 받는다는 차이
next()를 사용해서 a b를 입력한다면 a만 저장이되고 nextLine()을 이용해서 a b를 입력한다면 a b가 그대로 저장이 된다는 의미
ex)
package smile;
import java.util.Scanner;
Public class test {
public static void main(string[] args) {
Scanner sc =new Scanner(System.in);
String name = sc.nextLine();
int age = sc.nextint();
System.out.println(name + "님의 나이는" + age + "살 입니다."
}
}
다시 수업으로 돌아와서
Scanner sc = new Scanner(System.in);
Scanner가 담겨있는애가 sc
클래스의 위치를 알려줘야함 import (import는 맨 위에 생성됨 )
import 단축기 : ctrl + shift + o
System.out.println("아무거나 입력해주세요.") -> 그러면 가로안에 있는 문자를 인쇄해준다.
sc.nextline();
입력을 받기 위해서는 Scanner라는 클래스가 필요
사용자가 입력을 한 다음에 엔터를 치면 다시 실행
여기서 다시한번 봐보자.
String str2 = sc.nextLine();
(여기서 보면 str2라는 변수를 String 선언을 해 주었다. 그리고 sc.nextLine() 여기서 이 괄호에 들어가는 값은 사용자가 입력한 값이고 그것이 str2라는 변수에 저장된 것이다. )
System.out.println("입력받은 내용: " + str2) 가로 안에 " 입력받은 내용 : "이것은 인쇄되는 부분이고 그 뒤에 + 는 연결연산자이고 str2 는 사용자가 입력한 내용이 된다.
int nextlnt = sc.nextlnt();
double nextDouble = sc.nextDouble();
이런것들이 있지만 버그로 인해 사용하지 않는다.
버그 예
System.out.println("int 입력.");
int nextlnt = sc.nextlnt();
System.out.println(nextlnt);
System.out.println("문자열 입력");
String nextLine = sc.nextLine();
System.out.println(nextLine);
System.out.println("입력끝!)
nextint가 버그가 있으니까 사용하지말라
문자열로 숫자를 받고 형변환 하는게 더 좋다.
모르겠는 부분 :
System.out.println("int 입력");
int number = Integer.parseInt(sc.nextLine());
System.out.println(number)
Double.parseDouble(sc.nextLINE());
Integer.parseInt 가 int로 바꿔줄 때 사용.
문제 )
자신의 이름을 저장할 변수를 선언해 주세요
String Myname;
string Myname =
System.out.println()
myName = sc.nextLine();
int myAge:
System.out.println("나이를 입력해주세요>");
myAge = Integer.parseInt(sc.nextLine());
댓글
댓글 쓰기