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,一经查实,立即删除!

相关文章

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

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

javaWeb回忆思维导图

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

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;每…

spring配置讲解

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

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

你身边有没有这样的人&#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…

你所不知道的C和C++运行库

转自&#xff1a;http://blog.csdn.net/ithzhang/article/details/20160009 你所不知道的C和C运行库    周五晚&#xff0c;小雨&#xff0c;少见的未加班。无聊&#xff0c;遂准备写一篇博客&#xff0c;介绍一下C和C运行库&#xff0c;只因发现工作几年的人对此一知半解的…

使用注解配置spring如@Compnent、@Service、@Consroller、@scope和@value的使用

步骤 1.导包42spring-aop如图&#xff1a;为学习到该阶段需要用到的包(里面的aoptest是spring和junit整合测试的时候用到的)2.为主配置文件引入新的命名空间(约束)3.开启使用注解代理配置文件<?xml version"1.0" encoding"UTF-8"?> <beans xmln…

java实现深度优先搜索 (DFS) 算法

度优先搜索&#xff08;Depth First Search&#xff0c;DFS&#xff09;算法是一种用于遍历或搜索图或树的算法。这种算法从一个节点开始&#xff0c;沿着一条路径尽可能深地搜索&#xff0c;直到遇到不能继续前进的节点时返回上一个节点&#xff0c;然后继续搜索其他路径。具体…

spring整合JDBC

文章目录spring提供了很多模板整合Dao技术spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术.如何用Spring中的jdbc模板对数据库操作&#xff1a;spring配置进阶内容JDBCDaoSupport的使用spring提供了很多模板整合Dao技术 因为在jdbc、Hibernate、Mybatis中都有对数据…

spring中aop事务

文章目录事务为什要用到Spring中AOP事务事物的特性 ACID事务并发问题事务的隔离级别spring事务管理事务操作事务操作对象spring管理事务的属性介绍spring管理事务方式编码式xml配置(aop)注解配置Transactional注解在方法上添加Transactional注解在类上添加实际案例xml配置注入a…

Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构

文章目录Mybatis介绍jdbc操作数据库原生写法使用jdbc编程问题总结Mybatis架构Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个…

利用Mybatis写第一个数据库操作的程序

文章目录mybatis下载业务需求环境搭建加入配置文件创建pojosql映射文件加载映射文件实现根据id查询用户测试程序&#xff1a;效果mybatis下载 mybaits的代码由github.com管理 下载地址&#xff1a;https://github.com/mybatis/mybatis-3/releases 下载的mybatis文件如下&#…

利用Mybatis对数据库进行增删改查操作

文章目录mybatis模糊查找先来了解一下 #{}和${}的使用parameterType和resultType的使用selectOne和selectList的使用mysql自增主键返回方法一&#xff1a;mysql的函数函数返回方法二&#xff1a;定义useGeneratedKeys为true返回Mysql使用 uuid实现主键看到UUID和自增长的id想必…

聚合和组合的关系

转自&#xff1a;http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 记得在当时学习uml总是不好分清聚合与组合的关系&#xff0c;找工作时特地复习了这块的内容&#xff0c;结果正巧被面试官问道&#xff0c;这两天又在搞这块的内容&#xff0c;对聚合与组合…

关联和依赖的区别

最近研究设计模式&#xff0c;看类图有点发虚&#xff01;有些关系搞的不是很清楚。所以整理一下&#xff1a; 类与类之间由弱到强关系是: 没关系 > 依赖 > 关联 > 聚合 > 组合。 类和类之间八竿子打不着那就是没关系&#xff0c;这个没啥歧义。 依赖(dependenc…

Mybatis解决jdbc编程的问题以及mybatis与hibernate的不同

Mybatis解决jdbc编程的问题: 1、 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能&#xff0c;如果使用数据库连接池可解决此问题。 解决&#xff1a;在SqlMapConfig.xml中配置数据连接池&#xff0c;使用连接池管理数据库链接。 2、 Sql语句写在代码中造成代码不…

Mybatis中Mapper动态代理方式

文章目录开发规范Mapper接口开发需要遵循以下规范Mapper.xml(映射文件)UserMapper(接口文件)加载UserMapper.xml文件总结selectOne和selectList:namespace:开发规范 Mapper接口开发方法只需要程序员编写Mapper接口&#xff08;相当于Dao接口&#xff09;&#xff0c;由Mybatis…

数据结构实验之数组二:稀疏矩阵

题目描述 对于一个n*n的稀疏矩阵M(1 < n < 1000)&#xff0c;采用三元组顺序表存储表示&#xff0c;查找从键盘输入的某个非零数据是否在稀疏矩阵中&#xff0c;如果存在则输出OK&#xff0c;不存在则输出ERROR。稀疏矩阵示例图如下&#xff1a; 输入 连续输入多组数据…