- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[JAVA] 자바 프로그램의 구조, 주석, Data Type, 상수, 형변환, .. 본문
▩ 자바 프로그램의 구조
/*
public
- 외부에서 별다른 제약없이 이 클래스에 접근 할 수 있습니다.
- private, protected, friendly
class
- 현재 만들어지는 모듈은 클래스입니다.
- interface
Hello
- 클래스 이름, 파일명은 Hello.java로 대소문자도 일치해야합니다.
*/
public class Hello {
/*
public: 외부에서 이 메소드는 아무런 제약없이 호출할 수 있습니다.
static: 객체를 생성하지 않고도 메모리할당이 이루어져
사용할 수 있습니다.
void : 이 메소드는 호출된후 처리결과를 리턴하지 않습니다.
int, float, String등 각 타입이 가능
main : JVM에 의해서 최초로 자동으로 호출되는 메소드입니다.
반드시 한개만 존재해야 합니다.
String[]: 문자열을 저장할 수 있는 배열을 의미합니다. 1차원 배열
args : 배열명입니다. 도스상에서 입력한 인수를 가져옵니다.
*/
public static void main(String[] args) {
//System.out.println("AAA"): 화면에 AAA문자열을 출력합니다.
// 문자열은 반드시 Double Quotation Mark로 감싸주어야 합니다.
//System.out.println(10): 화면에 숫자 10이 출력합니다.
//";"은 명령의 종결을 표시합니다.
System.out.println("안녕하세요.!!!");
System.out.println(10);
} //중괄호, 중괄호는 열린 갯수만큼 닫혀야합니다.
}
//중괄호안에 들어가는 코드는 일반적으로 4자정도의 들여쓰기를
//합니다.
// 단일행 주석
/*
여러행 주석1
여러행 주석2
*/
/**
* Documentation 주석
*/
▩ 식별자
- 클래스, 메소드, 변수 이름
- 이름 자체로 어느정도 내용이 식별이 되어야 합니다.
1. 클래스 이름
- 첫자는 대문자가 아니어도 에러는 발생이 안되나 일반적으로 첫자는 대문자를 이용합니다.
또한 마디마다 대문자를 이용합니다.
Hello, HelloWorld, CompanyName, Company_name
- 스칼라 기법을 이용합니다.
2. 메소드명
- 첫자는 일반적으로 소문자로 시작합니다.
- 메소드의 마디는 대문자를 이용합니다.
println(), printName(), print_name()
3. 변수의 작성 규칙
- int kuk = 10; 이라고 선언 했을 경우 kuk는 변수가 됩니다. 또한 식별자로 포함이 됩니다.
- String name="왕눈이"; 이런 경우는 객체변수에 해당이 됩니다.
- 알파벳, 대소문자, 숫자, _, $만 이용
- 첫 문자가 숫자이면 안됨
- 대소문자 완벽히 구별(파일명, 폴더 모두 해당)
- 키워드(예약어)와 같으면 안됨
- 길이 제한 없음(변수, 메소드명은 5자 ~ 15자 안팎)
- 이름만 보고 알아 볼수 있도록 의미 부여
- 스칼라 표기법: 무조건 단어의 첫자를 대문자를 사용합니다.
- 헝가리안 표기법: 단어의 약자를 추출하여 이용합니다. CompanyName --> CN
예) 권장되는 변수명 : companyName, i_kuk, jumsu_kuk, jumsu_eng, jumsu = _jumsu
▩ 데이터 형
- CPU와 메모리의 한계 때문에 데이터타입은 정확하게 지정해야 합니다.
1. 논리형
- boolean: 1 Byte(8 Bit)
- 초기값 : false
- 갖을 수 있는 값의 범위:true, false
- 조건문에서 조건이 참/거짓인지 판별하는 기준으로 쓰입니다.
boolean bo=true;
2. 문자형
- char: 2 Byte(16 Bit)
- 초기값 : \u0000
- 범위: \u0000 ~ \uFFFF(Unicode 0~65535)
char grade = 'A';
3. 정수 숫자형(음의 정수, 양의 정수)
※ 2진수의 원리
※ 음수의 원리(반도체에서의 양수/음수의 원리)
- 1의 보수
- 부호화 절대치
- 2의 보수
- byte: 1 Byte
- 초기값: 0
- 값의 범위: -128 ~ 127, -2^7 ~ 2^7-1
1 Byte: 8Bit
1 Bit: 2가지 표현, 0, 1
2 Bit: 4가지 표현, (0,0), (0,1), (1,0), (1,1)
3 Bit: 8가지 표현, (0,0), (0,1), (1,0), (1,1) ...
4 Bit: 16가지 표현, (0,0), (0,1), (1,0), (1,1) ...
5 Bit: 32가지 표현, (0,0), (0,1), (1,0), (1,1) ...
6 Bit: 64가지 표현, (0,0), (0,1), (1,0), (1,1) ...
7 Bit: 128가지 표현, (0,0), (0,1), (1,0), (1,1) ...
8 Bit: 256가지 표현, (0,0), (0,1), (1,0), (1,1) ...
256b ---> 128 ~ 128 ---> -128 ~ +128 ---> -128 ~ +127
>>>>> ByteTest.java
/*
* byte는 8bit
* -128 ~ +127
* */
public class ByteTest {
public static void main(String[] args) {
byte b = 127;
//byte b1 = 128; //ERROR
byte b2 = -128;
//byte b3 = -129;
System.out.println(b);
System.out.println(b2);
}
}
- short: 2 Byte
- 초기값: 0
- 값의 범위: -32768 ~ 32767, -2^15 ~ 2^15-1
- int: 4 Byte
- 초기값: 0
- 값의 범위: -2147483648 ~ +2147483647, -2^31 ~ 2^31-1
- long: 8 Byte
- 초기값: 0
- 값의 범위: -2^61 ~ 2^61-1
4. 실수 숫자형
- float: 4 Byte
- 초기값: 0.0
- -1.40e-45 ~ +3.40e+38
- double: 8 Byte
- 초기값: 0.0
- 값의 범위: -4.94e-324 ~ 1.79e+308
>>>>> Silsu.java
public class Silsu {
public static void main(String[] args) {
//실수는 기본적으로 double로 인식됩니다.
//float f = 10.5;
float f = 10.5f;
System.out.println("실수 출력:"+f);
double d = 10.5;
System.out.println("더블형 실수 출력:"+d);
}
}
▶ 변수, 상수 실습
- System.out.println()메소드는 기본적으로 10진수로 출력합니다.
- 출력의 연결은 '+'기호를 사용합니다.
>>>>> Integer_Test.java
public class Integer_Test {
public static void main(String args[]) {
System.out.println("정수형 상수 예제");
System.out.println("10진수 26 10진수로: " + 26);
System.out.println("8진수 26 10진수로: " + 026); //숫자0은 8진수
System.out.println("16진수 AB는 10진수로: " + 0xAB); //0x 16진수
}
}
>>>>> Float_Test.java
public class Float_Test {
public static void main(String args[]) {
System.out.println("실수형 상수 예제");
System.out.println("양 실수 12.345: " + 12.345);
System.out.println("음 실수 -12.345: " + -12.345);
//12.34E3 == 12.34E+3 == 12.34 * 1000
System.out.println("지수 표현 12.34E3: " + 12.34E3);
//12.34E-3 == 12.34E-3 == 12.34 / 1000
System.out.println("지수 표현 12.34E-3: " + 12.34E-3);
}
}
>>>>> String_Test.java
public class String_Test {
public static void main(String args[]) {
String str1 = "My Name is ";
String str2 = "강";
String str3 = "남";
String str4 = "it";
System.out.println("문자열형 상수 예제");
System.out.println("-------------------------");
System.out.println(str1 + str2 + str3 + str4 + 100 + 200);
}
}
>>>>> Variable_Test.java
public class Variable_Test {
public static void main(String args[]) {
int i = 1234;
int j = 5678;
int hap = 0;
hap = i + j;
//200 = i + j;
System.out.println("변수를 이용한 예제");
System.out.println("i = " + i);
System.out.println("j = " + j);
System.out.println("hap = :" + hap);
/*
CPU Stack
ALU <----┬---- int i=1234; <-┐
└---- int j=5678; │
│
i+j --------------------------┘
6912
*/
i = i + j;
System.out.println("i = i + j => " + i);
}
}
▩ 형변환
- 작은 타입의 데이터형은 큰 타입의 데이터형으로 아무런 작업 없이 변환할 수 있습니다.
- 큰 타입의 데이터형을 작은 타입의 데이터형으로 변환할시에는 캐스트 연산자를 써서 형변환을
해야합니다.
- Casting시에는 데이터 짤림이 발생하는지 확인해야 합니다. 데이터 짤림이 발생하면 캐스팅은
피해야 합니다.
- 실수를 정수로 바꾸는 경우에 주로 사용합니다.
>>>>> Cast_Test.java
public class Cast_Test {
public static void main(String args[]) {
int i = 1234;
int k;
float f = 10.5f;
double d = 100.55;
// k = f; k는 정수만 저장함으로 ERROR
k = (int)f; //작은 타입 = (작은 타입)큰타입
System.out.println(k); //10
f = i; //실수형 = 정수형 f = 1234
System.out.println(f); //1234.0
f = (float)d;
System.out.println(f); //100.55
}
}
public class Cast_Test2 {
public static void main(String[] args) {
//MSB LSB
//3 2 1
//18765432187654321
//-----------------
byte b = 100; // 01100100 8비트 필요
short s = 300; // 0000000100101100 16비트로 필요
int i = 70000;//10001000101110000 24비트가 필요
// 32+8+4=44
b = (byte)s; //00000001/00101100
System.out.println("b=" + b);
}
}
▩ 연산자
1. 산술(수치) 연산자 : +, -, *, /, %
- 정수/정수 = 정수
- float n = 0.0f; f를 제거하면 double 8바이트가 됩니다.
>>>>> Arithmetic.java
public class Arithmetic {
public static void main(String args[]) {
int i = 20;
int j = 12;
int a = i + j;
int b = i - j;
int c = i * j;
int d = i / j;
int e = i % j;
float n = 0.0f;
System.out.println("i : " + i + "j : " + j);
System.out.println("덧셈 결과 : " + a);
System.out.println("뺄셈 결과 : " + b);
System.out.println("곱셈 결과 : " + c);
System.out.println("나눗셈 결과 : " + d);
System.out.println("나머지 결과 : " + e);
n = i/j;
System.out.println("정수/정수의 결과:" + n);
}
}
2. 대입 연산자 : =
- 좌변은 상수값이 아니라 기억장소가 와야합니다.
a = i + j;
b = 10 + 20;
100 = i + 10;
3. 연산후대입 연산자 : +=, -=, *=, /=, %=
- 처리속도 향상
>>>>> Proportion.java
public class Proportion {
public static void main(String args[]) {
int i = 12;
int j = 27;
System.out.println("i : " + i + ", j : " + j);
System.out.println("---------------");
i += j; //i=i + j;
System.out.println("i+=j : " + i);
i -= j; //i=i - j;
System.out.println("i-=j : " + i);
i *= j; //i=i * j;
System.out.println("i*=j : " + i);
i /= j; //i=i / j;
System.out.println("i/=j : " + i);
i%=j; //i=i % j;
System.out.println("i%=j : " + i);
}
}
4. 증가/감소 연산자 : ++, --
- 알아보기 쉽게 코딩하는 것이 필요합니다.
>>>>> IncDec.java
public class IncDec{
public static void main(String args[]){
int x=1;
int y = x++; //후위 연산자
// y = x;
// x = x + 1;
System.out.println("x의 값은" + x); //2
System.out.println("y의 값은" + y); //1
x=1;
int z=++x; //전위 연산자
//x = x + 1;
//z = x;
System.out.println("x의 값은" + x); //2
System.out.println("z의 값은" + z); //2
x=1;
x++; //++x;
z=x;
System.out.println("-----------------------");
System.out.println("x의 값은" + x); //2
System.out.println("z의 값은" + z); //2
}
}
>>>>> IncDec2.java
public class IncDec2{
public static void main(String args[]){
int x=1;
int y = x--; //후위 연산자
// y = x;
// x = x + 1;
System.out.println("x의 값은" + x); //2
System.out.println("y의 값은" + y); //1
x=1;
int z=--x; //전위 연산자
//x = x + 1;
//z = x;
System.out.println("x의 값은" + x); //2
System.out.println("z의 값은" + z); //2
}
}
5. 관계(비교) 연산자 : <, <=, >=, >, ==, !=, instanceof
>>>>> Compare.java
public class Compare {
public static void main(String args[]) {
int i = 12;
int j = 23;
int k = 17;
String name="왕눈이";
System.out.println("변수 i는 " + i + ", 변수 j는 " + j + ", 변수 k는" + k + "이다.");
System.out.println("-------------------");
System.out.println("12==23 : " + (i==j));
System.out.println("12!=17 : " + (i!=k));
System.out.println("23<17 : " + (j<k));
System.out.println("k>i : " + (k>i));
System.out.println("i<=k : " + (i<=k));
System.out.println("i>=j : " + (i>=j));
System.out.println(name instanceof String);
//System.out.println(i instanceof int);
}
}
6. 비트연산자
- byte 0 ~ 255까지 출력하기
>>>>> Bitwise.java
//>>> 무조건 0이 채워지는 shift연산만 이루어짐
class Bitwise {
public static void main(String args[]) {
int a = 2;
int b = 5;
int c = a | b; //or
//2진수 연산
// ....8421
// 00000010
//+00000101
//---------
// 00000111--> 7
int d = a & b; //and
// 00000010
//+00000101
//---------
// 00000000--> 0
int e = a ^ b; //Exclusive or
// 00000010
//+00000101
//---------
// 00000111--> 7
int i; int j;
i = a << 2; //좌 shift 연산
// ....8421
// 00000010
// 00001000 --> 8
j = b >> 2; //우 shift 연산
// ....8421
// 00000101
// 00000001 --> 1
System.out.println(" a = " + a);
System.out.println(" b = " + b);
System.out.println(" a|b = " + c);
System.out.println(" a&b = " + d);
System.out.println(" a^b = " + e);
System.out.println(" a<<2 = " + i);
System.out.println(" b>>2 = " + j);
}
}
7. 논리연산자(조건 연산자)
- 조건문과 함께 많이 사용됨
- &&: 양쪽의 조건이 전부 맞아야 참입니다.
- ||: 어느 한쪽만 참이면 참입니다.
8. 삼항 연산자
>>>>> Ternary.java
class Ternary
{
public static void main(String args[])
{
int x = 10;
int y;
//System.out.println("결과는 " + y);
//System.out.println("초기화되지 않은 y의 값: " + y);
//y = 조건문 ? 참값 : 거짓값
y = x < 9 ? 3 : 5;
System.out.println("결과는 " + y);
}
}
'★─Programing > ☆─JAVA' 카테고리의 다른 글
[JAVA] 벡터(Vector) (0) | 2007.10.16 |
---|---|
[JAVA] static키워드 바로알기 (39) | 2007.10.16 |
[JAVA] 자바/JAVA 에러 모음 (0) | 2007.10.05 |
[JAVA] java에서 random숫자 생성하기(난수추출법) (1) | 2007.10.05 |
[JAVA] 자바 클래스의 종류 (0) | 2007.10.05 |