java 技术提升,复习,总结(一)
1:方法的多变参数
看代码理解:
public static void main(String[] args) {
System.out.println(sum(1,2,3));
System.out.println(sumfor(1,2,3));
}
/**
* 多变参数
* @param i
* @param args
* @return
*/
public static int sum(int i ,int ...args){
int sum = 0;
for (int j = 0; j < args.length; j++) {
sum+=args[i];
}
return sum;
}
/**
* 增强for循环
* @param i
* @param args
* @return
*/
public static int sumfor(int i ,int ...args){
int sum = i;//注意此处
for (int arg : args) {
sum+=arg;
}
return sum;
}
2:枚举的运用
:
public static void main(String[] args) {
System.out.println(WeekDays.SUN);
// System.out.println(WeekDays.SUN.name());
// System.out.println(WeekDays.SUN.name().toString());
// System.out.println(WeekDays.SUN.ordinal());
// System.out.println(WeekDays.valueOf("SUN").name());
// System.out.println(WeekDays.values().length);
}
public enum WeekDays{
SUN(1),MON(2,3),TUS,WED,THI,FRI,STA;
private WeekDays() {
System.out.println("frist");
}
private WeekDays(int day) {
System.out.println("second");
}
private WeekDays(int day,int name) {
System.out.println("third");
}
}
/**
* 带抽象方法
* 有构造方法
* @author Administrator
*
*/
public enum Light{
RED(20){
@Override
public Light getLight() {
// TODO Auto-generated method stub
return null;
}
},
GREEN(40){
@Override
public Light getLight() {
// TODO Auto-generated method stub
return null;
}
};
public abstract Light getLight();
private int time;
private Light(int time){
this.time = time;
};
}3:反射;
/**
* 反射辅助类
* @author JiaRH
*
*/
public class FieldReflect {
private int x = 0;
public int y = 0;
public String aa1="bbbaaa";
public String aa2="bbbaaa";
public String aa3="bbbaaa";
public FieldReflect(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return aa1+"=="+aa2+"=="+aa3;
}
}
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Reflect {
public static void main(String[] args) {
String str1 = "abc";
Class cl1 = str1.getClass();
Class cl2 = String.class;
try {
/**
* 反射基本方法
*/
Class cl3 = Class.forName("java.lang.String");
System.out.println(cl1==cl2);
System.out.println(cl1==cl3);
System.out.println(cl2==cl3);
System.out.println(int.class == Integer.TYPE );
System.out.println(cl1.isPrimitive());
System.out.println(cl2.isPrimitive());
System.out.println(cl3.isPrimitive());
System.out.println(Integer.class.isPrimitive());
System.out.println(int.class.isPrimitive());
/**
*
* 获取 构造方法,并实例新的对象
*/
Constructor constructor = String.class.getConstructor(StringBuffer.class);
String str2 = (String)constructor.newInstance(new StringBuffer("abc"));
System.out.println(str2.charAt(2));
/**
* 字段
* 获取成员变量的值
*/
FieldReflect f1 = new FieldReflect(2, 5);
FieldReflect f2 = new FieldReflect(2, 6);
//获取成员变量对象
Field ff1 = f1.getClass().getField("y");
Field ff2 = f1.getClass().getField("y");
//取值
System.out.println(ff1.get(f1)+"");//注意获取值的方法
System.out.println(ff2.get(f2)+"");
/**
* 获取私有的成员变量
* (暴力反射)
*/
Field ff3 = f1.getClass().getDeclaredField("