java 构造不可变类集的使用方法】的更多相关文章

首先用到的就是Collections.unmodifiablexxx(         set.add("hello");         set.add("insert");         Set<String> unmodify=Collections.unmodifiableSet(set);         System.out.println(set);              } 16 }…
Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法?? 1 framework 4.5 (10万个api)1 2 Jdk8   57M1 3 Gialen项目2 4 播放器项目 3500个类2 5 Jquery 1.11 (api 305个)2 6 Wordpress 4.2   (函数api详单(约500个api)2 7 Html5  860个api2 7.1 Css2 8 Js  430个3 1 framework 4.5 (10万个ap…
成鹏致远 | lcw.cnblog.com |2014-02-04 JAVA类集 1.认识类集 类集的作用 类集实际上就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充 类集的特征 这种框架是高性能的 框架必须允许不同类型的类集以相同的方式和调度互操作方式工作 类集必须是容易扩展和修改的 对象数组中包含一组对象,但是对象数组使用的时候存在一个长度的限制,那么类集是专门解决这种限制的,使用类集可以方便的向数组中增加任意多个数据 对象数组的操作中基本上都要保证对象类型的一致性…
一.简单定义不可变对象(Immutable Objects)即对象一旦被创建,它的状态(对象的数据,也即对象属性值)就不能改变,反之即为可变对象(Mutable Objects).当满足以下条件时,对象才是不可变的:1. 对象创建以后其状态就不能修改.2. 对象的所有域都是final类型.3. 对象是正确创建的(在对象的创建期间,this引用没有逸出).不可变对象的类即为不可变类(Immutable Class).Java平台类库中包含许多不可变类,如String.基本类型的包装类.BigInt…
不可变类(immutable class)是指当创建了这个类的实例后,就不允许修改它的值了,也就是说,一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能被修改了. Java中所有基本类型的包装类都是不可变类如:Integer.Float,此外String也是不可变类. 所以就有了疑问,在程序中经常要修改数字,String这些变量,它们的实例不可修改该怎么实现呢? 如下列代码也不会报错 String s = 'Hello'; s += ' World!'; System.out.pri…
今天有人问我怎么增强一个类的功能.博客刚好没东西,今天就讲讲增强类. 增强的手段有三种类型: 1.继承或者实现接口:特点是被增强对象不能变,增强的内容不能变. 2.装饰着模式:特点是被增强对象可变,但增强内容不可变. 3.动态代理:特点是被增强对象可变,增强内容可变. 下面是三种对a对象进行增强的手段:  继承:AA类继承a对象的类型:A类,然后重写fun1()方法,其中重写的fun1()方法就是被增强的方法.但是,继承必须要知道a对象的真实类型,然后才能去继承.如果我们不知道a对象的确切类型…
问题引入 为了将某一数据类型的值限定在可选的合理范围内,比如季节只有四个:春夏秋冬. 什么是枚举类 Java5之后新增了enum关键字(他与class,interface关键字地位相同)用来定义枚举类,他是一个特殊的类. 可以有自己的:成员变量.方法.构造器.可以实现一个或多个接口. 一个Java源文件中最多只能定义一个public访问权限的枚举类,且改Java原文件必须和该枚举类的类名相同. 和普通类的简单区别: 1.默认继承的是java.lang.Enum类,非Object.因此不能显示的…
类的无参方法 类的方法由哪几部分组成? 方法的定义: 1.访问权限修饰符 2.方法返回的数据类型 3.方法的名称 4.方法的主体 成员变量和局部变量的区别有那些? ~ 作用域不同 - 成员变量的作用域在整个类内部都是可见的 - 局部变量的作用域仅限于定义它的方法 ~ 初始值不同 - Java 会给成员变量一个初始值 - Java 不会给局部变量赋予初始值 ~ 在同一个方法中,不允许有同名局部变量: 在不同的方法中,可以有同名局部变量 ~ 两类变量同名时,局部变量具有更高的优先级 如何定义类的方法…
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成地址值. package common_object; public class Demo extends Object{ } package common_object; public class DemoTest { public static void main(String[] args)…
Object类被称为上帝类,也被称为祖宗类.在定义Java类时,如果没有指定父类,那么默认都会去继承Object类.配合Java的向上类型转换,借助Object类就可以完成很多工作了. 在Object类中,有几个常用的方法,比如getClass().toString()和equals()这三个方法.它们在Object.java的实现如下:(Object.java的源码在Java安装目录下的src.zip中,其目录结构为src\java\lang\Object.java). public fina…
本文知识点(目录): 1.IO流(Input Output)    2.IO流技术的运用场景    3.File类的构造函数(方法)    4.File类的一些常用方法    5.实例(解析File类的常用方法)    6.附录1(扫描系统上的盘符和指定目录下的所有文件和文件夹)    7.附录2(在指定目录下,扫描出所有的指定类型的文件)    8.附录3(扫描电脑中所有的文件和文件夹,及下级目录下的所有文件和文件夹.或扫描指定盘符下的所有文件和文件夹)    9.附录4(删除磁盘中指定的文件…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.str;   public class ZiFuChuan {           public static String ss = "全局变量!!!!!!";     String s2 = null;     public int aa = 1 ;     int aa2;     double dou = 1.1;     Double d = new…
知识点:构造方法.继承.方法重载.方法重写 一. 定义一个点(Point)类,用来表示三维空间中的点(有三个坐标),要求如下: 1.可以生成具有特定坐标的点对象(构造方法): 2.提供可以设置三个坐标的方法(成员方法): 3.提供可以计算改点到另一个点的距离的方法(成员方法): 代码如下: 注:文件名为TestPoint.java(主类) public class Point{ double x,y,z; //构造方法 public Point(double _x,double _y,doubl…
Java注释: //:单行注释 /**/:多行注释 /** */:JavaDoc注释语法: 访问修饰符 返回值类型 方法名(){ 方法体 } 举例: public void run(){ System.out.println(""); } public String robball(){ String ball="球"; return ball; } 方法的返回值: 1.如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该返回值的类型 ret…
Math类提供了常用的一些数学函数,如:三角函数.对数.指数等.一个数学公式如果想用代码表示,则可以将其拆分然后套用Math类下的方法即可. Math.abs(12.3);                 //12.3 返回这个数的绝对值 Math.abs(-12.3);                //12.3 Math.copySign(1.23, -12.3);     //-1.23,返回第一个参数的量值和第二个参数的符号 Math.copySign(-12.3, 1.23);    …
重写toString方法,可以控制println打印的结构. 如果需要往hashSet或者HashMap中存,需要重写hashCode和equals方法,因为hashSet执行添加,以对象为参数删除,和contains等操作时,都会默认的先去比较对象的hashCode如果不同则会继续执行equals方法,如果两者比较的结果都是相同,那么这个对象就不会被存入hashSet.HashMap则会用同样的原理去比较键. 如果需要往treeSet中存需要该类implements Comparable接口,…
import仅仅包含导入操作,并不包含将字节码文件加载进内存这一动作,将字节码文件加载进内存是后续的实例化操作完成的. 例如通过import导入了一堆包和类,但是后续什么都没用(没用实例化),那么导入的东西是不会被加载进内存的. 而且import是编译期的,如果你在后续代码中没有使用到你导入的内容,那么import语句甚至不会编译和执行. 查看字节码文件可以看出,import的作用就是对你程序中要用到(实例)的东西进行署名(signature),当程序运行的时候好知道你实例化的对象的类的字节码文…
转自: http://www.blogjava.net/hilor/articles/150610.html 可变类和不可变类(Mutable and Immutable Objects)的初步定义:可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容.不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容.不可变类的实例一但创建,其内在成员变量的值就不能被修改. 如何创建一个自己的不可变类:.所有成员都是private.不提供对成员的改变方法,例如:setXXXX.确…
Java 不可变类 immutable object 不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值. 如JDK内部自带的很多不可变类:Interger.Long和String等. ** 不可变类,指的是 该类的实例不可变,而非指向该实例的引用的不可变** 优点 线程安全 当一个对象是不可变的,那么需要拷贝这个对象的内容时,就不用复制它的本身而只是复制它的地址,复制地址(通常一个指针的大小只需要很小的内存空间,具有非常高的效率.同时,对于引用该对象的其他变量也不会造成影响. 此外…
1.可变类和不可变类(Mutable and Immutable Objects)的初步定义: 可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容. 不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容.不可变类的实例一但创建,其内在成员变量的值就不能被修改. 2.如何创建一个自己的不可变类: 所有成员都是private 不提供对成员的改变方法,例如:setXXXX 确保所有的方法不会被重载.手段有两种:使用final Class(强不可变类),或者将所有类方法加上…
概念 Java的不可变类是指八个基础类型的包装类和String,他们的数据成员是不可变的.使用加法等操作时,其实是创建了一个新的对象. Java的final类是对类用关键字final进行修饰,说明该类是不可被继承的. 关联 不可变类为了保证其不可变性,通常实现上有以下几种规则: 成员变量是private final的,get返回对象成员变量的副本 初始化(使用构造函数)成员变量时,使用副本.不提供set函数. 方法或者类为final,防止子类修改其成员变量. 由于不可变类的成员变量不变,所以计算…
摘自<<Java 8 实战>> Collectors 类的静态工厂方法 工厂方法 返回类型 用于 toList List<T>  把流中所有项目收集到一个 List 使用示例: List<Dish> dishes = menuStream.collect(toList()); toSet Set<T> 把流中所有项目收集到一个 Set ,删除重复项 使用示例: Set<Dish> dishes = menuStream.collect…
Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问.具体用途如下: 1.static可以用来修饰类的成员方法.类的成员变量: 2.可以编写static代码块来优化程序性能. java里方法分为 static静态方法和普通方法: 所谓静态方法 是加了static修饰词的方法,我们使用的时候 一般…
摘自<java开发实战经典>李兴华.著 一对多的关系 一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,此时就可以通过类集进行关系的表示. 在定义Student类中包含了一个School属性,表示一个学生属于一个学校.在程序运行时,只需要传入School类的引用就可以完成这样的关系. 在定义School类时定义了一个List类型的属性,并指定其泛型类型是Student类型,这样一来就表示在一个School对象中会包含多个Student类型的引用. 最后在主函数设置…
声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/details/26744661),看代码和提问.讨论都更方便. Java中final的作用主要表如今三方面:修饰变量.修饰方法和修饰类.以下就从这两个方面来解说final的作用.在文末从final及类的设计安全性出发,论述了Java中String为何要被设计成不可变类. 1.final修饰变量 fina…
概念:不可变类的意思是创建该类的实例后,该实例的属性是不可改变的.java中的8个包装类和String类都是不可变类.所以不可变类并不是指该类是被final修饰的,而是指该类的属性是被final修饰的. 自定义不可变类遵守如下原则: 1.使用private和final修饰符来修饰该类的属性. 2.提供带参数的构造器,用于根据传入的参数来初始化属性. 3.仅为该类属性提供getter方法,不要提供setter方法. 4.如果有必要,重写hashCode和equals方法,同时应保证两个用equal…
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主要有最重要的三种实现:ArrayList,Vector,LinkedList,三种List均来自AbstracList的实现,而AbstracList直接实现了List接口,并拓展自AbstractCollection. 在三种实现中,ArrayList和Vector使用了数组实现,可以认为这两个是…
一.不可变类简介 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值.如JDK内部自带的很多不可变类:Interger.Long和String等. 可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类. 二.不可变类的优点 说完可变类和不可变类的区别,我们需要进一步了解为什么要有不可变类?这样的特性对JAVA来说带来怎样的好处? 线程安全 不可变对象是线程安全的,在线程之间可以相互共享,不需要利用特殊机制来保证同步问题,因为对…
一.不可变类简介 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值.如JDK内部自带的很多不可变类:Interger.Long和String(8种基本数据类型的包装类和String都是不可变类)等. 可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类. 下面的理解可能会易懂一些: {概念:不可变类的意思是创建该类的实例后,该实例的属性是不可改变的.Java中的8个包装类和String类都是不可变类.所以不可变类并不是指该类…
合集目录 Java语法专题1: 类的构造顺序 问题 下面的第二个问题来源于Oracle的笔试题, 非常经典的一个问题, 我从07年开始用了十几年. 看似简单, 做对的比例不到2/10. 描述一下多级继承中类的构造顺序 给定两段代码, 分别是父类和子类, 写出(或选择)正确的输出 代码如下 public class Base { public Base() { method(100); } public void method(int i) { System.out.println("Base::…