java5新特性静态引用、foreach、自动装箱和泛型枚举以及可变参数的总结

静态引用

导入(import)表示去找哪一个类,去哪一个包下去找哪些被使用到的类。

在java中有一个语言核心包:java.lang.

使用java.lang包中的API,不需要引用,直接能找到,但是,如果我们使用到的API不呼吁java.lang包甚至java.lang的字包(java.lang.reflect),此时,我们就得把使用到的API引入到当前的java文件中

语法:

import 被引用类的全限定名

如:import包*:去哪个包下去找哪些被使用到的类,此时,并不是说*就表示指定包中所有的类/接口,而是指在当前文件夹中使用到的属于该包的API(通俗来讲就是用到的时候才会去指向需要的类/接口)。

如果我们需要使用某一个类中的静态成员(字段/方法,内部类),此时我们有更加简单的方式来引用

语法:

import static 被引入类的全限定名.静态的成员

如:import java.util.Date;

import static 被引入类的全限定名.*

静态引入,属于语法糖,仅仅是为了方便程序猿操作简单,在开发中不推荐使用静态引用,因为都不知道静态成员到底来源于哪一个类

练习代码:

package com.test;
import static java.lang.Math.PI;
import static java.util.Arrays.*;import java.util.ArrayList;
import java.util.List;
public class StaticDemo {public static void main(String[] args) {/*不用再Math.PI*/System.out.println(PI);List<Integer> a = new ArrayList<>();/*此时不用写Arrays.asList*/a=asList(1,4,2,3);/*从大到小排序传统写法*/
/*		a.sort(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o2, o1);}});*//*lambda表达式写法*/a.sort((o1,o2)->Integer.compare(o2, o1));System.out.println(a);}
}
本来想看看反编译后的内容,可惜jad出问题了就把视频中的图片截下来当做参考吧!



由图可看出编译后还是传统写法。

方法的可变参数

参考博客:点击打开链接

String的工具类StringUtil

参考博客:点击打开链接

foreach操作

1.foreach循环的语句格式

for(数据类型 变量名:对象)
{
//循环体为引用了变量的Java语句
}
注意:
a.其中变量名可以是任意的但是数据类型必须与遍历对象的数据类型相同。
b.对象为一个容器,例如数组或是集合等
c.无法再循环中改变对象中的值,即任何在循环体中改变对象中的值都是无效的,对象中的值不会被改变。这也是foreach循环较for循环的重要区别,foreach实现对象的遍历代码更加简洁,for循环可以改变对象中的值。

2.代码实现

		Set<String> set = new HashSet<String>();set.add("1");set.add("2");set.add("3");set.add("4");set.add("5");set.add(String.valueOf((int)Math.random()*10));for (String string : set) {System.out.println(string);}


foreach和Iterator选用

  1.  for循环一般用来处理比较简单的有序的,可预知大小的集合或数组
  2.  foreach可用于遍历任何集合或数组,而且操作简单易懂,他唯一的不好就是需要了解集合内部类型
  3.  iterator是最强大的,他可以随时修改或者删除集合内部的元素,并且是在不需要知道元素和集合的类   型的情况下进行的(原因可参考第三点:多态差别),当你需要对不同的容器实现同样的遍历方式时,迭代器是最好的选择
