zoukankan      html  css  js  c++  java
  • java学习——基础入门(1)

    本文为学习笔记,留作自用,不会记载的特别详细,如有错误,欢迎指正

    1. 关于java中常用数据类型的长度

    byte/1,char/2(因为java用的是Unicode编码,固定为2字节),short/2,

    int/4(当时大多数系统为32位系统,涉及到组原和操作系统相关知识,4字节有助于加快计算速度),

    float/4,long/8.double/8

    2. 关于Integer以及缓存池

    有以下样例(==未重写情况下自动判断两边是否为同一个对象)

     首先,引用类型Integer的初始化方法有2种,

    (1)调用构造函数,会创建新的Integer对象

    (2)valueOf函数

    这里我们可以看到一个很有趣的地方,当i的范围在low和high之间,会直接返回一个

    IntegerCache.cache数组中的元素,即已存在对象而不是重新创建一个对象,否则的话就重新创建。

    我们把low,high之间的数组元素称作缓存池,当自动装箱的值在这个范围内时,返回的是同一个对象。

    范围外则重新创建,因此不是同一个对象,所以z=k,g!=h

    从上图的IntegerCache源码中,我们可以看到缓存池的上下限默认为(low)-128,(high)127

    low是固定的,但hign是可以修改的,(下面这段是百度到的,仅作参考StackOverflow : Differences between new Integer(123), Integer.valueOf(123) and just 123)

    在 jdk 1.8 所有的数值类缓冲池中,Integer 的缓冲池 IntegerCache 很特殊,这个缓冲池的下界是 -
    128,上界默认是 127,但是这个上界是可调的,在启动 jvm 的时候,通过 -XX:AutoBoxCacheMax=
    <size> 来指定这个缓冲池的.大.小,该选项在 JVM 初始化的时候会设定.一个名为
    java.lang.IntegerCache.high 系统属性,然后 IntegerCache 初始化的时候就会读取该系统属性来决定上
    界。

    2. String

    (1)变与不变

    String是final修饰的char数组,因此不可变,所以是线程安全的

    SringBuilder、StringBuffer可变,前者线程不安全,后者相反

    (2)关于字符串常量池

    String的2种初始化方法因这个会产生差异。

    为了提高效率,JDK提供了字符串常量池,可以理解为

    缓存,当我们使用String str=“a”这种方法创建对象时,会先查询常量池中是否已存在,已有则

    之际返回该对象的引用,不再创建新的对象,否则会创建一个新的对象并返回。

    而使用new创建对象时则不会,不管相同字符串被创建了多少次,都会创建一个新的对象。

    同时String还提供了intern()方法,可以返回一个与本对象相同的,来自常量池的引用,相当于调用了第1种

    初始化方法。

    注意:只有在编译时已确定字符串内容的对象才会被加入常量池,参考下图str4,str5。

    争取早日不再是一只菜鸡
  • 相关阅读:
    获取dbf中的表名
    dbf 工程模式连接(vfp c# )
    SQL Server插入中文数据出现乱码问题
    给老婆写的带返回的2048(数据库存储)
    BundleConfig包含js,css失败
    (wp8.1开发)添加数据(SQLite)库到app
    (wp8.1开发)触摸键从推出变返回
    java基础-jdk工具包
    java基础-开发工具IDEA
    java高级-动态注入替换类Instrumentation
  • 原文地址:https://www.cnblogs.com/jchen104/p/14619915.html
Copyright © 2011-2022 走看看