String s1 = new String(”안녕”); //s1, s2는 주소번지를 의미
String s2 = new String(”안녕”);
String s3 = “안녕”;
String s4 = “안녕”;
.equlas의 리턴 타입 boolean → if문이나 for문조건식이 써야 함
파라미터는 Object → 원시형타입일땐 .equls사용x
s1 == s2는 주소 번지 자체를 비교 → 타입은 같지만 서로 다른 객체이니 false
s1.equlas(s2)는 주소 번지가 가리키는 값이 같은지 비교 → true
s3과 s4는 주소 번지도 문자열도 같음
String은 클래스급, 참조형이지만 예외적으로 값을 출력(주소 번지가 있다)
new를 쓰면 주소번지 다름(서로 다른 객체 생성)
안 쓰고 그냥 String은 같음(문자열이 같다면 같은 String객체 공유)
package dev_java.ch03;
public class Test1_1 {
public static void main(String[] args) {
String str = null;
if (str.equals("exit")) { // NullPointerException 발생!
System.out.println("변수가 앞에 위치");
}
if ("exit".equals(str)) { // 안터지고 작동함 -> 앞에 상수를 둬야한다
System.out.println("상수가 앞에 위치");
}
}
}
package dev_java.ch03;
import java.util.Scanner;
public class Test1_2 {
public void count() {
System.out.println("count호출"); // 로그에 출력할 값
Scanner s = new Scanner(System.in);
boolean isOk = false;
while (!isOk) { // !를 붙여서 false인 isOk를 true로 만듦
System.out.print("문자열을 입력해주세요. : ");
String str = s.nextLine(); // nextline은 한 줄을 다 읽어옴, next는 공백 전 글자만 읽어옴
if ("exit".equals(str)) { // 상수를 .equals 앞에둔다!(null값이와도 에러없이 작동하기위해서)
break; // if문에서 break를 써도 while문 탈출
} else {
System.out.println(str.length() + "글자 입니다."); // length()는 문자열 길이를 반환
}
} // end of while
s.close();
System.out.println("프로그램을 종료합니다.");
} // end of count
public static void main(String[] args) {
Test1_2 t1 = new Test1_2();
t1.count();
}
}
package dev_java.ch03;
public class Test2 {
void methodA() {
int i = 1;
while (i <= 10) {
if (i % 3 == 0) {
System.out.println(i + ": 3의 배수입니다.");
} else if (i % 3 != 0) {
System.out.println(i + ": 3의 배수가 아닙니다.");
}
i++;
} // end of while
} // end of methodA()
void methodB() {
for (int i = 1; i <= 10; i++) {
switch (i % 3) {
case 0:
System.out.println(i + ": 3의 배수입니다.");
break;
case 1, 2:
System.out.println(i + ": 3의 배수가 아닙니다.");
break;
}
}
}
public static void main(String[] args) {
Test2 t2 = new Test2();
t2.methodA();
System.out.println("==========");
t2.methodB();
}
}
package dev_java.ch03;
public class Test3 {
void methodA() {
System.out.println("methodA 호출 성공");
int[] arr = { 0, 0, 0, 0 }; // 길이4, 0 0 0 0
for (int i = 0; i <= arr.length; i++) {
try {
arr[i] += (10 + i);
System.out.println(arr[i]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.toString()); // index가 4가될 때 try문으로 나와서 출력됨
} // end of try
} // end of for
System.out.println("methodA 종료");
}
public static void main(String[] args) {
Test3 t3 = new Test3();
t3.methodA();
}
}
package dev_java.ch03;
// 2차 배열 -> List<Map<>> 제네릭 -> 웹개발, 앱개발(하이브리드)-JSON
public class TwoArray {
void toFor(int[][] arr) {
for (int i = 0; i < arr.length; i++) { // row의 인덱스
for (int j = 0; j < arr[i].length; j++) { // column의 인덱스
System.out.println("arr[" + i + "][" + j + "] = " + arr[i][j]);
} // end of inner for
} // end of outter for
}
void toWhile(int[][] arr) {
int i = 0;
while (i < arr.length) {
int j = 0;
while (j < arr[i].length) {
System.out.println("arr[" + i + "][" + j + "] = " + arr[i][j]);
j++;
} // end of inner while
i++;
} // end of outter while
}
public static void main(String[] args) {
TwoArray ta1 = new TwoArray();
int arr[][] = new int[2][3];
ta1.toFor(arr);
System.out.println("==========");
ta1.toWhile(arr);
}
}
// arr[0][0] = 0
// arr[0][1] = 0
// arr[0][2] = 0
// arr[1][0] = 0
// arr[1][1] = 0
// arr[1][2] = 0
// ==========
// arr[0][0] = 0
// arr[0][1] = 0
// arr[0][2] = 0
// arr[1][0] = 0
// arr[1][1] = 0
// arr[1][2] = 0
package dev_java.ch03;
public class TwoArray2 {
public static void main(String[] args) {
int arr[][] = new int[3][];
// arr[0] = new int [3];
arr[0] = new int[] { 1, 2, 3 };
// arr[1] = new int [3];
arr[1] = new int[] { 4, 5, 6, 7};
// arr[2] = new int [3];
arr[2] = new int[] { 8, 9, 10, 11, 12};
// insert here-5출력
System.out.println(arr[1][1]);
// insert here-9출력
System.out.println(arr[2][2]);
}
}
package dev_java.ch03;
public class TwoArray3 {
public static void main(String[] args) {
int arr[][] = new int[3][];
arr[0] = new int[] { 1, 2, 3 };
arr[1] = new int[] { 4, 5, 6, 7 };
arr[2] = new int[] { 8, 9, 10, 11, 12 };
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println("arr[" + i + "][" + j + "]=" + arr[i][j]);
}
}
}
}
// arr[0][0]=1
// arr[0][1]=2
// arr[0][2]=3
// arr[1][0]=4
// arr[1][1]=5
// arr[1][2]=6
// arr[1][3]=7
// arr[2][0]=8
// arr[2][1]=9
// arr[2][2]=10
// arr[2][3]=11
// arr[2][4]=12
package dev_java.view;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ButtonArray implements ActionListener {
// 선언부
JFrame jf = new JFrame(); // setSize(400,300);가로세로 크기지정, setVisible(true);윈도우창에 활성화하기
JPanel jp_center = new JPanel();
JTextArea jta_display = new JTextArea(10, 20);
JScrollPane jsp_display = new JScrollPane(jta_display, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JTextField jtf_input = new JTextField();
JPanel jp_east = new JPanel();
JButton jbtn_new = new JButton("새게임");
JButton jbtn_dap = new JButton("정답");
JButton jbtn_clear = new JButton("지우기");
JButton jbtn_exit = new JButton("종료");
// 생성자
public ButtonArray() {
System.out.println("디폴트생성자 호출");
// 이벤트 소스와 이벤트 처리를 담당하는 핸들러클래스를 매핑하기
jtf_input.addActionListener(this); // addActionListener를 해줘야 동작을 감지함!
jbtn_new.addActionListener(this);
jbtn_dap.addActionListener(this);
jbtn_clear.addActionListener(this);
jbtn_exit.addActionListener(this);
initDisplay();
}
// 화면그리기
public void initDisplay() {
System.out.println("화면그리기 호출");
// 윈도우창 오른쪽 상단 X버튼을 누르면 종료 후 가상머신과 연결 끊기
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jp_center.setLayout(new BorderLayout());
jp_center.add("Center", jsp_display);
jp_center.add("South", jtf_input);
jp_east.setLayout(new GridLayout(4, 1, 2, 2));
jbtn_new.setBackground(new Color(102, 153, 102)); // 배경색
jbtn_new.setForeground(new Color(255, 255, 255)); // 글자색
jbtn_dap.setBackground(new Color(102, 153, 102));
jbtn_dap.setForeground(new Color(255, 255, 255));
jbtn_clear.setBackground(new Color(102, 153, 102));
jbtn_clear.setForeground(new Color(255, 255, 255));
jbtn_exit.setBackground(new Color(102, 153, 102));
jbtn_exit.setForeground(new Color(255, 255, 255));
jp_east.add(jbtn_new); // jp_east 패널에 jbtn_new버튼을 붙임!
jp_east.add(jbtn_dap);
jp_east.add(jbtn_clear);
jp_east.add(jbtn_exit);
jp_center.setBackground(Color.green);
jf.add("Center", jp_center);
jf.add("East", jp_east); // 패널을 없애면 거기에 붙인 버튼들도 같이 안보임
jf.setSize(300, 400);
jf.setVisible(true);
}
// 메인메소드
public static void main(String[] args) {
new ButtonArray();
}
@Override
public void actionPerformed(ActionEvent e) { // 콜백메소드
// e.getSource()는 이벤트가 감지되는 컴포넌트(JTextField)의 주소번지를 반환함
Object obj = e.getSource();
// 새게임
if (jbtn_new == obj) {
jta_display.append("▷▷▷새게임을 시작합니다.◁◁◁\\n");
}
// 정답
else if (jbtn_dap == obj) {
jta_display.append("▶▶▶정답은 000입니다.◀◀◀\\n");
}
// 화면 지우기
else if (jbtn_clear == obj) {
jta_display.setText("");
}
// 나가기
else if (jbtn_exit == obj) {
// jf.dispose(); // 창 하나씩 따로 닫음
System.exit(0); // 모든 어플리케이션 닫음
}
// 만약 JTextField에서 무언가를 쳤다면
if (jtf_input == obj) {
// 사용자가 텍스트필드에 입력한 문자열을 읽어옴
String input = jtf_input.getText();
jta_display.append(input + "\n"); //
jtf_input.setText(""); // input에 입력된 문자열을 지우는 역할
}
}
}
package dev_java.view.array;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ButtonArray_2 implements ActionListener { // 배열을 쓴 경우-직관적이지 않음!
// 선언부
AccountSample action = new AccountSample(this); // view에 logic을 가져옴!
JFrame jf = new JFrame(); // setSize(400,300);가로세로 크기지정, setVisible(true);윈도우창에 활성화하기
JPanel jp_center = new JPanel();
JTextArea jta_display = new JTextArea(10, 20);
JScrollPane jsp_display = new JScrollPane(jta_display, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JTextField jtf_input = new JTextField();
JPanel jp_east = new JPanel();
JButton jbtns[] = new JButton[4];
String jbtn_label[] = { "새게임", "정답", "지우기", "종료" };
// 생성자
public ButtonArray_2() {
System.out.println("디폴트생성자 호출");
// 이벤트 소스와 이벤트 처리를 담당하는 핸들러클래스를 매핑하기
jtf_input.addActionListener(this); // addActionListener를 해줘야 동작을 감지함!
initDisplay();
}
// 화면그리기
public void initDisplay() {
System.out.println("화면그리기 호출");
// 윈도우창 오른쪽 상단 X버튼을 누르면 종료 후 가상머신과 연결 끊기
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jp_center.setLayout(new BorderLayout());
jp_center.add("Center", jsp_display);
jp_center.add("South", jtf_input);
jp_east.setLayout(new GridLayout(4, 1, 2, 2));
for (int i = 0; i < jbtns.length; i++) {
jbtns[i] = new JButton(jbtn_label[i]);
jbtns[i].addActionListener(this);
jp_east.add(jbtns[i]); // 순서중요! setLayout 이후에 와야함
// jbtns[i].setBackground(new Color(102, 153, 102)); //색이 각각 다르면 이렇게 못씀
// jbtns[i].setForeground(new Color(255, 255, 255));
}
jbtns[0].setBackground(new Color(102, 153, 102)); // jbtn[]선언, 생성보다 뒤에 와야함!
jbtns[0].setForeground(new Color(255, 255, 255));
jbtns[1].setBackground(new Color(102, 153, 102));
jbtns[1].setForeground(new Color(255, 255, 255));
jbtns[2].setBackground(new Color(102, 153, 102));
jbtns[2].setForeground(new Color(255, 255, 255));
jbtns[3].setBackground(new Color(102, 153, 102));
jbtns[3].setForeground(new Color(255, 255, 255));
jp_center.setBackground(Color.green);
jf.add("Center", jp_center);
jf.add("East", jp_east); // 패널을 없애면 거기에 붙인 버튼들도 같이 안보임
jf.setSize(300, 400);
jf.setVisible(true);
}
// 메인메소드
public static void main(String[] args) {
new ButtonArray_2();
}
@Override
public void actionPerformed(ActionEvent e) { // 콜백메소드
// e.getSource()는 이벤트가 감지되는 컴포넌트(JTextField)의 주소번지를 반환함
Object obj = e.getSource();
// 새게임
if (jbtns[0] == obj) {
jta_display.append("▷▷▷새게임을 시작합니다.◁◁◁\\n");
}
// 정답
else if (jbtns[1] == obj) {
jta_display.append("▶▶▶정답은 000입니다.◀◀◀\\n");
}
// 화면 지우기
else if (jbtns[2] == obj) {
jta_display.setText("");
}
// 나가기
else if (jbtns[3] == obj) {
// jf.dispose(); // 창 하나씩 따로 닫음
System.exit(0); // 모든 어플리케이션 닫음
}
// 만약 JTextField에서 무언가를 쳤다면
else if (jtf_input == obj) {
// 사용자가 텍스트필드에 입력한 문자열을 읽어옴
String input = jtf_input.getText();
// jta_display.append(input + ":" + action.account2() + "\n");
action.account2();
jtf_input.setText(""); // input에 입력된 문자열을 지우는 역할
}
}
}
package dev_java.view.array;
public class AccountSample {
ButtonArray_2 ba2 = null; // 생성은 x,초기화, 원래 주소번지가 필요한 것
public AccountSample(ButtonArray_2 ba2) {
this.ba2 = ba2;
}
public String account() {
return "낮춰라";
}
public void account2() {
String msg = "낮춰라"; // 상수
// jta_display는 ButtonArray_2에서 생성된 객체인데
// 굳이 AccountSample
ba2.jta_display.append(msg + "\n");
}
}
'국비학원 > 수업기록' 카테고리의 다른 글
국비 지원 개발자 과정_Day12 (0) | 2022.12.13 |
---|---|
국비 지원 개발자 과정_Day11 (1) | 2022.12.12 |
국비 지원 개발자 과정_Day9 (1) | 2022.12.08 |
국비 지원 개발자 과정_Day8 (3) | 2022.12.07 |
국비 지원 개발자 과정_Day7 (1) | 2022.12.06 |
댓글