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

单例设计模式:

公共说明在任何地方都可以调用.     静态用来获取对象. 如果不是静态的,还需要用对象.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. [LeetCode] Restore IP Addresses 复原IP地址

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  2. Winscp开源的SSH|SFTP

    WinSCP 主要功能 图形用户界面 多语言与 Windows 完美集成(拖拽, URL, 快捷方式) 支持所有常用文件操作,支持基于 SSH-1.SSH-2 的 SFTP 和 SCP 协议 支持批处 ...

  3. Beta版本冲刺计划及安排

    经过紧张的Alpha阶段,很多组已经从完全不熟悉语言和环境,到现在能够实现初步的功能.下一阶段即将加快编码进度,完成系统功能.强化软件工程的体会.Beta阶段的冲刺时间为期七天,安排在2016.12. ...

  4. Mysql操作语句

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这 ...

  5. hibernate入门案例

    最近准备学ssh,今天学了一下hibernate,用的是hibernate4,现在已经出5了:配置文件很容易写错,写配置文件的时候尽量复制. 需要的jar包如下:(jar包我是直接放在项目工程里面了, ...

  6. Android系统全貌 (转)

    转自Gityuan的Android开篇,对自我学习作进一步整理. Android系统以Linux内核作为基底,上层采用Native层和Java层.系统分为内核空间和用户空间,并通过系统调用(Sysca ...

  7. BZOJ 2006: [NOI2010]超级钢琴

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2613  Solved: 1297[Submit][Statu ...

  8. HTML5学习总结-番外05 移动终端适配

    一 viewport 在使用移动端设备浏览网页时,移动端浏览器是直接把整个页面放到一个虚拟的视图里来显示的,通常来说这个虚拟的视图大小会比手机屏幕大,用户可以通过手势操作来平移.缩放这个视图. 如果不 ...

  9. pandas read table

    http://pandas.pydata.org/pandas-docs/stable/10min.html import pandas as pd res = pd.read_table(" ...

  10. web应用中浏览器与服务端的编码和解码

    转自:http://blog.sina.com.cn/s/blog_87cb63e50102w2b6.html 以下为正文: ************************************* ...