
正文
javaweb学习总结二(静态导入、自动拆装箱、增强for与可变参数)
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
一:静态导入
语法:import static 导入类.成员变量|成员方法
那么在代码中可以直接使用变量或者方法,而不需要通过类名.来调用
静态导入:
import static java.lang.System.out;
那么在代码中直接调用变量:
@Test
//测试静态导入
public void testStaticImport() {
out.println("static import...");
}
二:装箱或者拆箱
装箱:将基本数据类型赋值给引用数据类型
拆箱:将引用数据类型赋值给基本数据类型
@Test
public void testAutoBox() {
Integer i = 1; // 自动装箱 Integer i = new Integer(1);
int j = i; // 自动拆箱 int j = i.intValue();
System.out.println(j);
List list = new ArrayList();
list.add(1); // 这里的1在编译阶段会自动转换为Integer类型
System.out.println(list);
}
三:增强for循环
1:增强for循环可以遍历数组或者集合
@Test
// 测试增强for循环
public void testForEnhance() {
// 遍历数组
int[] arr = new int[] { 1, 2, 3 };
for (int i : arr) {
System.out.println(i);
}
// 遍历集合
List<String> list = new ArrayList<String>();
list.add("java");
list.add("php");
for (String s : list) {
System.out.println(s);
}
}
2:它只能查询不能修改数组或者集合中的内容,如果需要修改容器中的内容,还是要用传统的for循环。
@Test
// 测试增强for循环
public void testForEnhance() {
// 遍历数组
int[] arr = new int[] { 1, 2, 3 };
for (int i : arr) {
i = 10;
}
System.out.println(Arrays.toString(arr));
// 遍历集合
List<String> list = new ArrayList<String>();
list.add("java");
list.add("php");
for (String s : list) {
s = "c++";
}
System.out.println(list);
}
数组以及集合中的值并没有发生变化。
3:集合只有实现了Iterable,才能够使用增强for循环,因为for循环的底层还是迭代器
@Test
public void testIterator() {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("php");
// 使用迭代器
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
// 使用for循环
for (String str : list) {
System.out.println(str);
}
}
4:使用for循环遍历set集合,但是不能遍历map集合,因为map集合没有实现Iterator接口
但是我们可以将map集合转化为set集合
遍历set集合:
@Test
public void testIteratorSet() {
Set<String> set = new HashSet<String>();
set.add("1");
set.add("2");
// 迭代器遍历
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
// for循环遍历
for (String str : set) {
System.out.println(str);
}
}
遍历map集合:
a:keyset的方式
@Test
public void testIteratorMap() {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "orange");
map.put(2, "apple");
map.put(3, "banana");
// 使用迭代器
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer key = it.next();
String value = map.get(key);
System.out.println(key + "=" + value);
}
System.out.println("...........");
// 使用for循环
for (Integer i : map.keySet()) {
Integer key = i;
String value = map.get(key);
System.out.println(key + "=" + value);
}
}
b:entryset的方式
@Test
public void testIteratorMap2() {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "orange");
map.put(2, "apple");
map.put(3, "banana");
// 使用迭代器
Set<Entry<Integer, String>> set = map.entrySet();
for (Entry<Integer, String> en : set) {
Integer key = en.getKey();
String value = en.getValue();
System.out.println(key + "=" + value);
}
System.out.println("................");
// 使用增强for循环
for (Entry<Integer, String> en : map.entrySet()) {
Integer key = en.getKey();
String value = en.getValue();
System.out.println(key + "=" + value);
}
}
5:HashMap类底层的排序是hashcode,不是有序的,这时我们可以使用LinkedHashMap类
可以按照我们放入的顺序取出元素。
四:可变参数
方法名(类型 ...变量名称){
方法体;
}
@Test
public void testVariableArgs() {
int sum = getSum(1, 2, 3, 4);
System.out.println("sum=" + sum);
} public int getSum(int... nums) {
int sum = 0;
for (int i : nums) {
sum += i;
}
return sum;
}
可变参数注意点:
我们可以把可变参数看做一个数组:
@Test
public void testVariableArgs2() {
int[] arr = new int[] { 1, 2, 3, 4 };
System.out.println(getSum(arr));
}





