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

单例设计模式:

公共说明在任何地方都可以调用.     静态用来获取对象. 如果不是静态的,还需要用对象.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. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  2. iOS中使用正则

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  3. HYSBZ 2038 莫队算法

    小Z的袜子(hose) Time Limit:20000MS     Memory Limit:265216KB     64bit IO Format:%lld & %llu Submit  ...

  4. MessageDialog

    var messageDialog = new Windows.UI.Popups.MessageDialog("Media player components unavailable&qu ...

  5. jquery $.extend()扩展插件获取焦点或失去焦点事件

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 通过维基API实现维基百科查询功能

    通过英文维基的免费API,可以实现对维基百科的搜索查询或者标题全文查询等,尝试了一下通过title实现全文查询,返回的结果是wikitext格式,暂时不知道该如何应用,所以仅实现了查询功能,可以返回最 ...

  7. sql 单个字段去重查询 distinc 和 group by的效率问题

    sql 查询 distinc用法 distinct 和group by都需要排序,一样的结果集从执行计划的成本代价来看差距不大,但group by 还涉及到统计,所以应该需要准备工作.所以单纯从等价结 ...

  8. 【翻译】如何在AJAX生成的内容中再次运行Prism.js

    一.前言 最近用一个十分轻量级的网页代码高亮Js库,应用到项目中发现了一个问题,对于静态的已经写好的代码,Prism的高亮插件是没有问题的,但是通过Ajax异步获取数据并修改DOM时发现,Prism高 ...

  9. ThinkPhp 3.2 数据的连贯操作

    ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单, 假如我们现在要查询一个User表 ...

  10. Table 表单样式

    <style> table th { white-space: nowrap; background-color: #f5f5f5; height:30px; font-size:14px ...