2016-05-20: 진법과 자료형
연산자에 들어가고 있다. 진법 변환과 자료형에 대해서 너무나 좋은 강의를 들었다. 미래에 관해서는 잘 모르겠지만… 학습 품질에 관해서는 선택을 잘 한 것 같다. 재미있게 배우는 중. 물론 과제나 시험에선 좀 괴롭겠지만… 지금은 일단 즐기고 있다.
연산자에 들어가고 있다. 진법 변환과 자료형에 대해서 너무나 좋은 강의를 들었다. 미래에 관해서는 잘 모르겠지만… 학습 품질에 관해서는 선택을 잘 한 것 같다. 재미있게 배우는 중. 물론 과제나 시험에선 좀 괴롭겠지만… 지금은 일단 즐기고 있다.
variable 미국식 [|veriəbl;|vӕriəbl] 영국식 [|veəriəbl]
[형용사] 변동이 심한; 가변적인 참고 invariable
variable temperatures(가변적인 기온)
출처: http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=205d8e9c40c7439da55eebd7e85c3507&query=variable
사용법
자료형 변수명; // 변수 선언
int num;
String name;
num=50; // 자료 저장(초기화)
name=”Hong”; // 문자열은 “”로 묶어준다.
num=30; // num이 30이 된다. ‘변수’ 값이 바뀜.
변수 선언과 초기화를 분리하는 것이 보기에 좋다.(취향의 문제)
자료형 종류는 8가지.
변수명은 마음대로. 선언은 한 번만!
int num = 50;
int num = 30; // 오류!
자바의 정석 21쪽
class VarEx1 { public static void main(String[] args) { int year = 0, age = 14; System.out.println("Year:" + year); System.out.println("Age: " + age); year = age + 2000; // age + 2000 = year age = age + 1; // age + 1 System.out.println("\nYear:" + year); System.out.println("Age: " + age); } }
실제로 수학에서는 age + 2000 = year 이지만 컴퓨터에서는 year = age + 2000 식으로 사용
변수를 선언하여 값을 저장하고 출력.
누적 연산
age += 1; // age = age+1; 또는 age++; 과 동일
참고
= (대입 연산자)는 어떤 식보다도 늦게 수행된다.
입력/출력을 하지 않고 임시로 사용되는 것
보통 일반적인 경우 tmp, temp 라는 이름으로 사용됨
예: a, b의 값을 서로 교환할 때
temp = a;
b = a;
b = temp;
변수의 명명규칙
권장하는 규칙
final int MAX=100; // C언어에서 const와 같이 JAVA에서는 final을 사용해 변수를 상수화 시킴. 값을 잠가 다른 값으로 변경할 수 없게 만듦. MAX 처럼 모두 대문자를 사용. 여러 단어로 이루어진 경우 _을 붙여준다.(MAX_NUMBER)
변수의 타입
논리 |
문자 |
정수 |
실수 |
boolean: 1 |
char: 2 |
byte: 1 short: 2 int: 4 long: 8 |
float: 4 |
printf
System.out.printf(“점수: %d \n”, score); // %d: score를 정수 형태로 찍어라, \n: 줄바꿈
System.out.printf(“a: %d, pi: %f \n”, a, pi); // 여러 개를 표시 가능.
3 |
. |
1 |
4 |
만약 큰 값이 오면 정수부는 최대한 살리고 소수점이 영향을 받음.
Scanner는 java.lang (기본)에는 없고, java.util 패키지에 있음. 같은 일을 하는 패키지를 모음.
C언어에서 Header File을 Include 하듯, JAVA에서는 Import 하면 된다.
자바의 정석 p.41 입력 받고 출력하기
import java.util.Scanner; class ScannerEx { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("input one number "); String input = sc.nextLine(); int num = Integer.parseInt(input); System.out.println("value: " + input); System.out.printf("num = %d%n", num); } }
실행 결과
import java.util.Scanner; // java.util.* 을 전부 임포트 하면 좀 그렇겠지??
Scanner scanner = new Scanner(System.in)
String input = sc.nextLine();
nextLine(); // 스페이스바 포함해 키보드로 입력받음(문자열)
next(); // 스페이스 바 이전의 단어만 인식(문자열). 거의 사용하지 않음.
sc.nextLine(); // 결과가 문자열로 나옴
int num = integer.parseInt(input);
실습1 이름과 나이 입력받아 출력하기
import java.util.Scanner; class TestScanner1 { public static void main(String[] args) { String name, tmp; // init name, tmp int age; // init age Scanner sc = new Scanner(System.in); System.out.print("input your name "); name = sc.nextLine(); // input name System.out.print("input your age "); tmp = sc.nextLine(); // input age age = Integer.parseInt(tmp); // age (String to Integer) System.out.print("\nName: [" + name + "] and... "); // results System.out.printf("Age : [%d] ^_^", age); } }
실행결과
실습2 두 개의 숫자를 입력 받아 출력
import java.util.Scanner; class TestScanner2 { public static void main(String[] args) { int num1, num2, total; // init numbers, total variable String tmp; // init temp Scanner sc = new Scanner(System.in); System.out.print("input number one "); tmp = sc.nextLine(); // input num1 num1 = Integer.parseInt(tmp); // num1 to Integer) System.out.print("input number two "); tmp = sc.nextLine(); // input num2 num2 = Integer.parseInt(tmp); // num1 to Integer) total = num1 + num2; // 1+2 System.out.println("one + two = " + total); // result } }
실행결과
컴파일 관련 기초적인 실수
덧: 혹시나 환경 변수 때문에 실행이 제대로 되지 않나 했지만… 큰 관련은 없는 것 같다.
어제에 이어…
class JavaEx01 { public static void main(String[] args){ System.out.println("Java!"); System.out.print("Programming"); System.out.print(" print"); } }
System.out.print : 줄바꿈 없음
comment가 아주 중요. 자바의 주석은 두 가지. // or /**/
/* 작성자: AAA 일자: 2016-05-18 용도: 테스트 소속사: 00회사 */ class JavaEx01 { //한 줄 주석 public static void main(String[] args){ /* 여러 범위 주석 System.out.println("Java!"); System.out.print("Programming"); System.out.print(" print"); */ System.out.println("Age: " + 10); // System.out.println("Height: " + 170); // 잠깐 실행에서 제외하고 싶을 때 주석을 사용하면 편리하다. } }
메모리에 확보한 공간에 붙이는 별칭(Alias)
자료형 변수명;
|
자료형 |
크기(Byte) |
문자 |
char |
2 |
숫자(정수) |
byte |
1 |
|
short |
2 |
|
int |
4 |
|
long |
8 |
숫자(실수) |
float |
4 |
|
long |
8 |
불린 |
Boolean |
1 |
변수: 무엇인가를 기억시키고, 사용할 수 있다는 것.
int a=10
int b;
b = a; // a는 상수화되어 b에 저장됨.(등호의 오른쪽에 넣는 순간…)
Address(번지)
변수명
‘Camel 표기법에 의거’ 변수명을 지어보자.
1024 |
512 |
256 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
10승 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Bit |
Byte |
Kilo Byte |
Mega Byte |
Giga Byte |
Tera Byte |
Peta Byte |
0 or 1 |
8Bit |
1024Byte |
1024KB |
1024MB |
1024GB |
1024TB |
|
영문자 1개 |
|
|
|
|
|
|
|
|
|
|
|
|
|
↑
MSB(Most Significant Bit, 부호비트)
최상위 비트 (most significant bit, msb)는 최고값을 갖는 비트 위치이다. msb는 가장 큰 숫자를 왼쪽에 기록하는 자리 표기법의 규정 때문에 가끔 “left-most bit”를 뜻하기도 한다.
출처: <https://ko.wikipedia.org/wiki/%EC%B5%9C%EC%83%81%EC%9C%84_%EB%B9%84%ED%8A%B8>
char -> 2Byte (자바에서는 2바이트임. UNICODE를 지원하기 때문)
ASCII
모든 코드를 2바이트로 만들자… 유니코드
유니코드
A: 65, a: 97일 때 차이는 32.
별다른 표시가 없는 경우
100 -> int
3.14 -> double
3.14f -> float
더 큰 자료들은 별도 클래스로 제공합니다.
지수표기법.
Boolean: 1Byte.
참/거짓을 판별하는 용도로 사용.
예제
String: 문자열 저장. 기본 자료형은 아니지만, 사용의 편의를 위해 만든 클래스라고 함.
String name;
name=”홍길동”;
String name=””; // 백지상태로 clear
전화번호
String tel = “010-0000-0000”; // 전화번호를 String으로 저장
System.out.println(tel); // 출력
참고: C언어에서는 문자열을 배열로 만들어서 번거로움
Char: 한 글자 표기
char ch;
ch = ‘A’; // 작은 따옴표로
char name=’ ‘; // char을 clear하는 경우 한 칸 띄움.(스페이스바를 저장하는 건가?)
개인 정보를 변수에 저장해 출력하기
class JavaEx02 { public static void main(String[] args){ String name, tel, address, email; int age; name="Gil-Dong Hong"; tel="010-9999-9999"; address="Seoul, South Korea"; email="aaaa@bbb.com"; age=31; System.out.println("----- " + name + "'s Profile -----"); System.out.println("Age: " + age); System.out.println("Tel: " + tel); System.out.println("Address: " + address); System.out.println("Email: " + email); } }
실행결과.
Syntax Error(문법 오류)는 찾기 쉬움. 논리적 오류는 구조적인 문제이므로 발견하기 어렵다.
직급, 기본급 출력
class JavaEx03 { public static void main(String[] args){ String name, position; int basePay; name="Gildong Hong"; position="manager"; basePay=300000000; System.out.println("----- " + name + "'s Profile -----"); System.out.println("Position: " + position); System.out.println("Base Pay: " + basePay); } }
실행결과
“C:\Users\bs\Downloads\jdk-8u25-windows-x64.exe” 설치
PATH=(기존경로끝에);C:\Program Files\Java\jdk1.8.0_25\bin
CLASSPATH=C:\Program Files\Java\jdk1.8.0_25\lib\tools.jar
(자바에서 제공하는 클래스를 쫙 제공함)
결과
Command prompt에서 JAVA 실행 가능해야 함
class JavaEx01 { public static void main(String[] args){ System.out.println("Java!"); } }
주의: System을 소문자로 입력하니 컴파일 오류가 났다.
class JavaEx01 {
public static void main(String[] args){
System.out.println(“Java!”);
JAVAC로 컴파일
이런 파일이 생성됨.
2016-05-17: JAVA 프로그래밍 시작 더 읽기"