一:静态导入
语法: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. find in linux

    find命令的作用是在目录中根据文件名搜索文件find 列出当前目录及其子目录的所有文件和文件夹的完整路径.find -name Help.java 在当前目录及其子目录中搜索文件名为Help.jav ...

  2. homework-02,第二次作业——寻找矩阵最大子序列和

    经过漫漫漫~~~~~~~~~~~~~~长的编译和调试,第二次作业终于告一段落了 先放出源码,思路后面慢慢道来 #include<stdio.h> #include<stdlib.h& ...

  3. 51单片机或PLC驱动3.5寸至52寸的数字TFTLCD屏、VGA接口显示器、电视机

    http://www.21easyic.com/yx/VGA%E6%8E%A7%E5%88%B6%E6%9D%BF.htm

  4. [iOS基础控件 - 6.9] 聊天界面Demo

    A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话 ...

  5. 自定义使用AVCaptureSession 拍照,摄像,载图

    转载自 http://blog.csdn.net/andy_jiangbin/article/details/19823333 拍照,摄像,载图总结 1 建立Session  2 添加 input  ...

  6. Global.asax.cs介绍

    转载  http://www.cnblogs.com/tech-bird/p/3629585.html ASP.NET的配置文件 Global.asax--全局应用程序文件 Web.config--基 ...

  7. uva10474 简单排序查找 一次AC

    题目很简单,加上读题20分钟一次AC.还是用到了快排qsort. #include<iostream> #include<cstdlib> using namespace st ...

  8. CoordinatorLayout的简单应用(材料设计新控件)

    CoordinatorLayout字面意思为:协调布局,一般作为根布局使用.关于这个布局,记录一下两个用法,备忘. 一.配合 FloatingActionBar 使用 <?xml version ...

  9. 使用IIS Express

    1.IIS Express 概述 IIS Express是一个微软推出的一款免费,且小型.轻量特别适合ASP.NET开发人员使用的Web开发服务器.在没有IIS Express之前,开发人员只能使用下 ...

  10. 一个简洁通用的调用DLL函数的帮助类

    本次介绍一种调用dll函数的通用简洁的方法,消除了原来调用方式的重复与繁琐,使得我们调用dll函数的方式更加方便简洁.用过dll的人会发现c++中调用dll中的函数有点繁琐,调用过程是这样的:在加载d ...