Java高新技术1---增强for循环 ---装箱与拆箱享元设计模式--自己写枚举--可变长度的参数

简介: 其实这些知识是我在 看张孝祥老师的Java视频的时候 记录的  ,我可以负责任的说 对于 入门人员来说  这部视频 是 精粹 ,可以 3天内 带你 进入 Java的 另一个 境界 。 话不多说 ,不信 自己去看吧  。

其实这些知识是我在 看张孝祥老师的Java视频的时候 记录的  ,我可以负责任的说 对于 入门人员来说  这部视频 是 精粹 ,可以 3天内 带你 进入 Java的 另一个 境界 。

话不多说 ,不信 自己去看吧  。。

1、可变长度的参数

Java  中允许以 ...代替可变长度的参数,从而减少方法的重载次数    例如

 void  add(int a ,int ... args)  //JVM自动把参数 args 当做一个 数组进行处理  可以很方便的 减少增加数据所花费的时间 


代码示例
package me.Test  ;
public class ImportTest
{
   public static void main(String []agrs)
   {
    System.out.println(add(1,2,3,45,56,3,2,4,5,3,2,4,5));
    System.out.println(add(1,2,3,4,5,6,7,8));
   }
  static int add(int a,int ... args)
   {
    int sum=a  ;
    for (int i=0 ;i<args.length;i++ )
     sum+=args[i] ;
    return sum ;
   
   }
}

 

2、增强for语句来迭代集合

JDK1.5之后增加了 新的 for语句  增强for语句    可以实现对一个 实现了 Iterable  接口的集合进行 迭代操作  
例如 
for (int arg:args)
{
   ...迭代for语句   其中args可以是数组 也可以是 集合  

}

代码示例

public class ImportTest
{
   public static void main(String []agrs)
   {
    System.out.println(add(1,2,3,45,56,3,2,4,5,3,2,4,5));
    System.out.println(add(1,2,3,4,5,6,7,8));
   }
  static int add(int a,int ... args)
   {
    int sum=a  ;
   // for (int i=0 ;i<args.length;i++ )
  //   sum+=args[i] ;
    for(int arg:args)
    { 
     sum+=arg ;
    }
    return sum ;
   
   }
}

 

 

3、装箱与拆箱 Java的 享元模式

在java中有一种 模式叫做 装箱 和拆箱       flyweight 享元模式

例如 

Integer  i= 55    ;      //那么自动把55 装箱成 Integer  对象 
System.out.println(i) ;  //自动拆箱 将Integer对象拆箱成 int型变量 输出  

 

Integer  i1= 55    ;
Integer  i2= 55    ;
Integer  j1= 355    ;
Integer  j2= 355    ;  

i1==i2    ;//结果为 true 
j1==j2 ;//结果为false      

原因是Java的享元模式 ,-128-127之间的数值 会存在 一个 缓存池中,下次使用的时候 先从缓存池中 取出 这个数据 ,而不会去分配它的内存  。
只有  一个字节以内的  数据才会存在缓存池中 。 
比如word中 我们输入 多个   aaaaa那么 如果为每个a分配一个 内存空间 那么 内存的浪费 很严重 ,这种享元模式
就是在使用的地方引用 同一个 数据 ,就是属性相同的 一字节以内的小对象  引用同一个对象 


不仅在自动拆箱和装箱中会有上述结果 就算我们自己手工创建的对象也有 享元模式 

Integer i1=Integer.valueOf(333);
Integer i2=Integer.valueOf(333) ;
i1==i2 ;//false  只有-128-127之间的数据才可以利用享元模式

 

 

4、手动来写一个 枚举类

 

Java在最初开始设计的时候没有引入 C中的枚举  但是  在JDK1.5之后 把枚举加到了 Java语言规范中  

枚举就是我们提定义好的变量  ;

比如我们在c中
enum Day={one,two,three}  ;

我们可以用Day 进行枚举常理的定义 
如果我们赋值的时候 值 不是 one  two three  也就是 0 1 2    那么编译器就会报错处理   

Day  Monday=Day.one ;  //如此来使用

 

1、利用 内部类  枚举  和 我们自己的类  来实现 枚举的简单实现 
package me.Test;
//利用 我们自己的类实现枚举的功能  ,同一个包中的类是可以相互引用的  每一个java文件中只能有一个 声明为public的类
 abstract  class MyEnumration    //只要有一个抽象方法的类 我们就要声明抽象类   我们不能直接实现这个类 但是可以通过匿名内部类来实现这个 抽象的 类
{
    private MyEnumration() {} ;    //定义一个私有构造函数 那么别人就不能定义对象了
    public static final MyEnumration Mon=new MyEnumration()
    {
     public  MyEnumration nextDay() 
     {
        
      return Sun ;   //因为是静态的所以不要用 this.来调用
     }
     
    } ;//利用内部类来返回抽象类对象
 public static  final MyEnumration Sun =new MyEnumration()
 {
  public  MyEnumration nextDay() 
  {
  
   return  Mon ;
  }
  
 };//同上 
 public  abstract MyEnumration nextDay();//抽象的方法是不应该指定一个 方法体的 
 public  String toString()    //重载toString方法 这是object基类的一个方法  所有类在输出地时候 自动调用这个方法 我们现在对这个方法进行重写
 {
  return this==Sun?"Sun":"Mon" ;
 }
 
 
}


public class EnumTest
{
  public static void main(String []agrs)
  {
    MyEnumration em=MyEnumration.Mon ;  //返回静态成员
    System.out.println(em); 
    System.out.println(em.nextDay());
  }
}

 

 

目录
相关文章
|
11天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
24 1
|
18天前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
28 7
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
10 2
|
18天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
25 4
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
16天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
31 1
|
18天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
37 2
|
6天前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
15天前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式