一:静态导入
语法:import static 导入类.成员变量|成员方法
那么在代码中可以直接使用变量或者方法,而不需要通过类名.来调用

静态导入:

  1. import static java.lang.System.out;

那么在代码中直接调用变量:

  1. @Test
  2. //测试静态导入
  3. public void testStaticImport() {
  4. out.println("static import...");
  5. }

二:装箱或者拆箱
装箱:将基本数据类型赋值给引用数据类型
拆箱:将引用数据类型赋值给基本数据类型

  1. @Test
  2. public void testAutoBox() {
  3. Integer i = 1; // 自动装箱 Integer i = new Integer(1);
  4. int j = i; // 自动拆箱 int j = i.intValue();
  5. System.out.println(j);
  6. List list = new ArrayList();
  7. list.add(1); // 这里的1在编译阶段会自动转换为Integer类型
  8. System.out.println(list);
  9. }

三:增强for循环

1:增强for循环可以遍历数组或者集合

  1. @Test
  2. // 测试增强for循环
  3. public void testForEnhance() {
  4. // 遍历数组
  5. int[] arr = new int[] { 1, 2, 3 };
  6. for (int i : arr) {
  7. System.out.println(i);
  8. }
  9. // 遍历集合
  10. List<String> list = new ArrayList<String>();
  11. list.add("java");
  12. list.add("php");
  13. for (String s : list) {
  14. System.out.println(s);
  15. }
  16. }

2:它只能查询不能修改数组或者集合中的内容,如果需要修改容器中的内容,还是要用传统的for循环。

  1. @Test
  2. // 测试增强for循环
  3. public void testForEnhance() {
  4. // 遍历数组
  5. int[] arr = new int[] { 1, 2, 3 };
  6. for (int i : arr) {
  7. i = 10;
  8. }
  9. System.out.println(Arrays.toString(arr));
  10. // 遍历集合
  11. List<String> list = new ArrayList<String>();
  12. list.add("java");
  13. list.add("php");
  14. for (String s : list) {
  15. s = "c++";
  16. }
  17. System.out.println(list);
  18. }

数组以及集合中的值并没有发生变化。

3:集合只有实现了Iterable,才能够使用增强for循环,因为for循环的底层还是迭代器

  1. @Test
  2. public void testIterator() {
  3. List<String> list = new ArrayList<String>();
  4. list.add("java");
  5. list.add("php");
  6. // 使用迭代器
  7. Iterator<String> it = list.iterator();
  8. while (it.hasNext()) {
  9. String str = it.next();
  10. System.out.println(str);
  11. }
  12. // 使用for循环
  13. for (String str : list) {
  14. System.out.println(str);
  15. }
  16. }

4:使用for循环遍历set集合,但是不能遍历map集合,因为map集合没有实现Iterator接口

但是我们可以将map集合转化为set集合

遍历set集合:

  1. @Test
  2. public void testIteratorSet() {
  3. Set<String> set = new HashSet<String>();
  4. set.add("1");
  5. set.add("2");
  6. // 迭代器遍历
  7. Iterator<String> it = set.iterator();
  8. while (it.hasNext()) {
  9. String str = it.next();
  10. System.out.println(str);
  11. }
  12. // for循环遍历
  13. for (String str : set) {
  14. System.out.println(str);
  15. }
  16. }

遍历map集合:

a:keyset的方式

  1. @Test
  2. public void testIteratorMap() {
  3. Map<Integer, String> map = new HashMap<Integer, String>();
  4. map.put(1, "orange");
  5. map.put(2, "apple");
  6. map.put(3, "banana");
  7. // 使用迭代器
  8. Set<Integer> set = map.keySet();
  9. Iterator<Integer> it = set.iterator();
  10. while (it.hasNext()) {
  11. Integer key = it.next();
  12. String value = map.get(key);
  13. System.out.println(key + "=" + value);
  14. }
  15. System.out.println("...........");
  16. // 使用for循环
  17. for (Integer i : map.keySet()) {
  18. Integer key = i;
  19. String value = map.get(key);
  20. System.out.println(key + "=" + value);
  21. }
  22. }

