===============================================================================================================

单例设计模式:

公共说明在任何地方都可以调用.     静态用来获取对象. 如果不是静态的,还需要用对象.XXX来获取对象,既然有对象了就不用获取对象了. 静态的就可以用  类名.方法  去间接获取对象了.

======================================================================================================================================

工具类的设计:

=========================================================================================================================================

基本数据类型包装类:

模拟基本类型包装类写法.  

八大基本类型包装类:

包装类的基本使用:

Integer.valueof(123): 返回一个表示指定的 int 值的 Integer 实例。

xxxvalue:八大基本类型的相互转换.

character没有(string str)   因为char是字节.  字符串是组合的字节.

  这里的123可以从str字符串类型转换成数.   字符串里不允许出现不可以转换成Integer的东西存在.  如"1321sdadfAS".

false

=====================================================================================================================================================

包装类中的缓存设计:

  推荐使用包装类, 包装类-128,127存在缓存设计.

包装类之间的比较用equals进行比较. 包装类对equals进行覆盖,   比较数值是否一样.

包装类的缓存设计(享元模式),本质就是缓存设计:
Byte,Short,Integer,Long:缓存[-128,127]区间的数据;
Character:缓存[0,127]区间的数据.
class CacheDemo{
public static void main(String[] args){
Integer i1=new Integer(123);
Integer i2=new Integer(123);
System.out.println(i1==i2);//false

Integer i3=Integer.valueOf(123);
Integer i4=Integer.valueOf(123);
System.out.println(i3==i4);//true

Integer i5=123;
Integer i6=123;
System.out.println(i5==i6);//true
System.out.println("---------------------------");
Integer i11=new Integer(250);
Integer i21=new Integer(250);
System.out.println(i1==i2);//false

Integer i31=Integer.valueOf(250);
Integer i41=Integer.valueOf(250);
System.out.println(i3==i4);//false

Integer i51=250;
Integer i61=250;
System.out.println(i5==i6);//false

}
}
上述结果怎么回事?
----在[-128,127]之间,就获取缓存中的数据,否则就进行new Integer操作
----自动装箱进行的就是Integer.valueOf()操作

在包装类中,比较值用equals比较.包装类型equals方法的底层使用了拆箱操作

======================================================

int和Intager区别:

Integer和int的区别:
1)默认值:
int的默认值是0
Integer的默认值是null
Integer类型的值既可以是null又可以是0
2)包装类中提供了该类型的相关的很多算法操作方法.
static String toBinaryString(int i):把十进制转换为二进制.
static String toOctalString(int i): 把十进制转换为八进制
static String toHexString(int i): 把十进制转换为十六进制.
3)在集合框架中,只能存储对象类型,不能存储基本数据类型
4)int和Integer不是同一类型
public void ooxx(int val){}
public void ooxx(Integer val){}
两者共存时,到底调用哪种方法?
若参数是int类型,调用第一个.Integer类型调用第二个.
5)方法中的基本类型变量存储在栈中,包装类型存放于堆中.
开发中建议使用包装类型.

===============================================================

final和包装类的更多相关文章

  1. ByteDance面试

    1.HashMap.HashSet源码解读 2.Http状态码.包头内容有哪些 响应头 说明 示例 状态 Access-Control-Allow-Origin 指定哪些网站可以跨域源资源共享 Acc ...

  2. String和包装类Integer\Double\Long\Float\Character 都是final类型

    String和包装类Integer\Double\Long\Float\Character\Boolean 都是final类型 不可以改变

  3. 在Java中String类为什么要设计成final?String真的不可变吗?其他基本类型的包装类也是不可变的吗?

    最近突然被问到String为什么被设计为不可变,当时有点懵,这个问题一直像bug一样存在,竟然没有发现,没有思考到,在此总结一下. 1.String的不可变String类被final修饰,是不可继承和 ...

  4. 包装类、object、单例模式、final、抽象类

    /*包装类*/ /*  byte   Byte  short   Short  int    Integer  long   Long  char   Character  float   Float ...

  5. 谈谈关键字final

    final:可用于修饰类.方法.变量,表示它修饰的类.方法和变量不可改变. (1)修饰变量:变量只能被赋值一次,赋值后不能更改.按照Java代码惯例,final变量就是常量,而且通常常量名要大写: ① ...

  6. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  7. 0024 Java学习笔记-面向对象-包装类、对象的比较、String常量池问题

    包装类 基本类型-->包装类 byte-->Byte short-->Short int-->Integer long-->Long char-->Characte ...

  8. 深入理解Java中的final关键字

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  9. Java学习_int和Integer的区别+包装类

    1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2. ...

随机推荐

  1. hql中in关键字的用法

    hql: from " + FoodComment.class.getName() + " f where f.id in :groupIds" 封装的方法: publi ...

  2. logback logback.xml常用配置详解 <filter>

    <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY,日志将立即被抛弃不再经过其他过滤器:返回NEUTRAL,有序列表 ...

  3. 被误解的MVC和被神化的MVVM(转)

    转载自:http://www.infoq.com/cn/articles/rethinking-mvc-mvvm 原文作者:唐巧 被误解的 MVC MVC 的历史 MVC,全称是 Model View ...

  4. Linux下使用Hexo搭建github博客

    找到一篇靠谱的博客,备份一下: ---------以下原文------------------ Nodejs安装 因为hexo是基于nodejs的应用,所以要先安装nodejs才可以.我这里以Ubun ...

  5. JavaScript备忘录

    提取字符串substring(start,end)substr(start [, length ])JavaScript substr() 方法 --

  6. C#设计模式

    自从上次记录完“重构之道”以后,查询设计模式挺麻烦的.就打算把原先写的设计模式系列合并一下. 设计原则 使用设计模式的根本原因就是适应需求变化,提高代码的复用率,使程序更具有扩展性和可维护性. SOL ...

  7. DOM(文档对象模型)

    1.定义: DOM是Document Object Model文档对象模型的缩写.是针对HTML和XML文档的一个API,通过DOM可以去改变文档. 例如:我们有一段HTML,那么如何访问第二层第一个 ...

  8. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    准备篇: CentOS 7.0系统安装配置图解教程 http://www.osyunwei.com/archives/7829.html 一.配置防火墙,开启80端口.3306端口 CentOS 7. ...

  9. ubuntu安装/卸载mysql

    1.安装mysql root@openstack001:/tmp# apt-get install mysql-server Reading package lists... Done Buildin ...

  10. System.Web.Http.Cors配置跨域访问的两种方式

    System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...