1.集合转数组
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
System.out.println(list);
String[] arr = list.toArray(new String[list.size()]);
for (String str : arr) {
System.out.println(str);
}
}
输出:
2. 数组转集合
public static void main(String[] args) {
String[] strArr = {"one", "two", "three","four"};
List<String> list = Arrays.asList(strArr);
System.out.println(list);
//对list的操作就是对数组的操作
//由于数组是定长的,所以集合不可以增删元素(可以修改)
//list.add("five");报错
List<String> list2 = new ArrayList<>();
list2.addAll(list);
//等价于List<String> list2 = new ArrayList<>(list);
}
3.数组复制
public static void main(String[] args) {
int[] a = {10, 20, 30, 40, 50};
int[] a1 = new int[6];//0,0,0,0,0,0
/**
* a:源数组
* 1:源数组的起始下标
* a1:目标数组
* 0:目标数组的起始下标
* 4:要复制的元素个数
*/
System.arraycopy(a, 1, a1, 0, 4);//a1:20,30,40,50,0,0
/**
* a:源数组
* a1:目标数组
* 6:目标数组的长度(多则补默认值,少则截取)
*/
int[] a2 = Arrays.copyOf(a,6);//a2:10,20,30,40,50,0
//数组的扩容,即创建一个新的数组
a = Arrays.copyOf(a, 6);
}
4.反射
4.1实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
String num;
String age;
String life;
}
4.2实战
public static void main(String[] args) throws Exception {
Student student = new Student();
Class clazz = student.getClass();
//另一种写法
//Class clazz = Class.forName("com.kuang.entity.Student");
System.out.println(clazz.getName());//获取类名com.kuang.entity.Student
Field[] fields = clazz.getDeclaredFields();//获取当前自己定义的所有变量
//java.lang.String com.kuang.entity.Student.num
//java.lang.String com.kuang.entity.Student.age
//java.lang.String com.kuang.entity.Student.life
Method[] methods = clazz.getDeclaredMethods();
//public boolean com.kuang.entity.Student.equals(java.lang.Object)
//public java.lang.String com.kuang.entity.Student.toString()
//public int com.kuang.entity.Student.hashCode()
//public void com.kuang.entity.Student.setLife(java.lang.String)
//public java.lang.String com.kuang.entity.Student.getNum()
//public java.lang.String com.kuang.entity.Student.getLife()
//public void com.kuang.entity.Student.setNum(java.lang.String)
//public void com.kuang.entity.Student.setAge(java.lang.String)
//public java.lang.String com.kuang.entity.Student.getAge()
//protected boolean com.kuang.entity.Student.canEqual(java.lang.Object)
/**
* new一个类的对象,调的是无参构造方法实例化,并将实例化对象返回
*/
//Object obj = clazz.newInstance();
/**
* 获取类的某一个方法
* 参数一:方法名
* 参数二:参数类型,无参可不写或写null
*/
Method method = clazz.getDeclaredMethod("setLife", String.class);
/**
* 相当于setLife("20")
*/
method.invoke(student, "20");//无参可写null
Method method1 = clazz.getDeclaredMethod("getLife", null);
Object result = method1.invoke(student,null);
System.out.println(result);
}