b:entryset的方式

  1. @Test
  2. public void testIteratorMap2() {
  3. Map<Integer, String> map = new HashMap<Integer, String>();
  4. map.put(1, "orange");
  5. map.put(2, "apple");
  6. map.put(3, "banana");
  7. // 使用迭代器
  8. Set<Entry<Integer, String>> set = map.entrySet();
  9. for (Entry<Integer, String> en : set) {
  10. Integer key = en.getKey();
  11. String value = en.getValue();
  12. System.out.println(key + "=" + value);
  13. }
  14. System.out.println("................");
  15. // 使用增强for循环
  16. for (Entry<Integer, String> en : map.entrySet()) {
  17. Integer key = en.getKey();
  18. String value = en.getValue();
  19. System.out.println(key + "=" + value);
  20. }
  21. }

5:HashMap类底层的排序是hashcode,不是有序的,这时我们可以使用LinkedHashMap类

可以按照我们放入的顺序取出元素。

四:可变参数

方法名(类型 ...变量名称){

方法体;

}

  1. @Test
  2. public void testVariableArgs() {
  3. int sum = getSum(1, 2, 3, 4);
  4. System.out.println("sum=" + sum);
  5. }
  6.  
  7. public int getSum(int... nums) {
  8. int sum = 0;
  9. for (int i : nums) {
  10. sum += i;
  11. }
  12. return sum;
  13. }

可变参数注意点:

我们可以把可变参数看做一个数组:

  1. @Test
  2. public void testVariableArgs2() {
  3. int[] arr = new int[] { 1, 2, 3, 4 };
  4. System.out.println(getSum(arr));
  5. }

 

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. Sql建表语句

    create table dbo.[Finance_CityInfo] ([CityId] int identity(1,1) not null , [City] nvarchar(20) not n ...

  2. 第二百六十天 how can I 坚持

    晚上去看了个电影,<万万没想到>,挺好看的,豆瓣评分不高.网络啊. 互联网会让聪明的人越来越聪明. 明天去看寻龙诀了. 懒惰会生根发芽,哈哈. 睡觉了.

  3. 【WPF】【火车站点信息查询】

    全文涉及到的是C#和XAML 如果这两门语言并非你喜欢的语言,那可以关闭本网页了 本文介绍的是什么? 一个火车站点信息查询软件 本文涉及到的WPF基本知识 Task async await WebCl ...

  4. POJ 3660 Cow Contest (Floyd)

    http://poj.org/problem?id=3660 题目大意:n头牛两两比赛经过m场比赛后能判断名次的有几头可转 化为路径问题,用Floyd将能够到达的路径标记为1,如果一个点能 够到达剩余 ...

  5. POJ 1860 Currency Exchange (SPFA松弛)

    题目链接:http://poj.org/problem?id=1860 题意是给你n种货币,下面m种交换的方式,拥有第s种货币V元.问你最后经过任意转换可不可能有升值.下面给你货币u和货币v,r1是u ...

  6. Android应用开发学习之相对布局

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 相对布局RelativeLayout是指按照组件之间的相对位置进行布局,如一个组件在另一个组件的左边.右边.上边或下 ...

  7. SOS 调试扩展 (SOS.dll)

    http://blog.csdn.net/cslie/article/details/2158780 SOS 调试扩展 (SOS.dll) 提供公共语言运行时(CLR)内部环境的有关信息,帮助你在Wi ...

  8. OAuth 2.0

    国外 OAuth2.0 大全:http://oauth.net/2/ 国内经典:http://www.fising.cn/2011/03/%E4%B8%80%E6%AD%A5%E4%B8%80%E6% ...

  9. 改变UIView 的位置 Center和Frame

    网上找了一个,一般来说 有两种方法: 1.改变view 的Frame [cell setFrame:CGRectMake(<#CGFloat x#>, <#CGFloat y#> ...

  10. 什么是比特币(bitcoin)

    一.什么是比特币? 比特币是一种由开源的P2P软件产生的电子货币,是一种网络虚拟货币.比特币使用遍布整个P2P网络节点的分布式数据库来记录货币的交易,并使用密码学的设计来确保货币流通各个环节安全性.比 ...