代码练习:
package com.test;import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;public class MainDemo {public static void main(String[] args) {Set<String> set = new HashSet<String>();set.add("1");set.add("2");set.add("3");set.add("4");set.add("5");set.add(String.valueOf((int)Math.random()*10));System.out.println("------------之前状态---------------");for (String string : set) {System.out.println(string);}for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) {String next = (String)iterator.next();Integer of = Integer.valueOf(next);if(of>3){iterator.remove();//删除操作}}System.out.println("-------------删除后的状态--------------");for (String string : set) {System.out.println(string);}}
}


自动装箱和拆箱的设计以及缓存设计

推荐博客:点击打开链接

泛型

我的文章:点击打开链接

枚举

推荐博客:点击打开链接
代码练习:
package com.test;
enum Week{Mon,Stu,THU,FOu,FIR,SAT,SUN;
}
public class xx {Week we;void setWeek(Week we){this.we=we;}Week getWeek(){return we;}public static void main(String[] args) {xx x = new xx();x.setWeek(Week.Mon);if(x.getWeek().equals(Week.Mon)){System.out.println("星期一");}//Switch支持枚举类型switch(x.getWeek()){case Mon:System.out.println("星期一");break;case Stu:System.out.println("星期二");break;case THU:System.out.println("星期三");break;default :break;}//获取枚举对象Week wk = Week.valueOf("Mon");System.out.println(wk);String str ="hello";switch(str){}}
}















本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中堆和栈的完全解析

C中堆和栈的完全解析 内存分配方面&#xff1a; 堆&#xff1a; 操作系统有一个记录空闲内存地址的链表&#xff0c;当系统收到程序的申请时&#xff0c;会遍历该链表&#xff0c;寻找第一个空间大于所申请空间的堆结点&#xff0c;然后将该结点从空闲结点链表中删 除&#xff…

数据结构实验之图论四:迷宫探索

题目描述 有一个地下迷宫&#xff0c;它的通道都是直的&#xff0c;而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关&#xff1b;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点&#xff1f;输入 连续T组数据输入&#xff0c;每组数据第一行给出三个正整数&am…

心灵的旅行

http://wzrong.blog.163.com/blog/static/1326445772012214295364/ --心灵的旅行&#xff08;陈科儒&#xff09; http://www.qixingquan.com/article-143060-1.html --神山的召唤 http://www.qixingquan.com/thread-78730-1-1.html --一个人的远方&#xff0c;独行滇西北

java8新特性lambda表达式、函数式编程、方法引用和接口默认方法以及内部类访问外部变量

一提到java是一种什么语言&#xff1f; 大多数人肯定异口同声的说是一门面向对象的语言&#xff0c;这种观点从我们开始学java就已经根深蒂固了&#xff0c;但是学到java8新特性函数式编程的时候&#xff0c;我才知道java并不是纯面向对象的语言。 lambda表达式的详细教程 lam…

C++ 中export 关键字的尴尬处境

分离编译模式&#xff08;Separate Compilation Model&#xff09;允许在一处翻译单元&#xff08;Translation Unit&#xff09;中定义&#xff08;define&#xff09;函数、类型、类对象等&#xff0c;在另一处翻译单元引用它们。编译器&#xff08;Compiler&#xff09;处理…

图结构练习——最短路径

题目描述 给定一个带权无向图&#xff0c;求节点1到节点n的最短路径。 输入 输入包含多组数据&#xff0c;格式如下。 第一行包括两个整数n m&#xff0c;代表节点个数和边的个数。(n<100)剩下m行每行3个正整数a b c&#xff0c;代表节点a和节点b之间有一条边&#xff0c;权…

C++强大背后

在31年前(1979年)&#xff0c;一名刚获得博士学位的研究员&#xff0c;为了开发一个软件项目发明了一门新编程语言&#xff0c;该研究员名为Bjarne Stroustrup&#xff0c;该门语言则命名为——C with classes&#xff0c;四年后改称为C。C是一门通用编程语言&#xff0c;支持多…

javaWeb回忆思维导图

出处&#xff1a;https://blog.csdn.net/jackfrued/article/details/42617675 https://www.cnblogs.com/xieyupeng/p/6961667.html

如何理解const char*, char const*, char*const等

const char*, char const*, char*const的区别问题几乎是C面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C Programming Language里面给出过一个助记的方法&#xff1a; 把一个声明从右向左读。 char * const cp; …

查找练习 hash——出现过的数字

题目描述 有一个数据字典&#xff0c;里面存有n个数字(n<100000)&#xff0c;小明现在接到一个任务&#xff0c;这项任务看起来非常简单——给定m个数字&#xff0c;分别查询这m个数字是否出现在字典之中&#xff1b;但是考虑到数据量的问题&#xff0c;小明找到了善于编程的…

读过的最好的 C++ 开源代码

https://www.zhihu.com/question/21376384

数据结构实验之查找五:平方之哈希表

题目描述 给定的一组无重复数据的正整数&#xff0c;根据给定的哈希函数建立其对应hash表&#xff0c;哈希函数是H(Key)Key%P&#xff0c;P是哈希表表长&#xff0c;P是素数&#xff0c;处理冲突的方法采用平方探测方法&#xff0c;增量dii^2,i1,2,3,...,m-1 输入 输入一组测试…

Spring详细导包截图以及IOC和DI思想

思想 IOC DI Spring中的工厂(容器) ApplicationContext&#xff1a; BeanFactory(过时)&#xff1a; BeanFactory和ApplicationContext区别 BeanFactory&#xff1a; 1.Spring原始接口&#xff0c;针对原始接口实现类功能较为单一 2.是在getBean的时候才会生成类的实例…

毕业两年的我--奋斗中的程序员

又到一年毕业季&#xff0c;不知不觉&#xff0c;自己毕业快两年了&#xff0c;在这两年中&#xff0c;从一位小白程序员蜕化到现在的拥有两年经验的C程序员&#xff0c;这两年里面&#xff0c;不敢说成长有多快&#xff0c;进步有多大&#xff0c;但是感觉很踏实&#xff0c;每…

数据结构实验之查找七:线性之哈希表

题目描述 根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)Key%p,将关键字映射到长度为p的哈希表中&#xff0c;用线性探测法解决冲突。重复关键字放在hash表中的同一位置。 输入 连续输入多组数据&#xff0c;每组输入数据第一行为两个正整数N(N < 1000)…

spring配置讲解

Bean元素 Bean元素进阶 scope属性&#xff1a; 1.singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例 2.prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的. 3.request…

找女朋友

题目描述 山东理工大学有很多学生&#xff0c;当然也有很多美女&#xff0c;机械实验班的学委&#xff08;外号&#xff1a;大王八&#xff09;很想找个女朋友&#xff0c;但他想找个身高和自己相配的女生坐女朋友&#xff0c;现有理工大N个美女的身高数据&#xff0c;但由于N的…

情商低的七种表现,你占了几个

你身边有没有这样的人&#xff1a;大家刚刚还聊的热火朝天&#xff0c;却在他进门的瞬间&#xff0c;整场“冷冻结冰”&#xff0c;大家都各忙各的&#xff0c;避免与他交流。我们称这样的人为“冷场帝”。那么&#xff0c;“冷场帝”是如何养成的&#xff1f;这样的人通常情商…

spring属性注入

注入方式 set方法注入 构造函数注入 p名称空间注入 spel注入(#表示理解为引用) 练习代码&#xff1a; <!-- 第二天 set注入 index:索引 ref:引用对象 type:参数类型--><bean name"person" class"com.spring.bean.Person"><constructor-a…