数组与List之间的转换
数组—>List
-
引用类型数组可以直接使用 Arrays.asList()
String[] strings = {"1", "2", "3"}; List<String> list4 = Arrays.asList(strings);
或者
List<String> list4 = Arrays.asList("1", "2", "3");
-
基本类型数组转换不能使用Arrays.asList()
List<Integer> list = Arrays.asList(intarray);
上面代码编译通不过,因为asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的。使用:
List<Integer> lsit5 = Arrays.asList(1,2,3);
或者
List<int[]> list = Arrays.asList(intarray);
可以通过,那么对于基本类型数组转换,可以使用guava类库或者其他库的工具方法如:
Ints.asList(intarray);
-
说明:asList方法返回的是数组的一个视图,视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。
list—>array
-
列表转换为数组的方法
list.toArray() list.toArray(T[] t)
java注解
三个内置注解
- @Override : 重写父类方法
- @Deprecated : 弃置或者不建议使用的方法
- @SuppressWarnings: 释放警告,可以去除一些编译器的警告
四个元注解(注解的注解):
-
@Retention: 定义注解的保留周期,其包含三个不同的值
@Retention(RetentionPolicy.SOURCE) // 注解仅仅存在于源码中,不存在与字节码中 @Retention(RetentionPolicy.CLASS) // 默认周期, 字节码中存在,运行时不存在 @Retention(RetentionPolicy.RUNTIME) // 运行时存在
-
@Target: 定义注解的作用目标
@Target(ElementType.TYPE) //接口、类、枚举、注解 @Target(ElementType.FIELD) //字段、枚举的常量 @Target(ElementType.METHOD) //方法 @Target(ElementType.CONSTRUCTOR) //构造函数 @Target(ElementType.ANNOTATION_TYPE)//注解 @Target(ElementType.PACKAGE) ///包 @Target(ElementType.LOCAL_VARIABLE)//局部变量 @Target(ElementType.PARAMETER) //方法参数
-
@Document:说明该注解将被包含在javadoc中
-
@Inherited:说明子类可以继承父类中的该注解
注解的属性
-
注解属性的定义
-
注解的属性的定义方式与类的定义有所区别,类似于一个无参的抽象方法
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @Interface Test{ int type(); String value() default "1"; }
-
-
注解属性的赋值
@Test(type = 1, value = "2") public Class TestTemp{ }
或
@Test(type = 1) public Class TestTemp{ 由于value存在默认值,所以可以不用再次赋值 }
BigDecimal的equal()方法与compareTo方法
- 代码展示:
BigDecimal bigDecimal = new BigDecimal("100.0"); BigDecimal bigDecimal2 = new BigDecimal("100.0000"); System.out.println(bigDecimal.equals(bigDecimal2)); // false System.out.println(bigDecimal.compareTo(bigDecimal2) == 0);// true
- 原因:
- equals(): 不仅会比较值的大小,还会比较两个对象的精确度
- compareTo() 不会比较精确度,只比较数值的大小
- 建议: 在对象的设计时,尽量保证equals()与compareTo() 方法保持一致。
网友评论