2020년 11월 20일 9시 ~ 15시 30분 zoom으로 수업 진행
11월 24일 프로그래밍 시험
package com.poly.test06;
import java.util.Scanner;
public class MTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("도형을 선택해주세요 [1 : 원 ,2 : 삼각형 , 3 : 사각형] : ");
int select = sc.nextInt();
Area ar = null;
switch(select) {
case 1:
ar = new Circle();
break;
case 2:
ar = new Triangle();
break;
case 3:
ar = new Square();
break;
}
ar.make();
ar.print();
}
}
package com.poly.test06;
public abstract class AreaImpl implements Area {
private String result;
@Override
public void print() {
System.out.println(Area.print + " " + result);
}
@Override
public abstract void make();//추상 메소드로 만들어버리자
//클래스 선언부에도 빨간줄이 생김
//무조건 구현해줘야 하는 기능인데 추상메소드로 만들어버려서 빨간줄
//해당 클래스 자체를 abstract로 선언해줘야함!
//빨간 줄 사라짐 편안 ㅎㅎ
public void setResult(String result) {
this.result = result;
}
}
package com.poly.test06;
public interface Area {
//static 상수 필드인것임!!
//생략된거임!
//인터페이스에서는 static 상수필드랑 추상메서드밖에 못 만듦
String print = "면적 : ";
public void print();
public void make();
}
package com.poly.test06;
import java.util.Scanner;
public class Circle extends AreaImpl{
@Override
public void make() {
Scanner sc = new Scanner(System.in);
System.out.print("반지름 : ");
int rad = sc.nextInt();
double res = rad*rad*Math.PI;
//super.setResult(res+"");
super.setResult(String.format("%.2f", res));
}
@Override
public void print() {
}
}
package com.poly.test06;
import java.util.Scanner;
public class Square extends AreaImpl{
@Override
public void make() {
Scanner sc = new Scanner(System.in);
System.out.print("가로 : ");
int x = sc.nextInt();
System.out.print("세로 : ");
int y = sc.nextInt();
int res = x*y;
setResult(String.valueOf(res));
}
@Override
public void print() {
System.out.print("사각형의 ");
super.print();
}
}
package com.poly.test06;
import java.util.Scanner;
public class Triangle extends AreaImpl{
@Override
public void make() {
Scanner sc = new Scanner(System.in);
System.out.print("밑변 : ");
int x = sc.nextInt();
System.out.print("높이 : ");
int h = sc.nextInt();
double res = (double)x*h/2;
setResult(String.format("삼각형의 %.2f", res));
}
@Override
public void print() {
// TODO Auto-generated method stub
}
}
package com.poly.test07;
public class MTest {
public static void main(String[] args) {
MyProfile m = new MyProfile("asd", "010-1234-1234");
m.jobLoc("서울시 강남구");
m.display();
}
}
package com.poly.test07;
public class Profile {
private String name;
private String phone;
public Profile() {}
public Profile(String name, String phone) {
this.name = name;
this.phone = phone;
}
public void printProfile() {
System.out.println("이름 : " + name);
System.out.println("전화번호 : " + phone);
}
}
package com.poly.test07;
public class MyProfile extends Profile implements Job, Display{
private String loc;
public MyProfile() {}
public MyProfile(String name, String phone) {
super(name, phone);
}
@Override
public void display() {
super.printProfile();
System.out.println("회사 주소 : " + loc);
System.out.println("회사 직종 : " + jobId);
}
@Override
public void jobLoc(String loc) {
this.loc = loc;
}
}
package com.poly.test07;
public interface Display {
public void display();
}
package com.poly.test07;
public interface Job {
String jobId = "IT 관련";
public void jobLoc(String loc);
}
String 클래스
문자열 값 수정 불가능
수정 시 수정된 문자열이 새로 할당되어 새 주소를 넘긴다
StringBuffer 클래스
문자열 값 수정 가능
수정, 삭제등이 기존 문자열에 수정되어 적용
기본 16문자 크기로 지정된 버퍼를 이용하며 크기 증가 기능
쓰레드 safe 기능 제공 (성능 저하 요인)
-> 현 작업이 끝날 때까지 다른애들이 대기해야 함
StringBuilder 클래스
StringBuffer와 동일하나 쓰레드 safe 기능을 제공하지 않음
StringTokenizeer 클래스
String 클래스에서 제공하는 split() 메소드와 같은 기능을 하는 클래스
생성 시 전달받은 문자열을 구분자로 나누어 각 토큰에 저장
예시
import java.util.*;
public class TestStringTokenizer{
public static void main(String[] args){ String str = "AA|BB|CC"; StringTokenizer st = new StringTokenizer(str, "|"); while(st.hasMoreTokens()){ System.out.println(st.nextToken()); } } } |
Wrapper 클래스
기본 데이터 타입을 객체화 해주는 클래스
Primitive Data Type |
Wrapper Class |
boolean |
Boolean |
byte |
Byte |
char |
Character |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
String 을 기본 자료형으로 바꾸기
int i = Integer.parseInt(“3”);
char c = “abc”.charAt(0);
기본 자료형을 String으로 바꾸기
String i = Integer.valueOf(5).toString();
package com.ch01.string;
public class Run {
public static void main(String[] args) {
//method1();
method2();
}
public static void method1() {
//1. 문자열 리터럴로 생성
String str = "abc";
String str1 = "abc";
System.out.println(str);//abc
System.out.println(str1);//abc
System.out.println(str.hashCode());//96354
System.out.println(str1.hashCode());//96354
System.out.println("=====================================");
//2. 생성자
String str2 = new String("abc");
String str3 = new String ("abc");
System.out.println(str2.hashCode()); //결과는 똑같이 나온다, 96354
System.out.println(str3.hashCode()); //같은 값을 가지고 있기 때문이다, 96354
System.out.println("=====================================");
System.out.println(System.identityHashCode(str));//798154996
System.out.println(System.identityHashCode(str1));//798154996
System.out.println("--------------new 사용후-----------");
System.out.println(System.identityHashCode(str2));//681842940
System.out.println(System.identityHashCode(str3));//1392838282
//new 연산자는 값이 다르게 나온다. //즉 new는 객체를 새롭게 생성한다.
}
public static void method2() {
String str = "abc";
//charAt(인덱스)
System.out.println(str.charAt(1));//b
//concat(합치기)
System.out.println(str.concat("def"));//abcdef
//contains(포함여부)
System.out.println(str.contains("c"));//true
//equals(비교)
System.out.println(str.equals("abc"));//true
//length(길이)
System.out.println(str.length());//3
System.out.println("==================================");
String str1 = "a,b,c";
String str2 = "햄서터/서울시송파구/학생/기요미";
//split(문자구분)
String[] strArr = str1.split(",");
for(int i=0; i<strArr.length; ++i) {
System.out.print(strArr[i] + "\t");
}
//a b c
System.out.println("");
String[] str2Arr = str2.split("/");
for(int i=0; i<str2Arr.length; ++i) {
System.out.print(str2Arr[i] + "\t");
}
//햄서터 서울시송파구 학생 기요미
System.out.println("\n");
//toUpperCase(대문자로) / toLowerCase(소문자로)
System.out.println(str1.toUpperCase());//A,B,C
//subString(잘라내기)
System.out.println(str2.substring(4, 10));
//햄서터/서울시송파구/학생/기요미
//01 23 456 78910...
//subString(4, 8) 4부터 시작해서 8앞까지 출력하는 것
//trim(앞 뒤 공백제거)
String str3 = " hi ";
System.out.println(str3);// hi
System.out.println(str3.trim());//hi
System.out.println("=======================\n");
//문자 가운데 공백 지우기
String str4 = "Hello Java World";
String str4MiddleTrim = "";
//내가 푼 것
for(int i=0; i<str4.length(); ++i) {
if(str4.charAt(i) == ' ') {
continue;
}
else {
str4MiddleTrim += str4.charAt(i);
}
}
System.out.println(str4);//Hello Java World
System.out.println(str4MiddleTrim);//HelloJavaWorld
//선생님 풀이
System.out.println(str4.replaceAll(" ", ""));//HelloJavaWorld
}
}
package com.ch03_stringTokenizer;
import java.util.StringTokenizer;
public class Run {
public static void main(String[] args) {
String str = "햄서터,29,서울시 송파구,남";
StringTokenizer st = new StringTokenizer(str, ",");
//StringTokenizer =>
System.out.println("st.countTokens : " + st.countTokens());
//st.countTokens : 4
while(st.hasMoreTokens()) {
System.out.print(st.nextToken() + "\t");
}
//햄서터 29 서울시 송파구 남
while(st.hasMoreTokens()) {
System.out.print(st.nextToken() + "\t");
}
//출력 x 앞에서 토큰의 마지막 위치에 커서를 옮겨놓았기때문에 두번째 while()문이 작동하지 않음
//다시 사용하려면 새로운 StirngTokenizer 객체를 생성해주어야 한다
StringTokenizer st1 = new StringTokenizer(str, ",");
System.out.println(st1.nextToken());
System.out.println(st1.nextToken());
System.out.println(st1.nextToken());
System.out.println(st1.nextToken());
//System.out.println(st1.nextToken()); 토큰이 더 없어서 에러납니다
}
}
package com.ch04_wrapperClass;
public class Run {
//Boxing : 기본 자료형 -> wrapper 클래스 객체 (오토 박싱)
//unBoxing : wrapper -> 기본 자료형 (오토언박싱)
public static void main(String[] args) {
//boxing 기본 자료형을 래퍼 클래스 로 객체화 시키는 것
int no = 10;
Integer i = new Integer(no); //기본 타입 데이터 no(10)을 객체화 시키는 작업
Integer i2 = Integer.valueOf(no); //기본 타입 데이터 no(10)을 객체화 시키는 작업
Double d = new Double(11.0); //기본 타입 데이터 11.0 을 객체화 시키는 작업
System.out.println(i.equals(i2)); //true
System.out.println(i.compareTo(i2));//0
//compareTo() 객체 비교 메서드
//-> 음수면 i2가 큰 것, 양수면 i가 큰 것, 0은 둘이 같을 때
//equals() 는 객체의 값을 비교한다
System.out.println("====================================");
//AutoBoxing
Integer i3 = 10;
Double d2 = 5.0;
//UnBoxing
//래퍼클래스 객체를 기본 자료형으로 바꾼다
int pi = i.intValue();
double dp = d.doubleValue();
//AutoUnboxing
int a = i;
int b = i2;
System.out.println(a+b);//20
abox(20);//20
//다형성 적용됨
//int 형이 오토 박싱이 되었고, 결과 출력이 가능해짐
//int - 오토박싱 -> Integer - 다형성 -> Object
System.out.println("--------------");
Integer sti = new Integer("12");
int sti2 = new Integer("300");//오토언박싱
//Integer 객체가 오토언박싱을 통해 int형(기본자료형)으로 변환되어
//int형 변수 sit2 에 저장된다.
int ii = Integer.parseInt("3");
//
double dd = Double.parseDouble("0.2");
boolean b1 = Boolean.parseBoolean("true");
//1.5버전 이후 가능
ii = Integer.valueOf("3");
dd = Double.valueOf("0.2");
String s1 = Integer.valueOf("3").toString();
String c = Character.valueOf('a').toString();
}
public static void abox(Object obj) {
//Object 형으로 받아야해서 기본 타입은 못 받음
//래퍼 클래스 사용해서 객체화 시켜줘야 함
System.out.println(obj);
}
}
'기록 > 자바_국비' 카테고리의 다른 글
[평가 후기] 1124 프로그래밍 기초 평가 후기 (0) | 2020.11.27 |
---|---|
[배운내용정리] 1123 자바 국비교육 (0) | 2020.11.27 |
[배운내용정리] 1119 자바 국비교육 (0) | 2020.11.22 |
[배운내용정리] 1118 자바 국비교육 (0) | 2020.11.22 |
[배운내용정리] 1117 자바 국비교육 (0) | 2020.11.18 |