붓, 그리다
자바의 특징, 변수 본문
[ 객체지향언어 4요소]
추상화, 캡슐화, 상속형, 다형성을 다 갖추어야 객체지향언어라고 한다.
자바스크립트 : 객체지향언어가 아니다.
-> TypeScropt(EcmaScropt6)에 추가됨
JVM : 가상컴퓨터
3p. 운영체제 독립적
5p. OS 종속적
자바의 특징
- 자바프로그램을 작성할 때는 운영체제에 대해 독립적이나
-> 자바 파일을 작성 : 운영체제에 상관없이 다 작성 가능
- 실행할 때에는 운영제체에 의존적이다.
-> 리눅스에서 실행시 리눅스용 JDK가 필요
-> 맥에서 실행시 맥용 JDK설치가 필요
[변수]
- 컴퓨터에게 어떤 자료를 저장시킬 것인지 지정
- 메모리에 공간을 하나 만들어준다
- 프로그램 작성시
1) 사용자로부터 값을 입력을 받을 때 변수 필요 : 출력하기 전
2) 계산을 할때 (1~100까지 합계,,,)
3) 현재 프로그램 실행 상태를 기억을 할 필요가 있을 때
ex. 그림판 실행 -> 사용자가 아직 마우스 버튼을 누르지 않은 상태를 기억
-> 문자, 숫자, 논리값(참 or 거짓) 저장
-> boolean으로 저장
[ 자바의 자료형 ]
문자 : char, string
숫자 : int
논리값 : Boolean
변수이름 | 자바스크립트 | 자바 |
var age | int age |
- 자바는 변수를 선언할 때 자료형을 지정한다.
- 자바스크립트는 자료형 선언을 하지 않아 어떤 값이 들어가는지 모른다.
- 자바에서는 값(문자, 숫자, 날짜, 논리값) -> 자료형을 정해준다.
- 자료형(=데이터형) : 저장할 데이터의 종류와 크기를 지정해주는 것
- 자료형 8가지
1) 변수 선언 및 저장
class VarTest
{
public static void main(String[] args)
{
System.out.println("변수 선언 및 저장");
//자료형(문자, 숫자) 변수명;
int age; //변수선언(메모리에 공간이 만들어진다)
age=25; // 25를 변수 age에 저장
System.out.println("올해 제 나이는"+age+"살 입니다."); //출력
}
}
---------- 실행 ----------
변수 선언 및 저장
올해 제 나이는25살 입니다.
출력 완료 (0초 경과) - 정상 종료
2) 자료형과 일치하지 않을 경우
class VarTest
{
public static void main(String[] args)
{
System.out.println("변수 선언 및 저장");
//자료형(문자, 숫자) 변수명;
int age; //변수선언(메모리에 공간이 만들어진다)
age="홍길동"; // 25를 변수 age에 저장
System.out.println("올해 제 나이는"+age+"살 입니다."); //출력
}
}
---------- 컴파일 ----------
VarTest.java:8: error: incompatible types: String cannot be converted to int
age="홍길동"; // 25를 변수 age에 저장
^
1 error
출력 완료 (0초 경과) - 정상 종료
[ 변수의 종료 ]
1.1 수치형(정수)
1) byte : (-128~127) 까지만 저장
- 저장공간( 1 byte)과 헷갈리지 말 것
- 자바에서 데이터 전송단위 -> 입출력
ex) 채팅에서 문자열이 저장 : 컴퓨터는 숫자(2진수)로 저장
2) short : 2byte 공간 크기(-32768~32767)
★ 3) int : 4byte 공간 크기(-2147483648 ~ 214783647)
- 자바에서 연산단위로 사용(+,-,*,/)
4) long : 8byte 공간 크기(기억크기)
- 저장하는 값 뒤에 반드시 L or l 표시
EX1) 수치형 연산하기
class VarTest
{
public static void main(String[] args)
{
System.out.println("변수 선언 및 저장");
//자료형(문자, 숫자) 변수명;
int age; //변수선언(메모리에 공간이 만들어진다)
age=25; // 25를 변수 age에 저장
System.out.println("올해 제 나이는"+age+"살 입니다."); //출력
int x=0; //변수를 선언하면서 동시에 값을 저장한 경우
byte b=23; // byte는 (-128~127) b는 변수
short c=12; // short은 (-32768~32767)
byte sum=b+c; // sum 함수 앞에 반드시 자료형
}
}
---------- 컴파일 ----------
VarTest.java:15: error: incompatible types: possible lossy conversion from int to byte
byte sum=b+c; // sum 함수 앞에 반드시 자료형
^
1 error
출력 완료 (0초 경과) - 정상 종료
-> 자료형이 맞지 않다는 오류
-> 연산(+,-,*,,)등을 할 때는 반드시 int 절을 사용
EX2) 수치형 연산 2
class VarTest
{
public static void main(String[] args)
{
System.out.println("변수 선언 및 저장");
//자료형(문자, 숫자) 변수명;
int age; //변수선언(메모리에 공간이 만들어진다)
age=25; // 25를 변수 age에 저장
System.out.println("올해 제 나이는"+age+"살 입니다."); //출력
int x=0; //변수를 선언하면서 동시에 값을 저장한 경우
byte b=23; // byte는 (-128~127) b는 변수
short c=12; // short은 (-32768~32767)
int sum=b+c; // sum 함수 앞에 반드시 자료형
System.out.println("sum=>"+sum);
}
}
---------- 컴파일 ----------
출력 완료 (0초 경과) - 정상 종료
---------- 실행 ----------
변수 선언 및 저장
올해 제 나이는25살 입니다.
sum=>35
출력 완료 (0초 경과) - 정상 종료
EX3) long 절
int no=1234567890000;
System.out.println("합계=>"+(b+c));
System.out.println("no=>"+no);
---------- 컴파일 ----------
VarTest.java:18: error: integer number too large: 1234567890000
int no=1234567890000;
^
1 error
출력 완료 (0초 경과) - 정상 종료
-> 자료형 크기가 커서 저장이 안됨 : long형으로 입력
long no=1234567890000;
System.out.println("합계=>"+(b+c));
System.out.println("no=>"+no);
---------- 컴파일 ----------
VarTest.java:18: error: integer number too large: 1234567890000
long no=1234567890000;
^
1 error
출력 완료 (0초 경과) - 정상 종료
-> long형으로 저장하는 경우 숫자 뒤에 L or l 입력
-> L 입력하지 않으면 무조건 정수로 봄
long no=1234567890000L;
System.out.println("합계=>"+(b+c));
System.out.println("no=>"+no);
---------- 컴파일 ----------
출력 완료 (0초 경과) - 정상 종료
---------- 실행 ----------
변수 선언 및 저장
올해 제 나이는25살 입니다.
sum=>35
합계=>35
no=>1234567890000
출력 완료 (0초 경과) - 정상 종료
1.2 실수(소수점)
★ 1) float : 4byte
- 소수점 뒤에 F or f를 입력해야 float 형으로 저장
class VarTest2
{
public static void main(String[] args)
{
System.out.println("소수점을 저장");
float f=5.3;
System.out.println("f=>"+f);
}
}
---------- 컴파일 ----------
VarTest2.java:6: error: incompatible types: possible lossy conversion from double to float
float f=5.3;
^
1 error
출력 완료 (0초 경과) - 정상 종료
-> 무조건 double로 인식에서 에러
-> 소수점 뒤에 F or f를 입력
float f=5.3F;
2) double : 8byte
- 자바에서 소수점이 있는 실수값은 무조건 double형으로 인식한다.
[데이터 저장시키는 순서]
byte > short > int > long > float > double
class VarTest2
{
public static void main(String[] args)
{
System.out.println("소수점을 저장");
float f=5.3f;
double f2=5.3;
System.out.println("f=>"+f);
System.out.println("f2=>"+f2);
float m_float=123456.789123f;
double m_double=123456.789123;
System.out.println("m_float"+ m_float);
System.out.println("m_double"+ m_double);
}
}
---------- 실행 ----------
소수점을 저장
f=>5.3
f2=>5.3
m_float123456.79
m_double123456.789123
출력 완료 (0초 경과) - 정상 종료
- float : 소수점 둘째짜리까지 저장하는 경우 사용
- Double : 소수점 둘째짜 이상의 자릿수를 저장하는 경우, 즉 정밀한 값을 저장(ex. 계산기)
2.문자형 : char, String
1) char
- 문자하나 저장 :홈따옴표'' 사용
- 2byte (0~65535)까지 저장 가능
char str='a';
★ 2) String : 참조 자료형
- 문자열(문자하나 이상 나열) : 겹따옴표 "" 사용 'ab' 안됨 -> "ab"
- 자바에서 문자열은 기본자료형이 아니다.
String str2="abc";
//문자+문자=문자열
String s1="자바기초 문법";
String s2="연산자";
String s3=s1+s2;
System.out.println("s3="+s3);
---------- 실행 ----------
s3=자바기초 문법연산자
*아스키코드값(0~255) : 가장 기본적인 문자
A : 65, B:66, C:67, a:97 -> 컴퓨터가 문자를 숫자로 기억
*유니코드 : 아스키코드값 이상의 문자를 저장할 경우 사용하는 전세계 언어의 코드값
(비영어권에서 그 나라 언어로 사용할 수 있도록 하는 언어코드)
*자바스크립트가 객체지향언어가 아닌 경우
- 'ab'와 "ab" 모두 사용 : 일관성이 없다.
- 세미콜론 ;을 쓰지 않아도 된다.
3.논리형 : boolean
- 참과 거짓을 판별할 수 있는 것
-> 8가지 외에 나머지는 번부 객체로 저장(참조 자료형)
기본자료형 : int, byte, short, long, float, double, char, boolean
1) 논리값, 소문자만 가능
class VarTest3
{
public static void main(String[] args)
{
System.out.println("논리적인값 저장");
boolean b=True;
}
}
---------- 컴파일 ----------
VarTest3.java:6: error: cannot find symbol
boolean b=True; //소문자만 가능
^
symbol: variable True
location: class VarTest3
1 error
출력 완료 (0초 경과) - 정상 종료
2) 수식으로 논리값 설정 가능
boolean c=2>3; // 수식으로 표시 가능
3) 아스키코드값, 16진수
class VarTest3
{
public static void main(String[] args)
{
System.out.println("논리적인값 저장");
boolean b=true; //소문자만 가능
boolean b2=2>3; //수식을 표시
System.out.println("b=>"+b+",b2=>"+b2);
System.out.println("=문자형=");
char c1='A';
char c2=65; // int c2=65-> 숫자, char c2=65(아스키코드값)
char c3='\u0041'; //16진수형태로 저장(문자형태)
// 16진수 : '\u0000' ~ '\uffff' -> 뒤에서부터 계산
System.out.println("c1의 값은 "+c1);
System.out.println("c2의 값은 "+c2+", c3의 값은 " + c3);
}
}
---------- 실행 ----------
논리적인값 저장
b=>true,b2=>false
=문자형=
c1의 값은 A
c2의 값은 A, c3의 값은 A
출력 완료 (0초 경과) - 정상 종료
[ 변수의 특성 ]
class VarTest4
{
public static void main(String[] args)
{
System.out.println("변수의 특성");
// 자료형 변수명=값; : 같은 자료형의 변수를 연달아서 여러번 선언
int num,num2; //,로 구분해여 나열
num=17;
System.out.println("num="+num);
num=18; //증간에 값이 변경되면 그 변경된 값을 기억
System.out.println("num="+num);
// 상수 : 값이 정해지면 바뀌지 않는 값
int num6=40;
System.out.println("num6="+num6);
}
}
---------- 실행 ----------
변수의 특성
num=17
num=18
num6=40
출력 완료 (0초 경과) - 정상 종료
2) 상수
class VarTest4
{
public static void main(String[] args)
{
System.out.println("변수의 특성");
// 자료형 변수명=값; : 같은 자료형의 변수를 연달아서 여러번 선언
int num,num2; //,로 구분해여 나열
num=17;
System.out.println("num="+num);
num=18; //증간에 값이 변경되면 그 변경된 값을 기억
System.out.println("num="+num);
// 상수 : 값이 정해지면 바뀌지 않는 값
final int num6=40; //변수 앞에 final이 붙으면 상수가 된다.
num6=50 ;
System.out.println("num6="+num6);
}
}
---------- 컴파일 ----------
VarTest4.java:14: error: cannot assign a value to final variable num6
num6=50;
^
1 error
출력 완료 (0초 경과) - 정상 종료
-> num6 값이 상수여서 'num6=50'으로 변경할 수 없다는 오류
*에디터플러스 디버깅 방법(에러 잡는 방법)
콘솔창의 에러메세지를 더블플릭하면 에러가 발생된 문장으로 커서 이동
-> 앞뒤 라인을 확인(대부분이 오타)
[변수의 사용범위]
- 초기값 : 변수를 맨 처음 만들고 나서 맨 처음으로 저장된 값
- 변수를 선언하고 나서는 바느시 값을 입력해야 한다.
class VarTest5
{
public static void main(String[] args)
{
System.out.println("변수의 사용범위(scope)");
int su1;
System.out.println("su1->"+su1);
}
}
---------- 컴파일 ----------
VarTest5.java:7: error: variable su1 might not have been initialized
System.out.println("su1->"+su1);
^
1 error
출력 완료 (0초 경과) - 정상 종료
2) 블록처리안 변수는 블록 안에서만 사용 가능하다.
class VarTest5
{
public static void main(String[] args)
{
System.out.println("변수의 사용범위(scope)");
int su1=10;
{//블럭처리, 블럭안에 변수는 안에서만 사용 가능
int su2=20;
System.out.println("su2->"+su2);
}
System.out.println("su1->"+su1);
System.out.println("블록 밖에 있는 su2->"+su2);
}
}
---------- 컴파일 ----------
VarTest5.java:12: error: cannot find symbol
System.out.println("블록 밖에 있는 su2->"+su2);
^
symbol: variable su2
location: class VarTest5
1 error
출력 완료 (0초 경과) - 정상 종료
'JAVA > Basic' 카테고리의 다른 글
객체지향언어 (0) | 2017.06.16 |
---|---|
다중IF문, While문, For문 (0) | 2017.06.16 |
이클립스 설치 및 환경설정 (0) | 2017.06.16 |
환경설정 2 (0) | 2017.06.16 |
Java의 설치 및 환경설정 (0) | 2017.06.16 |
Comments