final和包装类
===============================================================================================================
单例设计模式:
公共说明在任何地方都可以调用. 静态用来获取对象. 如果不是静态的,还需要用对象.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和包装类的更多相关文章
- ByteDance面试
1.HashMap.HashSet源码解读 2.Http状态码.包头内容有哪些 响应头 说明 示例 状态 Access-Control-Allow-Origin 指定哪些网站可以跨域源资源共享 Acc ...
- String和包装类Integer\Double\Long\Float\Character 都是final类型
String和包装类Integer\Double\Long\Float\Character\Boolean 都是final类型 不可以改变
- 在Java中String类为什么要设计成final?String真的不可变吗?其他基本类型的包装类也是不可变的吗?
最近突然被问到String为什么被设计为不可变,当时有点懵,这个问题一直像bug一样存在,竟然没有发现,没有思考到,在此总结一下. 1.String的不可变String类被final修饰,是不可继承和 ...
- 包装类、object、单例模式、final、抽象类
/*包装类*/ /* byte Byte short Short int Integer long Long char Character float Float ...
- 谈谈关键字final
final:可用于修饰类.方法.变量,表示它修饰的类.方法和变量不可改变. (1)修饰变量:变量只能被赋值一次,赋值后不能更改.按照Java代码惯例,final变量就是常量,而且通常常量名要大写: ① ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0024 Java学习笔记-面向对象-包装类、对象的比较、String常量池问题
包装类 基本类型-->包装类 byte-->Byte short-->Short int-->Integer long-->Long char-->Characte ...
- 深入理解Java中的final关键字
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- Java学习_int和Integer的区别+包装类
1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2. ...
随机推荐
- 实体类和DataTable的转换
引子 最近在项目中在数据库查询的时间,总是要用到数据表到实体类对象列表的转化,自己封装了一个转换的方法,用起来还比较方便,记下来,以后可以重复使用,原理就主要是利用反射,当然有更好的ORM框架可以实现 ...
- 一个简单oop的changeTab
好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...
- 数塔取数 基础dp
从低端向上,每个结点取下一层左右结点最大值和本身价值相加,dp[0][0]为最后结果 #include<iostream> #include<algorithm> #inclu ...
- background-size
语法: background-size:length|percentage|cover|contain length:设置背景图像的宽度和高度, 第一个值为宽度,第二个值为高度. 如果只设置一个值,则 ...
- 如何运行Spark程序
[hxsyl@CentOSMaster spark-2.0.2-bin-hadoop2.6]# ./bin/spark-submit --class org.apache.spark.examples ...
- HTTP Request Method共计15种
更多信息可参考http://tools.jb51.net/table/http_request_method
- MapControl图层删除或添加触发监听事件
监听MapControl中对于图层添加和删除的事件 IActiveViewEvents_Event m_MapActiveViewEvents = m_mapControl.Map as IActiv ...
- vim简单使用
摘自:http://blog.csdn.net/niushuai666/article/details/7275406 一.安装vim sudo apt-get install vim 二 ...
- SQLite
什么是SQLite SQLite是一款轻型的嵌入式数据库 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还快 ...
- mybatis:choose when otherwise标签
choose标签是按顺序判断其内部when标签中的test条件是否成立,如果有一个成立,则 choose 结束. 当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的 ...