일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring
- 자바스크립트
- 코딩테스트
- 자바의정석
- CSS
- ReactNative
- Oracle
- 타입스크립트
- php
- react
- 정보처리기사실기
- 평일코딩
- 국비IT
- 리액트네이티브
- 정보처리기사정리
- javascript
- 정보처리기사
- 스프링
- VUE
- 정보처리기사실기요약
- 국비코딩
- 오라클
- 이안의평일코딩
- 정보처리기사실기정리
- 정보처리기사요약
- 리액트
- Java의정석
- 자스코테
- typescript
- 자바스크립트 코딩테스트
- Today
- Total
이안의 평일코딩
JAVA의 정석 15일차 - 변수, 연산자, 제어문, 배열, 문자열 복습 본문
2020.07.03(금)
1. 변수 정리
변수 : 필요 -> 변경해서 사용할 수 있는 메모리 저장공간
상수 : 변경할 수 없는 값
1) 변수의 종류
(1) 한개의 데이터 공간 -> 변수
(2) 같은 타입 여러개를 저장하는 공간 -> 배열 (연속적으로 메모리에 저장 => 인덱스)
(3) 다른 타입 여러개를 저장하는 공간 -> 클래스
- 변수로만 사용하는 방법 (사용자 정의 데이터형) : 데이터형 클래스
- 기능만 설정 => 액션클래스
*** 변수 => 메모리에 저장 => 프로그램이 종료하면 자동으로 메모리에서 사라진다
2) 변수를 사용
========
메모리에 저장 => 메모리 크기, 사용범위 -> {}안에서만 사용
public class A {
변수 => 클래스 전체에서 사용 (전역변수) => 조립
public static void main(String[] args) {
==== 지역변수
변수 => main안에서 사용
if(조건문) {
변수 => if에서만 사용
}
}
}
3) 변수의 용도
======== 프로그램(변형되는 데이터)
4) 변수명을 만드는 방법 => 메모리는 주소 형식 (0~~메모리 크기)
=> 4byte로 분할 => 정수한개를 저장하는 공간 => int
=> 주소 => 저장된 위치를 확인할 수 없다 => 별칭 (변수) 부여 => 저장된 데이터 찾기
&a ==> (X)
=> 식별자
5) 변수 => 기본형 (자바에서 제공하는 메모리 크기)
=> 정수 저장 (int=>일반 프로그램, long=>빅데이터)
=> 실수 저장 (double)
=> true/false => boolean => 존재여부 확인 (while안에서 종료)
=> 문자를 여러개 저장 ==> String
6) 변수선언
데이터형 변수명;
정수 선언
int a;
long a;
문자열 선언
String s;
논리 선언
boolean b;
실수 선언
double a;
7) 변수 초기화
변수명=값
==> int a = 10; long a = 10(10L)
double d = 10.5 (10, 'A', 10.5F)
boolean b = true / false
String s = "Hello Java..."
10개의 데이터 (정수) => 배열
int[] com = new int [10]; // 숫자를 저장 1~10 => 중복(임의로 추출)
// 10개 데이터에 초기값 주입
for (int i = 0; i < 10; i++) {
com[i]=(int)(Math.random()*10)+1;
}
// 확인 => 출력
for (int i : com) {
System.out.print(i+" ");
}
두개의 정수 => 일반 int
문자를 여러개 저장 => char[], String
true/false => boolean
int su = 0; // 난수값 저장
// 중복이 없으면 => 저장(false), 중복이 되면(true) 난수를 다시 발생
boolean bCheck = false;
int[] com = new int[10];
// 경우의 수
// 로그인 => 3개 => String, int, char
// ID, PWD, LOGIN
for (int i=0; i<10; i++) {
// 중복여부 확인, 중복이 되면 ==> 다시 난수 발생
bCheck=true;
while(bCheck) {
// 난수
su = (int)(Math.random()*10)+1;
// 종료 확인
bCheck=false;
// 비교 -> 같은 수가 저장되었는지 확인
for(int j=0; j<i; j++) {
if(com[j]==su) {
bCheck=true;
break;
}
}
} // while문 false가 되면 종료
com[i] = su;
}
for (int i : com) {
System.out.print(i+" ");
}
8) 변수설정
int kor = 90;
int eng = 85;
int math = 80;
// 점수 출력
System.out.println("국어:"+kor); // + : 문자열 결합, 산술 연산
System.out.println("영어:"+eng);
System.out.println("수학:"+math);
2. 연산자 정리
연산자 => 데이터 가공
= 연산시 데이터형 동일해야 -> 연산이 된다 (데이터형을 같게 만든 다음에 연산)
=====> 형변환
자동으로 변환 => 작은 데이터 => 큰 데이터
10 + 10.5
==
10.0
'A' + 1
==
65
강제로 변환 => 큰 데이터 => 작은 데이터로 변경 (프로그래머가 직접 처리)
(type)
*** int 이하는 연산이 되면 => int로 결과값이 나온다
= char는 모든 연산시에 정수로 변경
= 연산자 => 약간의 우선순위
=> 산술 ( +, - => ", /, % 우선 순위)
= 연산자의 종류
단독 사용 : 산술 연산자, 증감 연산자, 대입 연산자
조건 사용 : 비교 연산자, 논리 연산자, 부정 연산자 (******)
=========================
1) if문, for문, while문
변수+연산자+제어문 (기능 : 라이브러리)
=============
byte b1 = 10;
byte b2 = 20;
int b3 = b1 + b2; // byte + byte = int
int a = 10;
long b = 20L;
double d = 10.5;
// a+b+d
// a=10.0 b=20.0 d=10.5
String s = "";
double r = a+b+d;
String c = a+b+d+s;
// String이 가장 큰 데이터
3. 제어문 정리
====
1) 조건문
= 단일 조건문 => 단독 수행
=> if(조건문) { => 조건문 (true/false) 비교연산자, 논리연산자, 부정연산자
조건문이 true만 수행하는 문장 : 산술연산자, 대입연산자
}
= 선택 조건문 => true/false 나눠서 처리
if(조건문) {
조건문 => true 처리문장
}
else {
조건문 => false 처리문장
}
==> ID중복체크 => 경우의 수
= 다중 조건문 => 한개의 조건만 수행
if(조건문) {
}
else if(조건문) {
}
else if(조건문) {
}
else if(조건문) {
}
else {
조건이 없는 경우에 처리 => 생략이 가능
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Mainform extends JFrame implements ActionListener{
JMenuBar bar = new JMenuBar();
JMenuItem open = new JMenuItem("열기");
JMenuItem save = new JMenuItem("저장");
JMenuItem copy = new JMenuItem("복사");
JMenuItem close = new JMenuItem("종료");
// 생성자 => 클래스 저장
public Mainform() {
JMenu file = new JMenu("파일");
file.add(open);
file.add(save);
file.add(copy);
file.add(close);
bar.add(file);
// 윈도우 올리기
setJMenuBar(bar);
// 윈도우 크기 결정
// setSize(width, height);
setSize(1024, 768);
setVisible(true); // 윈도우 보여준다
open.addActionListener(this);
save.addActionListener(this);
copy.addActionListener(this);
close.addActionListener(this);
}
public static void main(String[] args) {
new Mainform();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==open) {
JOptionPane.showMessageDialog(this, "파일 열기 선택");
}
else if(e.getSource()==save) {
JOptionPane.showMessageDialog(this, "파일 저장 선택");
}
}
}
2) 선택문
=> 조건이 많이 있는 경우에 주로 사용 (web => 조건 => if)
=> 게임
=> 한개의 값을 선택시에 처리
=> 네트워크
switch(정수, 문자, 문자열) {
case 정수:
처리
break;
case 정수:
처리
break;
case 정수:
처리
break;
default:
해당 정수가 없는 경우
}
3) 반복문
(1) for : 횟수가 지정
= 제어 => 값 변경, 수정, 다른 기능 : 일반 for
for (초기값; 조건식; 증가식) {
처리 문장
처리 문장
}
= 출력
for(실제 데이터를 받을 변수 : 저장된 데이터) => web, mobile
서버 : JSP, Spring, Oracle
클라이언트 : HTML, CSS, JavaScript
(2) while : 종료조건
(x) do~while:
4) 반복제어문
break; 종료
import java.io.*;
public class 제어문정리 {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
String data="";
FileReader fr=new FileReader("c:\\javaDev\\a.txt");
int i=0;
while((i=fr.read())!=-1)
{
data+=String.valueOf((char)i);
}
System.out.println(data);
}
4. 문자열
문자열 => 저장하는 공간 (String)
기본형 => 정수, 실수, 논리, 문자
====================================
참조형 => 실제저장장소 다른곳에 있고 => 저장은 주소
====
= 배열, 클래스, 사용자 정의 클래스
=> 웹, 모바일 => 문자열
1) 저장 방법
String s = "문자저장"; ==> 많이 사용된다
String s = new String("")
2) 주요기능
문자를 제어할 수 있는 기능 (메소드) => 라이브러리 핵심 (메소드)
***** 주의점
원본 변경되지 않는다
(1) length() : 문자 갯수
(2) substring() : 문자를 자를 때
substring(int start) => 문자 번호
substring(int start, int end) => end는 제외 (start ~~ end-1)
예) String s = "Hello Java!!";
01234567891011
s.substring(0,5) ==> Hello ==> s="Hello Java!!" // 원본 안바뀜
==> s=s.substring(0,5) ==> s="Hello" // s값 저장하면 바뀜
(3) contains() : 문자열 중에 포함된 단어가 있는지 확인
=> 단어를 찾는 경우 => 오라클 (LIKE)
(4) startsWith, endsWith : 서제스트(검색창에 몇 글자만 적어도 자동완성) : 검색기
================
포털 : 검색한 유저의 데이터를 모아서 처리
쿠키, 세션
(5) trim() => 좌우의 공백제거
String s = " Hello Java ";
s.trim() => "Hello Java" => s.replace(" ","")
=> 사용자 입력창 (로그인 => ID, PWD, 회원가입)
" admin" "admin " "admin"
String s = " Hello Java ";
System.out.println(s); // " Hello Java "
System.out.println(s.trim()); // "Hello Java"
(6) equals() => 문자열 비교할 때 사용 : 단점 (대소문 구분)
(7) split() => 문자를 구분해서 배열로 만들어 준다
== 구분문자를 포함한다
(8) replace, replaceAll => 문자를 변경할 경우
===== =======
일반 패턴(정규식)
String s=" Hello Java ";
System.out.println(s.replace('l', 'K')); // " HeKKo Java "
System.out.println(s.replace(' '. '-')); // "-Hello-Java-"
//trim은 좌우 공백만, replace는 중간 공백도 대체
(9) valueOf() : 모든 데이터형을 문자열로 변경
(10) toLowerCase() : 소문자로 변환
(11) toUpperCase() : 대문자로 변환
import javax.swing.*;
import java.awt.event.*;
public class 문자열 extends JFrame implements ActionListener{
JTextField tf = new JTextField();
JTextField tf1 = new JTextField();
public 문자열() {
add("North",tf);
add("South",tf1);
//tf.setText(String.valueOf(20));
setSize(350, 300);
setVisible(true);
tf.addActionListener(this); //tf에서 엔터 => actionPerformed호출
}
public static void main(String[] args) {
new 문자열();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==tf) { // tf에서 입력 => 엔터
tf1.setText(tf.getText().toUpperCase());
//tf1.setText(tf.getText().toLowerCase());
}
}
}
로그인 처리 (http://www.jtattoo.net/index.html)
// The JTattoo jar file, jtattoo-1.6.13-sources.zip 다운
// 프로젝트 - Build Path - Configure Build Path - Add External JARs...
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.net.*;
public class 문자열2 extends JFrame implements ActionListener{
JLabel la1,la2;
JTextField tf;
JPasswordField pf;
JButton b1,b2;
JLabel poster=new JLabel();
final String ID = "Admin";
final String PWD = "1234";
public 문자열2() {
la1 = new JLabel("ID");
la2 = new JLabel("PW");
tf = new JTextField(); // 입력창
pf = new JPasswordField();
b1 = new JButton("로그인");
b2 = new JButton("취소");
String s = "https://movie-phinf.pstatic.net/20161123_188/1479862185516tYkKO_JPEG/movie_image.jpg";
try {
poster.setIcon(new ImageIcon(new URL(s)));
}catch(Exception ex) {}
setLayout(null);
la1.setBounds(10, 15, 30, 30);
tf.setBounds(45, 15, 150, 30);
la2.setBounds(10, 50, 30, 30);
pf.setBounds(45, 50, 150, 30);
poster.setBounds(10, 135, 300, 300);
add(poster);
JPanel p = new JPanel();
p.add(b1);p.add(b2);
p.setBounds(10, 90, 195, 35);
add(la1);add(tf);
add(la2);add(pf);
add(p);
setSize(800, 600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//Integer.MAX_VALUE;
b1.addActionListener(this); // 로그인
b2.addActionListener(this); // 취소
}
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel");
new 문자열2();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1) { // 로그인 버튼 클릭
String id = tf.getText();
if(id.trim().length()<1) { // length가 0, 입력이 안됐다면
JOptionPane.showMessageDialog(this, "ID를 입력하세요!!");
tf.requestFocus();
return;
}
String pwd=String.valueOf(pf.getPassword()); // 값을 문자열로 읽어옴
if(id.trim().length()<1) { // length가 0, 입력이 안됐다면
JOptionPane.showMessageDialog(this, "Password를 입력하세요!!");
pf.requestFocus();
return;
}
// 입력이 완료
// 처리
if(id.equalsIgnoreCase(ID)) { // 대소문자 구분없이 처리
if(pwd.equals(PWD)) {
JOptionPane.showMessageDialog(this, id+"님 로그인되었습니다");
}
else {
JOptionPane.showMessageDialog(this, "Password가 틀립니다");
pf.setText("");
pf.requestFocus();
}
}
else {
JOptionPane.showMessageDialog(this, "ID가 존재하지 않습니다");
tf.setText("");
pf.setText("");
tf.requestFocus();
}
}
else if(e.getSource()==b2) { // 취소
System.exit(0); // 정상종료
}
}
}
'Back-end > Java' 카테고리의 다른 글
JAVA의 정석 17일차 - 메소드 응용 (0) | 2020.07.07 |
---|---|
JAVA의 정석 16일차 - 메소드 (0) | 2020.07.06 |
JAVA의 정석 14일차 - 배열용도2 (0) | 2020.07.02 |
JAVA의 정석 13일차 - 배열용도 (0) | 2020.07.01 |
JAVA의 정석 12일차 - 배열 (10) | 2020.06.30 |