一:静态导入
语法: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));
}

 

javaweb学习总结二(静态导入、自动拆装箱、增强for与可变参数)的更多相关文章

  1. Java枚举、静态导入、自动拆装箱、增强for循环、可变参数

    一.枚举简介 1.什么是枚举? 需要在一定范围内取值,这个值只能是这个范围内中的任意一个 现实场景:交通信号灯,有三种颜色,但是每次只能亮三种颜色里面的任意一个 2.使用一个关键字 enum enum ...

  2. 静态导入方法即自动拆装箱(java)

    package example6;import static java.lang.System.out;import static java.util.Arrays.sort;import java. ...

  3. Java基础(二) 基本类型数据类型、包装类及自动拆装箱

    我们知道基本数据类型包括byte, short, int, long, float, double, char, boolean,对应的包装类分别是Byte, Short, Integer, Long ...

  4. Java基础进阶:APi使用,Math,Arrarys,Objects工具类,自动拆装箱,字符串与基本数据类型互转,递归算法源码,冒泡排序源码实现,快排实现源码,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    要点摘要 Math: 类中么有构造方法,内部方法是静态的,可以直接类名.方式调用 常用: Math.abs(int a):返回参数绝对值 Math.ceil(double a):返回大于或等于参数的最 ...

  5. Java连载78-深入自动拆装箱、Date类和SimpleDateFormat格式化

    一.深入自动拆装箱 1.直接举例: public class D78_AutomaticUnpackingAndPacking{ public static void main(String[] ar ...

  6. Java的自动拆/装箱

    作者:Alvin 关键字:语法糖 类 对象 参考 Java 中的语法糖 语法糖--这一篇全了解 浅谈 Integer 类 什么是Java中的自动拆装箱 深入剖析Java中的装箱和拆箱 前言 我们知道, ...

  7. 一文读懂什么是Java中的自动拆装箱

    基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为 ...

  8. 自动拆装箱(int,Integer)

    包装类型Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个 ...

  9. Java的自动拆装箱与Integer的缓存机制

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10832303.html 一:基本类型与包装类型     我们知道,Java有8大基本数据类型,4整2浮1符1 ...

随机推荐

  1. linux - 怎么自动填写有交互的shell脚本 - SegmentFault

    linux - 怎么自动填写有交互的shell脚本 - SegmentFault TCL/Expect交互式自动化测试概要 - - ITeye技术网站 expect是一种基于TCL,能与交互式程序进行 ...

  2. Linux内存中的Cache真的能被回收么?

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: [root@tencent64 ~]# free       ...

  3. AutoCAD.NET二次开发:扩展数据之XData

    结果缓存——ResultBuffer 结果缓存即 Autodesk.AutoCAD.DatabaseServices.ResultBuffer 类型,使用 ResultBuffer 对象时需要提供一个 ...

  4. MyBatis中井号与美元符号的区别

    #{变量名}可以进行预编译.类型匹配等操作,#{变量名}会转化为jdbc的类型. select * from tablename where id = #{id} 假设id的值为12,其中如果数据库字 ...

  5. SQL NULL Values

    NULL代表缺失的.未知的数据.表的列值默认是NULL.如果某个表的某个列不是NOT NULL的,那么当我们插入新纪录.更新已存在的记录时,可以不用为此列赋值,这意味着那个列保存为NULL值. NUL ...

  6. word2010 ctrl v not work

    终于解决了word 2010中ctrl v 不能用的问题. 0 word ctrl c 可以用,右键粘贴可以正常使用,快捷键ctrl v不能用. 1 在excel中ctrl c 和ctrl v,可以正 ...

  7. SqlServer刷新所有视图

    CREATE PROCEDURE RefreshAllView AS DECLARE MyCursor CURSOR FOR select Name from dbo.sysobjects where ...

  8. VS DLL 复制本地

    1.引用一个DLL,需要指定路径,复制本地的意思是 把这个DLL复制到exe的Debug目录(调试的时候). 2.复制到本地的动作是在生成的时候执行的,清理的时候会删除. 3.从外部引用一个DLL,不 ...

  9. Educational Codeforces Round 1 E. Chocolate Bar 记忆化搜索

    E. Chocolate Bar Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/598/prob ...

  10. Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) B. Bear and Blocks 水题

    B. Bear and Blocks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/573/pr ...