기타 클래스

    StringBuffer, StringBiilder클래스

    기존의 Stirng의 문자열은 내부적으로 문자열의 수정이 불가하다. 하여 ,대체String객체로 대신 리턴 하게 되어 있다.

     

    버퍼(buffer)라는 것은 데이터를 임시로 저장하기 위한 작은 공간을 의미한다.

    하지만, 버퍼를 사용하면 상당히 입출력 속도가 빨라진다.

     

    StringBuffer, StringBiilder는 버퍼를 이용해서, 객체가 만들어지는데 String클래스와는 달리 버퍼 내부에서 문자열을 추가, 수정, 삭제가 가능하다. 단, 인스턴스가 하나라는 것이 중요하다.

     

    StringBuffer : 멀티 스레드 환경에서 사용한다.

    StringBiilder : 싱글 스레드 환경에서 사용한다.

     

    package kr.co.kihd.stringbilder;
    
    public class StringBuilderTest {
    
    	public static void main(String[] args) {
    		
    		//StringBuilder, StringBuffer클래스는 버퍼(임시저장메모리)
    		//이용하기 떄문에, 새로운 인스턴스가 생성하는 것이 아니라,
    		//하나의 인스턴스를 가지고 문자열을 조작할수 있다.
    		StringBuilder stringBuilder = new StringBuilder("JAVA");
    		System.out.println(stringBuilder);
    		System.out.println(stringBuilder.hashCode());
    		
    		stringBuilder.append("program");
    		System.out.println(stringBuilder);
    		System.out.println(stringBuilder.hashCode());
    		
    		stringBuilder.insert(1, "나");
    		System.out.println(stringBuilder);
    		System.out.println(stringBuilder.hashCode());
    		
    		stringBuilder.insert(1, 100);
    		System.out.println(stringBuilder);
    		System.out.println(stringBuilder.hashCode());
    		
    		stringBuilder.setCharAt(0, 'R');
    		System.out.println(stringBuilder);
    		System.out.println(stringBuilder.hashCode());
    		
    		stringBuilder.reverse();
    		System.out.println(stringBuilder);
    		
    		stringBuilder.delete(0, 3);
    		System.out.println(stringBuilder);
    		
    		int length = stringBuilder.length();
    		System.out.println("총문자수 : " + length);
    		
    	}
    
    }
    

    JAVA
    804564176
    JAVAprogram
    804564176
    J나AVAprogram
    804564176
    J100나AVAprogram
    804564176
    R100나AVAprogram
    804564176
    margorpAVA나001R
    gorpAVA나001R
    총문자수 : 12


    math 클래스

    수학에서 사용되어지는 각종 메서드

    package kr.co.kihd.stringbilder;
    
    public class MathTest {
    
    	public static void main(String[] args) {
    		
    		//절대값
    		int v1 = Math.abs(-5);
    		double v2 = Math.abs(-7.88);
    		System.out.println(v1);
    		System.out.println(v2);
    		
    		//올림값
    		double v3 = Math.ceil(5.3);
    		System.out.println(v3);
    		
    		//내림값
    		double v4 = Math.floor(5.9);
    		System.out.println(v4);
    		
    		//둘중에 최대값
    		int v5 = Math.max(10, 5);
    		System.out.println(v5);
    		
    		//둘중에 최소값
    		int v6 = Math.min(10, 5);
    		System.out.println(v6);
    		
    		//랜덤값
    		double v7 = Math.random();
    		System.out.println(v7);
    		
    		//가까운 정수의 실수값 리턴
    		double v8 = Math.rint(5.5);			
    		System.out.println(v8);
    		
    		//반올림
    		long v9 = Math.round(5.23);
    		System.out.println(v9);
    		
    		//소수점 셋쨰자리에서 반올림하는 것
    		double value = 12.3456;
    		double temp1 = value * 100;
    		System.out.println(temp1);
    		long temp2 = Math.round(temp1);
    		System.out.println(temp2);
    		double v10 = temp2/100.0;
    		System.out.println(v10);
    
    	}
    	
    }
    

    포장(wrapper) 클래스

    포장 클래스는 기본타입의 값을 객체로 포장하는 클래스들이다.(컬렉션프레임워크에서 사용하기위한 용도)
    -박싱 : 기본형 타입을 포장객체로 만드는 것을 말한다.
    -언박싱 : 포장객체에서 기본형 타입을 값을 가져오는 과정을 말한다.

     

    생성자 이용방법

    valueOf 메서드 이용방법

    언박싱을 하는방법

    -해당 포장클래스의 XXXvalue()메서드를 호출하면 된다.

    자동 박싱과 자동 언박싱 하는 방법

     

    문자열을 기본 타입명 으로 변환하는 방법

    -parse + 기본형 타입명 으로 정적 메서드를 이용하면 된다.

     

    package kr.co.kihd.boxing;
    
    public class BoxingUnBoxingTest {
    
    	public static void main(String[] args) {
    		
    		//박싱(Boxing) 코드(방법) ==> 객체화 시킴.
    		Integer obj1 = new Integer(100);
    		Integer obj2 = new Integer("100");
    		//valueOf() : 인자값을 지정된 Number 객체형으로 변환하여 반환함.
    		Integer obj3 = Integer.valueOf(100);
    		//컴파일 시 new Interger(100)로 바뀐다.
    		Integer obj4 = 100;
    		
    		System.out.println("박싱후");
    		System.out.println(obj1);
    		System.out.println(obj2);
    		System.out.println(obj3);
    		System.out.println(obj4);
    		
    		//언박싱(unBoxing)코드 ==> 기본값으로 바꾼다.
    		int value1 = obj1.intValue();
    		int value2 = obj2; //객체를 값에 넣음.->언박싱
    		int value3 = obj3; 
    		int value4 = obj4.intValue();
    		
    		System.out.println("언박싱후");
    		System.out.println(value1);
    		System.out.println(value2);
    		System.out.println(value3);
    		System.out.println(value4);
    		
    	}
    
    }
    

    자동박싱, 자동 언박싱

    package kr.co.kihd.boxing;
    
    import java.util.List;
    import java.util.Vector;
    
    public class AutoBoxingUnBoxingTest {
    
    	public static void main(String[] args) {
    		//자동박싱
    		Integer obj1 = 100;
    		Integer obj2 = 300;
    		
    		List list = new Vector();
    		list.add(obj1);
    		list.add(obj2);
    		list.add(500);          //list.add(new Integer(500))
    		System.out.println(list);
    
    		//자동 언박싱
    		int value1 = (Integer)list.get(0); //객체에서 값으로 자동으로 언박싱됨
    		System.out.println(value1); // 원래 객체인데 값으로 꺼내서 언박싱 자동이라 자동 언박싱
    		
    		int value2 = obj2.intValue(); //정상코드
    		int value3 = obj2;  //자동 언박싱 해준 코드
    		System.out.println(value2);
    		System.out.println(value3);
    		
    		//객체 + 기본타입값은 문법에러이지만 기본타입이 포장클래스로 제공이 되기 떄문에
    		//컴파일러가 자동언박싱 해준것이라 연산이 되었다.
    		int result = obj1 + 500;
    		System.out.println(result);
    	}
    
    }

    parse메서드 언박싱

    package kr.co.kihd.boxing;
    
    public class StringToPrimitiveTest {
    	
    	public static void main(String[] args) {
    		
    		int value1 = Integer.parseInt("100"); //int형으로 자동으로 언박싱해준다.
    		double value2 = Double.parseDouble("3.14");
    		boolean value3 = Boolean.parseBoolean("true");
    		
    		System.out.println(value1);
    		System.out.println(value2);
    		System.out.println(value3);
    		
    	}
    	
    }
    

    System 클래스

     

    시스템 property는 JVM이 시작할 때 자동으로 설정되는 시스템의 속성 값을 정한다. 통상 키를 주고 값을 받아온다.

     

    Class 클래스는 클래스와 인터페이스의 메타 데이터관리. 문자열로 된 클래스명으로부터

    동적 객체를 생성하는 클래스이다.

     

    리플랙션

    -클래스의 생성자, 필드, 메서드 정보를 알아내는 것을 말한다.

    동적 객체 생성

    -동적 객체란 프로그램이 실행 중에 클래스 이름이 결정되는 것을 말한다.

    이런 경우 Class의 newinstance()를 이용하면 된다.


    package kr.co.kihd.system;
    
    public class SystemTest {
    
    	public static void main(String[] args) {
    		
    		for(int i = 0; i<10; i++) {
    			System.out.println(i);
    			if(i == 5) {
    				System.exit(0);
    			}
    		}
    
    	}
    
    }
    

     

    currentTimeMillis() 프로그램의 성능을 테스트 할때 사용하면 유용한 메서드

    package kr.co.kihd.system;
    
    public class SystemTest2 {
    
    	public static void main(String[] args) {
    		
    		//프로그램의 성능을 테스트 할때 사용하면 유용한 메서드
    		long sum = 0;
    		
    		//long start = System.currentTimeMillis();
    		long start = System.nanoTime(); //10의 9승분의 1
    		
    		for(long i = 1; i<1000000000; i++) {
    			sum += i;
    		}
    		//long end = System.currentTimeMillis(); //10의 3승분의 1
    		
    		long end = System.nanoTime();
    		
    		System.out.println(sum);
    		System.out.println("소요된 시간 : " + (end - start) + "ns");
    		System.out.println("소요된 시간 : " + ((end - start)/1000000000.0) + "초");
    	
    	}
    
    }
    

     

    package kr.co.kihd.system;
    
    import java.util.Properties;
    import java.util.Set;
    
    public class SystemTest3 {
    	
    	public static void main(String[] args) {
    		
    		String osName = System.getProperty("os.name");
    		System.out.println("현재 운영체제 : " + osName);
    		
    		String userName = System.getProperty("user.name");
    		System.out.println("사용자 계정 : " + userName);
    		
    		//Properties클래스는 Map계열의 컬렉션
    		//키도 String, 값도 String 갖는다
    		Properties properties = System.getProperties();
    	    //Map컬렉션에서 키값만 Set계열로 가져오는 메서드가 keySet
    		Set set = properties.keySet();
    	    
    		System.out.println("Key                                                           value");
    		System.out.println("----------------------------------------------------------------------");
    		for(Object objkey : set) {
    			String key = (String) objkey;
    			String value = System.getProperty(key);
    			System.out.println(key + "                                  "+ value);
    		}
    	    
    	    
    	}
    	
    }
    

     

    클래스 이름얻기

    package kr.co.kihd.classs;
    
    public class Person {
    	
    	private String name;
    	private int age;
    	
    	public Person() {
    		
    	}
    
    	public Person(String name, int age) {
    		super();
    		this.name = name;
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    	
    	
    }
    
    package kr.co.kihd.classs;
    
    public class ClassTest {
    
    	public static void main(String[] args) {
    		//객체로부터 클래스 정보를 얻는 방법(getClass())
    		Person person = new Person();
    		Class class1 = person.getClass();
    		
    		System.out.println(class1.getName());
    		System.out.println(class1.getSimpleName());
    
    	}
    
    }
    
    package kr.co.kihd.classs;
    
    public class ClassTest {
    
    	public static void main(String[] args) {
    		//1)객체로부터 클래스 정보를 얻는 방법(getClass())
    		Person person = new Person();
    		Class class1 = person.getClass();
    		
    		System.out.println(class1.getName());
    		System.out.println(class1.getSimpleName());
    		
    		System.out.println();
    		
    		//2)문자열로부터 객체의 정보를 얻는 방법(Class.forName())
    		try {
    			Class class2 =
    			Class.forName("kr.co.kihd.classs.Person");
    			System.out.println(class2.getName());
    			System.out.println(class2.getSimpleName());
    		} catch (ClassNotFoundException e) {
    		
    			e.printStackTrace();
    		}
    		
    		
    	}
    
    }
    

    reflect 사용

    package kr.co.kihd.classs;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class ReflectionTest {
    
    	public static void main(String[] args) throws Exception {
    		
    		Class class1 = Class.forName("java.lang.String");
    		System.out.println("[생성자 정보]");
    		Constructor[] constructors =
    				class1.getDeclaredConstructors();
    		
    		for(Constructor constructor : constructors) {
    			System.out.print(constructor.getName() + "(");
    			Class[] param = constructor.getParameterTypes();
    			
    			for(int i = 0; i<param.length; i++) {
    				System.out.print(param[i].getSimpleName());
    				if(i<(param.length-1)) {
    					System.out.print(", ");
    				}
    				
    			}
    			System.out.println(")");
    		}
    		
    		//필드를 표시
    		Field[] fields = class1.getDeclaredFields();
    		System.out.println("[필드 정보]");
    		for(Field field : fields ) {
    			System.out.println(field.getType().getSimpleName() +
    					" " + field.getName());
    		}
    		
    		//메서드 정보
    		System.out.println("[메서드 정보]");
    		Method[] methods = class1.getDeclaredMethods();
    		
    		for(Method method : methods) {
    			System.out.print(method.getReturnType().getSimpleName() + " ");
    			System.out.println(method.getName() + "(");
    			
    		    Class[] class2 = method.getParameterTypes();
    		    for(int i = 0; i<class2.length; i++) {
    		    	System.out.print(class2[i].getSimpleName());
    		    	if(i < (class2.length-1)) {
    		    		System.out.print(", ");
    		    	}
    		    }
    		    
    		    System.out.println(")");
    		}
    	}
    
    }

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading