当前位置: 首页 > news >正文

取个网站建设公司名字网站内容优化的重要性

取个网站建设公司名字,网站内容优化的重要性,h5常用的编辑平台,网络平台维护 是什么工作Java 中的基本数据类型 Java 中有 8 种基本数据类型,分别为: 6 种数字类型: 4 种整数型:byte、short、int、long2 种浮点型:float、double 1 种字符类型:char1 种布尔型:boolean。 这 8 种基本…

Java 中的基本数据类型
Java 中有 8 种基本数据类型,分别为:

  • 6 种数字类型:
    • 4 种整数型:byteshortintlong
    • 2 种浮点型:floatdouble
  • 1 种字符类型:char
  • 1 种布尔型:boolean
    8 种基本数据类型的默认值以及所占空间的大小如下:
    在这里插入图片描述
    对于 boolean,官方文档未明确定义,它依赖于 JVM 厂商的具体实现。逻辑上理解是占用 1 位,但是实际中会考虑计算机高效存储因素。
    另外,Java 的每种基本类型所占存储空间的大小不会像其他大多数语言那样随机器硬件架构的变化而变化。这种所占存储空间大小的不变性是 Java 程序比用其他大多数语言编写的程序更具可移植性的原因之一(《Java 编程思想》2.2 节有提到)。

注意:

  1. Java 里使用 - 类型的数据一定要在数值后面加上 L,否则将作为整型解析。
  2. char a = 'h'char :单引号,String a = "hello" :双引号。
    这八种基本类型都有对应的包装类分别为:ByteShortIntegerLongFloatDoubleCharacterBoolean
    包装类型不赋值就是 Null ,而基本类型有默认值且不是 Null
    另外,这个问题建议还可以先从 JVM 层面来分析。
    基本数据类型直接存放在 Java 虚拟机栈中的局部变量表中,而包装类型属于对象类型,对象实例都存在于堆中。相比于对象类型, 基本数据类型占用的空间非常小。

《深入理解 Java 虚拟机》 :局部变量表主要存放了编译期可知的基本数据类型
booleanbytecharshortintfloatlongdouble)、对象引用(reference
类型,它不同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置)。

包装类型的常量池技术

Java 基本类型的包装类的大部分都实现了常量池技术。
Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回Trueor False

Integer 缓存源码:

public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);
}
private static class IntegerCache {static final int low = -128;static final int high;static {// high value may be configured by propertyint h = 127;}
}

Character 缓存源码:

public static Character valueOf(char c) {if (c <= 127) { // must cachereturn CharacterCache.cache[(int)c];}return new Character(c);
}private static class CharacterCache {private CharacterCache(){}static final Character cache[] = new Character[127 + 1];static {for (int i = 0; i < cache.length; i++)cache[i] = new Character((char)i);}}

Boolean 缓存源码:

public static Boolean valueOf(boolean b) {return (b ? TRUE : FALSE);
}

如果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡。
两种浮点数类型的包装类 FloatDouble 并没有实现常量池技术。

Integer i1 = 33;
Integer i2 = 33;
System.out.println(i1 == i2);// 输出 trueFloat i11 = 333f;
Float i22 = 333f;
System.out.println(i11 == i22);// 输出 falseDouble i3 = 1.2;
Double i4 = 1.2;
System.out.println(i3 == i4);// 输出 false

下面来看一下问题。下面的代码的输出结果是 true 还是 false 呢?

Integer i1 = 40;
Integer i2 = new Integer(40);
System.out.println(i1==i2);

Integer i1=40 这一行代码会发生装箱,也就是说这行代码等价于 Integer i1=Integer.valueOf(40) 。因此,i1 直接使用的是常量池中的对象。而Integer i2 = new Integer(40) 会直接创建新的对象。
因此,答案是 false
记住:所有整型包装类对象之间值的比较,全部使用 equals 方法比较。
在这里插入图片描述

自动装箱与拆箱原理

什么是自动拆装箱
  • 装箱:将基本类型用它们对应的引用类型包装起来;
  • 拆箱:将包装类型转换为基本数据类型;
    举例:
Integer i = 10;  //装箱
int n = i;   //拆箱

上面这两行代码对应的字节码为:

   L1LINENUMBER 8 L1ALOAD 0BIPUSH 10INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;PUTFIELD AutoBoxTest.i : Ljava/lang/Integer;L2LINENUMBER 9 L2ALOAD 0ALOAD 0GETFIELD AutoBoxTest.i : Ljava/lang/Integer;INVOKEVIRTUAL java/lang/Integer.intValue ()IPUTFIELD AutoBoxTest.n : IRETURN

从字节码中,可以发现装箱其实就是调用了 包装类的valueOf()方法,拆箱其实就是调用了 xxxValue()方法。
因此,

  • Integer i = 10 等价于 Integer i = Integer.valueOf(10)
  • int n = i 等价于 int n = i.intValue()
    注意:如果频繁拆装箱的话,也会严重影响系统的性能。应该尽量避免不必要的拆装箱操作。
http://www.yayakq.cn/news/573062/

相关文章:

  • 做网站要钱嘛金戈西地那非片能延时多久
  • 视觉中国网站学做电商需要多少钱
  • 淘宝网站是谁做的好贵州省住房和城乡建设网站
  • 河北省住房和城乡建设厅网站官网网页设计说明万能模板
  • 淄博周村网站建设定制手机网页源码
  • 东莞市住房和城乡建设厅网站珠海室内设计公司排名
  • 桂林论坛网站有哪些链接点开网页表白的网站怎么做的
  • 酒店网站建设协议wordpress单页淘宝客主题
  • 网站分站原理游戏网站排行榜前十名
  • 电子商务网站面临的安全隐患有哪些青冈县网站建设
  • 地方门户网站盈利自己做电影网站怎么赚钱
  • 网站开发专业就业指导建设街小学网站
  • 省建设厅执业资格注册中心网站小程序app软件开发公司
  • 网站地图提交入口网站换模板对seo
  • 图解asp.net网站开发实战免费制作论坛网站
  • 建设网商城网站需要在那里备案wordpress调用标签搜索结果出图
  • 图书馆网站建设公司滨州做网站的
  • 服务型网站的营销特点模板式网站建设
  • 禹州 什么团购网站做的好域名申请好了 要怎么做网站
  • 相应式网站营销推广公司经营范围
  • dede游戏网站源码个人网站写什么好
  • 网站建设 推荐滁州注册公司流程和费用
  • 营销型网站推广安徽建设工程信息网新网站哪儿登陆
  • 做产品网站需要注意2万元建设网站贵吗
  • 银川做网站建设seo外包公司优化
  • 网站引导页面制作的四个任务名称cad图纸免费下载网站
  • 传媒公司网站制作wordpress手机如何登陆
  • 做多肽的都有哪些网站对网站建设更新情况的通报
  • 山西城乡和建设厅网站首页用手机怎样免费做网站
  • 门户网站等保二级建设方案wordpress 后台代码