데이터의 초기화
자동초기화 (instance, static 변수)
정수형인 데이터타입(byte,short, int, long)은 자동적으로 0으로 초기화가 되고, 실수형인 데이터타입(float, double)은 자동적으로 0.0으로 초기화 되고 , 문자형 데이터타입(char)은 자동적으로 ' '으로 초기화 된다. String을 포함한 클래스 타입은 자동적으로 null로 초기화가 된다.
지역변수는 반드시 초기화가 필요하다.
메서드의 리턴타입 표기
메서드는 실행되어진 결과물 앞에 어떻게 할 것인지를 표시해야 한다. 별도의 리턴타입이 없는 경우, void를 메서드 명 앞에 작성해줘야 한다. 리턴 타입이 있는 경우에는 돌려주는 형태가 같아야 한다. 예를 들면, String의 리턴타입은 " "
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package my.day02;
//=========== 지역변수, instance 변수의 차이점에 대해서 알아본다.========
public class Main01 {
//attribute 속성, static이 없으므로 한 객체만 쓰는 변수, 반드시 인스턴스가 필요
String id;
String pwd;
String name;
String email;
int age; //정수만 들어옴
//멤버변수 => instance 변수와 static 변수를 합친 것을 멤버변수라고 한다.
void showInfo1() {
/*
지역변수는 {}에만 사용되는 것으로 {}를 벗어나는 순간
지역변수는 자동적으로 메모리(RAM)에서 삭제가 된다.
중요한 것은 지역변수는 반드시 초기화(== 값을 부여하는 것)를 해야 한다.
*/
int hopeMoney=5000;
//설계도면일 뿐이므로 인스턴스 불필요
String shopeMoney = "오천만원";
//{} 내에서 지역변수 명이 겹치면 안됨
System.out.println("=== 회원정보 ===\n"
+ "1.아이디: " +id+"\n"
+ "2.암호: "+pwd+"\n"
+ "3.성명: "+name+"\n"
+ "4.이메일: "+email+"\n"
+ "5.나이: "+age+"\n"
+ "6.희망급여: "+hopeMoney+"\n"
+ "7.희망연봉: "+shopeMoney);
//문자열과 문자열 사이의 +는 문자열결합을 뜻하는 것이고
//숫자와 숫자 사이의 +는 더하기(plus)를 뜻하는 것이고
//문자열과 숫자 사이의 +는 문자열의 겹합을 뜻한다
//"안녕하세요"+" 반갑습니다" ==> "안녕하세요 반갑습니다" *문자열 결합
//"안녕하세요" + 25 ==> "안녕하세요25" *숫자로 문자열 결합으로 본다
//20+30 ==> 50 *여기서는 그냥 더하기
//"20"+30 ==> "2030" *문자열 결합
//20+30+"안녕" ==> "50안녕" *연산은 왼쪽에서 오른쪽으로
}
//반드시 리턴타입 명시, 메서드
String showInfo2() {
int hopeMoney=4000;
return "=== 회원정보 ===\n"
+ "1.아이디: " +id+"\n"
+ "2.암호: "+pwd+"\n"
+ "3.성명: "+name+"\n"
+ "4.이메일: "+email+"\n"
+ "5.나이: "+age+"\n"
+ "6.희망급여: "+hopeMoney;
}
public static void main(String[] args) {
//인스턴스화 == 객체(ma1)생성 필요
Main01 ma1 = new Main01();
//자바스크립트는 ",' 동일 취급, 자바는 구분
ma1.id = "leess"; //실행시의 인스턴스는 필요 ma1
ma1.pwd = "qwer1234";
ma1.age = 25;
ma1.email = "leess@naver.com";
ma1.name = "이순신";
ma1.showInfo1();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~");
String info1 = ma1.showInfo2();
System.out.println(info1);
System.out.println("##########################");
Main01 ma2 = new Main01();
ma2.showInfo1();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~");
String info2 = ma2.showInfo2();
System.out.println(info2);
}
}
|
cs |
다른 패키지의 static 메서드 사용
my.util 패키지의 static 메서드를 다른 패키지에서 사용하려면 접근제어자의 형태에 대해 알아야 한다. (public 등)
공통기능은 static 메서드를 사용하는 것이 좋다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package my.util;
//import java.lang.*;은 항상 생력되어져 있음
import java.util.Date;
import java.text.SimpleDateFormat;
public class MyUtil {
//=== 현재시각을 출력해주는 static 메소드 생성하기 ====
public static void currentTime() {
Date now = new Date(); //현재시각, 지역변수 now
SimpleDateFormat sdfmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdfmt.format(now);
System.out.println(">> 현재시각: "+result+"입니다. <<");
// 2021-01-07 11:22:35
}
}
|
cs |
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
31
32
33
34
35
|
package my.day02;
import my.util.MyUtil;
//=========== static 메서드에 대해서 알아본다.===========
public class Main02 {
public static void main(String[] args) { //콘솔 실행은 Main메서드에서 실행하기
System.out.println(">> 여기는 Main02 클래스 입니다 <<");
//현재시각 출력
MyUtil.currentTime(); //공통기능은 static 메서드로 만들어서 사용하기
}
}
package my.day02;
import my.util.MyUtil;
//=========== static 메서드에 대해서 알아본다.===========
public class Main03 {
public static void main(String[] args) {
System.out.println(">> 여기는 Main03 클래스 입니다 <<");
//현재시각 출력
MyUtil.currentTime();
}
}
|
cs |
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package my.day02.dataType;
public class MainSungjuk {
public static void main(String[] args) {
/*
int hakbun1 = 20191234;
int hakbun2 = 0014543;
String hakbun3 = "20191234";
String hakbun4 = "0014543";
System.out.println("hakbun1: "+hakbun1); //20191234
System.out.println("hakbun2: "+hakbun2); //6499
System.out.println("hakbun3: "+hakbun3); //20191234
System.out.println("hakbun4: "+hakbun4); //0014543
*/
Sungjuk lssSj = new Sungjuk();
lssSj.hakbun = "091234";
lssSj.name = "이순신";
lssSj.kor = 68;
lssSj.eng = 95;
lssSj.math = 100;
Sungjuk eomSj= new Sungjuk();
eomSj.hakbun = "109876";
eomSj.name = "엄정화";
eomSj.kor = 78;
eomSj.eng = 88;
eomSj.math = 95;
lssSj.showSungjuk(); //void로 별도 return 타입 적을 필요가 없음
System.out.println("----------------------------");
eomSj.showSungjuk();
/*
=== 성적결과 ===
1. 학번: 091234
2. 성명: 이순신
3. 국어: 68
4. 영어: 95
5. 수학: 100
6. 총점: 263
----------------------------
=== 성적결과 ===
1. 학번: 109876
2. 성명: 엄정화
3. 국어: 78
4. 영어: 88
5. 수학: 95
6. 총점: 261
*/
/*
System.out.println("----------------------------");
System.out.println("5/2 => "+(5/2));
//몫 정수/정수 ==> 정수
System.out.println("5%2 => "+(5%2));
//나머지 정수%정수 ==> 나머지
System.out.println("5/2.0 => "+(5/2.0));
System.out.println("5.0/2 => "+(5.0/2));
System.out.println("5.0/2.0 => "+(5.0/2.0));
//분모, 분자 한 개만 실수형이여도 값은 실수형
*/
}
}
|
cs |
자료형의 종류
1. 정수형
int가 기본형, long은 접미사 l/L을 붙여야한다.
byte (1byte == 8bit) : -2^7 ~ 2^7-1 ==> -128 ~ 127
short(2byte == 16bit) : -2^15 ~ 2^15-1 ==> -32,768 ~ 32,767
int (4byte == 32bit) : -2^31 ~ 2^31-1 ==> -2,147,483,648 ~ 2,147,483,647
long (8byte == 64bit) : -2^63 ~ 2^63-1 ==> -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
2. 실수형
float(4byte) : 단정밀도 접미사 f/F 소수점이하 7자리까지 표현됨. 135.3246235
double(8byte) : 배정밀도 소수점이하 15~16자리까지 표현됨. 135.3246234502345642
3. 문자형
char : 자바는 유니코드 체계를 사용, 2byte 이며, 범위는 0 ~ 65535 이다. UNICODE 표 참조
char ch6 = '\u2665';
변수의 명명규칙
대소문자 구분이 있으며, 첫 글자는 숫자가 될 수 없다.
특수문자는 '_' 와 '$' 만 사용이 가능하며, 예약어인 package, import, public, class, String, int, float ... 등은 변수명으로 사용불가하다. 변수명을 정할 때, 첫글자는 소문자로 시작하고 단어와 단어가 결합된 경우이라면 두번째 단어는 대문자로 시작하는것이 일반적이다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
package my.day02.dataType;
public class Sungjuk {
//=== 속성, property, attribute, field ===
String hakbun; // null 학번 String
String name; // null 학생명 String
byte kor; // 0 국어(0~100) 숫자(정수)
byte eng; // 0 영어 숫자(정수)
byte math; // 0 수학 숫자(정수)
char hakjum; // ' ' 학점 'A' 'B' 'C' 'D' 'F'
//=== 기능, 행위, behavior, method ===
void showSungjuk() {
short total = (short)(kor+eng+math);
String star = " ";
//*** 자바에서 그 데이터타입이 byte||short||char 인 변수가 사칙연산(+,-,*,/)을 한다면,
// 자동적으로 그 변수의 데이터타입은 int로 변하게 되어 있다!
// kor+eng+math ==> 자동적으로 int 타입으로 변환(casting)됨.
// (short)(kor+eng+math) ==> 강제 형변환(casting)
//0~300 ***지역변수는 반드시 초기화해야 한다
float average1 = (float)(total/3.0);
float average2 = total/3.0f;
double average3 = total/3.0;
long money = 5000000000L;
//자바에서 정수는 기본적으로 int 타입을 취하므로 안된다.
//long 타입으로 나타내고자 하는 경우, 숫자 뒤에 l 또는 L을 쓰면 된다.
if(average1 >= 90) {
hakjum = 'A';
}
else if(average1 >= 80) {
hakjum = 'B';
}
else if(average1 >= 70) {
hakjum = 'C';
}
else if(average1 >= 60) {
hakjum = 'D';
}
else {
hakjum = 'F';
}
if(hakjum == 'A') {
star = "☆☆☆☆☆";
}
else if(hakjum == 'B') {
star = "☆☆☆☆";
}
else if(hakjum == 'C') {
star = "☆☆☆";
}
else if(hakjum == 'D') {
star = "☆☆";
}
else {
star = "☆";
}
System.out.println("=== 성적결과 === \n"
+ "1. 학번: "+hakbun+"\n"
+ "2. 성명: "+name+"\n"
+ "3. 국어: "+kor+"\n"
+ "4. 영어: "+eng+"\n"
+ "5. 수학: "+math+"\n"
+ "6. 총점: "+total+"\n"
+ "7. 평균1: "+average1+"\n"
+ "8. 평균2: "+average2+"\n"
+ "9. 평균3: "+average3+"\n"
+ "10. 장학금: "+money+"\n"
+ "11. 학점: "+ hakjum+"\n"
+ "12. 학점(☆): "+ star); //☆☆☆☆☆
// "6. 총점: " +68+95+100
// "6. 총점: 68" +95+100 이렇게 문자열의 결합이 됨
// 계산순서에 유의하여 지정해주기
// == 문자형 타입 ==
// 자바는 char 타입을 표현할 때 unicode를 사용한다.
char ch1 = 50577; //유니코드 테이블의 숫자
char ch2 = 65;
char ch3 = 'a';
char ch4 = 'a'+1; //97+1 ==> 98
char ch5 = (char)(ch4-1); //***변수는 모가 올 지 모르니까
char ch6 = '\u2665';
System.out.println("\n === 문자형 ===");
System.out.println("ch1: "+ch1);
System.out.println("ch2: "+ch2);
System.out.println("ch3: "+ch3);
System.out.println("ch4: "+ch4);
System.out.println("ch5: "+ch5);
System.out.println("ch6: "+ch6);
/*
=== 문자형 ===
ch1: 양
ch2: A
ch3: a
ch4: b
ch5: a
ch6: ♥
*/
}
}
|
cs |
'Java' 카테고리의 다른 글
[Java] Java의 설치와 기본 개념 (0) | 2021.01.09 |
---|---|
[Java] 생성자, 형변환(casting), 연산자(operator) (0) | 2021.01.07 |
Java 별찍기 문제 (0) | 2021.01.03 |
18 [인강] 자바의정석 ch08 (0) | 2020.12.29 |
17 [인강] 자바의정석 ch07 (0) | 2020.12.28 |
- spring
- putty
- 정보처리기사 필기
- IT 5분 잡학사전
- 실용주의프로그래머
- 개발도서
- 오늘의코딩
- 정보처리기사
- SQLD
- 노마드코더
- gradle build
- 배포
- 호스팅영역
- 웹페이지만들기
- intellij
- 북클럽
- ubuntu
- EC2
- 노개북
- gradle
- 기술블로그
- 정보처리기사 실기
- jdbc
- java
- JIRA
- 독서후기
- LifecycleException
- filezila
- git연동
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |