精华内容
下载资源
问答
  • Java数据类型分为基本数据类型与引用数据类型。 1、 基本数据类型 byte:Java最小的数据类型,内存占1个字节(8 bit),取值范围-128~127,默认值0 short:短整型,2个字节(16 bit),取值范围-...

    Java数据类型分为基本数据类型与引用数据类型。
    在这里插入图片描述

    1、 基本数据类型

    • byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0

    • short:短整型,2个字节(16 bit),取值范围-32768~32717,默认值0

    • int:整型,用于存储整数,在内存中占4个字节,取值范围-2147483648~2147483647,默认值0

    • long:长整型,在内存中占8个字节-263~263-1,默认值0L

    • float:浮点型,在内存中占4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0

    • double:双精度浮点型,用于存储带有小数点的数字,在内存中占8个字节,默认值0

    • char:字符型,用于存储单个字符,内存中占2个字节,取值范围0~65535,默认值为空

    • boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false

    2 、引用类型

    Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。引用类型分3种(5种):类,接口,数组(枚举,注解);

    • 类(Class):所有的类,无论是Java自身已经存在的,还是用户后来创建的;
      Objec类: 它是所有类的父类,每个类都实现这个类的方法;用Object 可以定义所有的类;
      String类: String类代表字符串,

    • 接口(interface): 系统自带或者用户创建的

    • 数组(array): 系统自带或者用户创建的

    3 、Java中的数据类型在内存的存储原理

    • 基本数据类型的存储原理
      所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,Java语言里面八种数据类型是这种存储模型 (对于整型定义数值不在(-128~127)之间的话 定义时会在堆中创建对象);
    • 引用类型的存储原理
      引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”(存储对象在内存堆上的地址)是存储在有序(先进后出)的内存栈上的,而对象本身的值存储在内存堆上的

    #基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的

    # #不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。

    补充说明:Java String 和 new String()的区别

    (1) String str1 = “abcd"的实现过程:首先栈区创建str1引用,然后在String池(常量池:独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd”;

    • 如果后来又定义了字符串变量 str2 = “abcd”,则直接将str2引用指向String池中已经存在的“abcd”,不再重新创建对象,此时比较str1==str2,返回值true;
    • 当str1进行了赋值(str1=“abc”),则str1将不再指向"abcd",而是重新指String池中的"abc",此时如果定义String str3 = “abc”,进行str1 == str3操作,返回值为true,因为他们的值一样,地址一样;
    • str1 = “abc”+“d”;拼凑的“abcd”时,此时与str1==str2,返回值true,因为他们是在编译期确定,都指向静态池中的“abcd”,他们的值一样,地址一样;。
    • 但是如果内容为"abc"的str1进行了字符串的+连接str1 = str1+“d”,此时str1指向的是在中新建的内容为"abcd"的对象,因为此时str1 = str1+"d"是在运行期创建的 编译期并未识别str1,即此时进行str1==str2,返回值false,因为地址不一样。

    (2) String str3 = new String(“abcd”)的实现过程:直接在堆中创建对象。如果后来又有String str4 = new String(“abcd”),str4不会指向之前的对象,而是重新创建一个对象并指向它,所以如果是执行str3==str4 则返回值是false,因为两个对象的地址不一样,如果是执行str3.equals(str4),返回true,因为内容相同。

    下篇介绍“==”与equals的区别

    本文参kao其他文章,原文在:https://www.cnblogs.com/Latiny/p/8099581.html

    展开全文
  • Java 数据类型(基本数据类型、引用数据类型)

    千次阅读 多人点赞 2013-12-11 23:40:11
    Java 数据类型(基本数据类型、引用数据类型) 简单的介绍

    一. Java数据类型概览


    二. Java中八大基本数据类型

    类型名称类型定义取值范围
    boolean布尔值,作二元判断true, false
    byte8位有符号整数-128 ~  127
    short16位有符号整数-32768 ~ 32767
    int32位有符号整数-2147483648(-231)~ 2147483647(231-1)
    long64位有符号整数-263~ (263-1)
    float32位浮点数1.4E-45 ~ 3.4028235E38
    double64位浮点数4.9E-324 ~ 1.7976931348623157E308
    char16位Unicode字符0 ~ 65535

    注意:

    (1)Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的“E+数字”表示E之前的数字要乘以10的多少倍。

       比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

    (2)Java语言中,默认的整数类型是int类型,声明long类型的时候,后面必须要加个l(字母L的小写)或者L,建议使用大写L,防止和数字1混淆,如:30L;

    (3)Java语言中,默认的浮点数类型是double,声明float类型的时候,后面必须添加字母f或者F,如3.14F,3.14f;

    (4)Java语言中,char类型为16位Unicode字符,Unicode字符中的取值不存在负数范围,所以它的取值范围为 0 ~ 65535,—— 有点类似 “无符号数”;


    三. Java中八大基本数据类型的转换

    (1)boolean不可以转换为其他的数据类型;

    (2)整数型,浮点类型,字符型是可以相互转换的,转换时遵守下面的原则:

         a) 容量小的类型自动转换为大的类型,数据类型按容量大小排序为:

              byte, short, char < int < long <float < double

         b) byte, short, char 三种类型间不会相互转换,他们三者在计算时,首先会转换为int类型;

         c) 容量大的类型在转换为小的类型的时候,必须加上强制转换符,此时可能造成精度降低或者溢出问题;

         d) 有多种数据类型混合计算的时候,系统首先自动转换为容量最大的那个类型再来继续计算;

         e) 默认的浮点数类型是double,如:1.2; 默认的整数类型是int类型,如:1;


    四. 关于字符串问题

         记得我上学那会,还把String类型当做一个基本数据类型,现在想想真是可笑! String是java.lang.String包下的一个类,也就是引用类型中的类类型(说白了它就是一个类),

         在Java中java.lang.* 下的所有包都是自动引入的,所以同学们可要注意了!

    展开全文
  • Java中八大基本数据类型详解

    万次阅读 2020-12-04 11:06:42
    自从Java发布以来,基本数据类型就是Java语言的一部分,分别是 byte, short, int, long, char, float, double, boolean .当然围绕着这些基本数据类型衍生出来了很多面试题,但是说实话,工作中基本用不到

    八大基本数据类型

    自从Java发布以来,基本数据类型就是Java语言的一部分,分别是***byte, short, int, long, char, float, double, boolean***.当然围绕着这些基本数据类型衍生出来了很多面试题,但是说实话,工作中基本用不到

    例如:

    ​ boolean 占几个字节,char 是否可以表示汉字 等等

    其中八大类型又可以分为四种,也就是下面的划分:

    ​ 整型:byte, short, int, long

    ​ 字符型:char

    ​ 浮点型:float, double

    ​ 布尔型:boolean

    ​ 在详细介绍之前,先科普一下,Java中最小的计算单元为***字节***,1字节=8位(bit)。下面我们列出了每个基本类型对应的默认值

    数据类型默认值
    byte0
    short0
    int0
    long0L
    float0.0f
    double0.0d
    char‘\u0000’
    String (or any object)null
    booleanfalse

    这里还要科普一点,java 编程语言是一门静态类型的编程语言,也就是说你必须先申明变量然后才能使用它,所以你必须不要先申明变量的类型,就像下面一样

    int test = 1;
    

    这样就告诉了你的程序,test 变量已经存在,并且是int 类型,拥有初始值是1,java 中的变量类型大致分为两类,一类是基本类型,也就是我们今天学的这种,另外一类是引用类型。

    为什么需要基本类型

    其实在学习这一节之前你需要有点基本知识,那就是包装类型,你可以看我写的这一篇文章Java数据类型—包装类,你只需要知道java 为八大基本了下都提供了包装类,而且在文章中提到了Java 是面向对象的编程语言,那么Java 为什么有提供了基本数据类型,这种不属于对象类型的数据类型呢?

    这是因为在Java 中对象的创建一件代价比较大的事情,再加上基本数据类型又是使用的非常广泛的,和String一样,我们知道Java 对String 做了很多优化,这里Java 为了提高程序的效率,提供了基本数据类型,后面你也会学到Java 也为基本数据了下提供了缓存。

    需要注意的是包装类型都是不可变的

    一. 整型

    Java中整型数据属于有符号数,即第一个bit位为0表示正整数,第一个bit位为1表示负整数。在计算机中负数由补码表示,那么补码如何计算呢?

    补码=源码取反 + 1;

    如:

    22,在计算机中的表示为00010110,

    -22,取反:11101001,加1:11101010

    byte

    byte属于Java中的整型,长度为1字节8bit,取值10000000(-128)到 01111111(127),变量初始化默认值为0,包装类Byte

    short

    short属于Java中的整型,长度为2字节16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),变量初始化默认值为0,包装类Short

    int

    int属于Java中的整型,长度为4字节32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),变量初始化默认值为0,包装类Integer

    long

    long属于Java中的整型,长度为8字节64bit,取值-2^63 (-9,223,372,036,854,775,808‬)到 2^63-1(9,223,372,036,854,775,8087),变量初始化默认值为0或0L,包装类Long

    二. 浮点型

    Java中浮点型数据无法由二进制直接表示,而是一种对于实数的近似数据表示法,它遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754/3869922)标准

    float

    float属于Java中的浮点型,也叫单精度浮点型,长度为4字节32bit,变量初始化默认值0.0f,包装类Float

    1. float结构

    包含三部分:符号位、指数位、尾数位

    符号位(S)指数位(E)尾数位(M)
    长度1bit8bit23bit
    说明0表示正数,1表示负数格式为在这里插入图片描述,E值范围:(0,255),指数位取值:(在这里插入图片描述在这里插入图片描述形式为1.M或0.M。其中当E=0时,取1.M,称为正规形式,当E!= 0时,取0.M,称为非正规形式

    2. float取值

    正规形式:img

    非正规形式:img

    根据上面公式很容易计算出float的取值范围为:

    img
    (最小值,当符号位S取1,指数位E取255)

    img
    (最大值,当符号位S取0,指数位E取255)

    能取到其间的近似数据。

    注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如NAN,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用BigDecimal

    double

    double属于Java中的浮点型,也叫双精度浮点型,长度为8字节64bit,变量初始化默认值0.0d,包装类Double

    1. double结构

    包含三部分:符号位、指数位、尾数位

    符号位(S)指数位(E)尾数位(M)
    长度1bit11bit52bit
    说明0表示正数,1表示负数格式为img,E值范围:(0,2047),指数位取值:(imgimg)形式为1.M或0.M。其中当E=0时,取1.M,称为正规形式,当E!= 0时,取0.M,称为非正规形式

    2. double取值

    正规形式:img

    非正规形式:img

    根据上面公式很容易计算出double的取值范围为:

    img
    (最小值,当符号位S取1,指数位E取2047)

    img
    (最大值,当符号位S取0,指数位E取2047)

    能取到其间的近似数据。

    注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如NAN,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用BigDecimal

    三. 字符型

    char

    char属于java中的字符型,占2字节16bit,可以赋值单字符以及整型数值, 变量初始化无默认值,包装类Character。

    如:

    char a = ‘a’;

    char a = ‘中’;

    char a = 12; // 取值范围0~65536,因为char类型在ASCII字符编码中,有对应的数值,可直接做运算,输出字符表中对应的字符

    @Test
    public void testChar() {
        //任意单个字符,加单引号。
        char a1 = 'a';
        //任意单个中文字,加单引号。
        char a2 = '你';
        //整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
        char a3 = 114;
        System.out.println(a3);
    }
    

    还有一点就是char 类型支持数学运算,背后的原理就是char 可以转化成对应的数字,然后数字计算之后,又可以对应到字符表中的字符,所以运算结果就是新的字符,下面给了一个截图,给大家看一下char 类型的运算结果是什么

    image-20201204102020800

    可以看出运算的结果是int 类型,只不过这个int 类型要想赋值给char ,还有一个范围的要求0~65536

    还有一点就是,我们经常习惯在做字符串拼接的时候使用+ 所以当你想拼接两个字符的时候,不能直接使用+ 拼接,因为那是加法运算对于char 类型,所以你基本上可以把char 类型看成数值类型

    @Test
    public void testCharOperation() {
        char a1 = 'a' + 'b';
        System.out.println(a1);
        String a2 = "a" + "b";
        System.out.println(a2);
    }
    // 输出结果
    Ã
    ab
    

    所以当我们得到可以基本上将char 看做数值类型的时候,我们就可以尝试将char 类型和数值类型进行计算,快去试试吧,还是我先试试

    @Test
    public void testCharOperation() {
        char a1 = 'a' + 1;
        System.out.println(a1);
    }
    //输出结果
    b
    

    四. 布尔型

    boolean 仅有两个值true, false,变量初始化默认值false

    boolean 到底占几个字节

    为什么要问这个问题,首先在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就boolean类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean 这个类型,boolean类型在编译后会使用其他数据类型来表示,那boolean类型究竟占用多少个字节?当然这个时候你就会听到很多种答案

    首先我们看一下如何查看其它基本数据类型锁占用的字节大小,因为你经常看到一张图或者表格关于基本类型所占字节的大小,但是你又记不住,哈哈,只要你知道有下面这个方法,下次就有可以不用百度了,自己动手就可以了

    System.out.println(Byte.SIZE);// 8
    System.out.println(Short.SIZE);// 16
    System.out.println(Integer.SIZE); //32
    System.out.println(Long.SIZE); //64
    System.out.println(Character.SIZE); //16
    System.out.println(Float.SIZE); //64
    System.out.println(Double.SIZE); //64
    //System.out.println(Boolean.SIZE); //32
    

    输出结果,但是需要注意的实boolean 的包装类Boolean却没有提供这样的属性

    8
    16
    32
    64
    16
    32
    64
    

    1 bit

    理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。

    1 byte

    理由是虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。

    4 byte

    理由来源是《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。

    那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。经过查阅资料发现,使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点

    Although the java virtual machine defines a boolean type,it only provides very limited support for it.There are no java virtual machine instructions solely dedicated to operations on boolean values.  Instead, expressions in the java programming language that operate on boolean values are compiled to use values of the java virtual machine int data type.
    
    The java virtual machine does directly support boolean arrays. Its newarray instruction enables creation of boolean arrays. Arrays of type boolean are accessed and modified using the byte array instruction baload and bastore .
    
    In Oracle java virtual machine implementation, boolean arrays in the java programming language are encoded as java virtual machine byte arrays, using 8 bits per boolean element .
    
    The java virtual machine encodes boolean array components using 1 to represent true and 0 to represent false . Where java programming language boolean values are mapped by compilers to values of java virtual machine type int , the compilers must use the same encoding
    

    其实可以看出这也是Java 在为了高性能上做的付出。

    展开全文
  • Java 基本数据类型存储位置

    万次阅读 多人点赞 2018-11-05 10:48:13
    Java 基本数据类型 及 ... Java数据类型分为基本数据类型与引用数据类型。    1 基本数据类型 byte:Java最小的数据类型,内存占1个字节(8 bit),取值范围-128~127,默认值0 short:短整型,2个字节(16...

    Java 基本数据类型 及 == 与 equals 方法的区别

    转载地址:https://www.cnblogs.com/Latiny/p/8099581.html

      Java数据类型分为基本数据类型与引用数据类型。

      

      1 基本数据类型

    byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0

    short:短整型,2个字节(16 bit),取值范围-32768~32717,默认值0

    int:整型,用于存储整数,在内存中占4个字节,取值范围-2147483648~2147483647,默认值0

    long:长整型,在内存中占8个字节-2^63~2^63-1,默认值0L

     

    float:浮点型,在内存中占4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0

    double:双精度浮点型,用于存储带有小数点的数字,在内存中占8个字节,默认值0

     

    char:字符型,用于存储单个字符,内存中占2个字节,取值范围0~65535,默认值为空

    boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false

     

    2 引用类型

    Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。引用类型分3种:类,接口,数组;

    类(Class):所有的类,无论是Java自身已经存在的,还是用户后来创建的;

    Objec类:它是所有类的父类,每个类都实现这个类的方法;用Object 可以定义所有的类;

    String:String类代表字符串,Java

    接口(interface): 系统自带或者用户创建的

    数组(array): 系统自带或者用户创建的

     

    3 Java中的数据类型在内存的存储原理

    (1) 基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,Java语言里面八种数据类型是这种存储模型;

    (2) 引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”(存储对象在内存堆上的地址)是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

    基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的

    举例说明

    我们分析一下 == 和equals()的区别

    首先,定义两个String 数组对象

    String[] a={"latiny1","latiny2"};
    String[] b={"latiny1","latiny2"};

    然后比较
    if(a==b)
    {
    System.out.println("a==b");
    }
    else
    {
    System.out.println("a!=b");
    }

    程序输出a!=b

    原因:a和b的地址是不相同的,a==b比较的是两个变量的地址,数据a与b的地址不一样

     

    不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。

     

    4 基本类型转换

    (1)自动类型转换

    Java所有的数值类型变量都可以互相转换,如果系统把某种基本类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。

    int e = 1;

    double d =e;

    以上代码不会报错,系统会自动转换。

    (2) 强制类型转换

    当把一个范围大的数值或变量赋给另一个范围小的变量时,需要进行强制转换。

      double d =1.5;

      int e = d;

      以上代码会报错,把大范围的数值赋给小范围的变量,需要强制转换,这样才能通过编译,且大范围的数值会丢失精度。

      int e = (int) d;

     

      5 == 与 equals 方法

      判断两个变量是否相等有两种方式:一种是利用 == 运算符,另一种是利用equals方法。

      ① 比较java基本类型:

      比较基本类型只能用"==",不能用"equals",这里的"=="比较的是两个基本类型的值;

     

      ② 比较包装类:这里拿Integer,Character 来举例

    复制代码

     1     
     2         Character a = new Character('A');
     3         Character b = new Character('A');
     4         
     5         System.out.println(a == b);
     6         System.out.println(a.equals(b));
     7         
     8         Integer i1 = new Integer(10);
     9         Integer i2 = new Integer(10);
    10         
    11         System.out.println(i1 == i2);
    12         System.out.println(i1.equals(i2));

    复制代码

      输出结果: 

    false
    true
    false
    true

      这边"=="比较的是对象的内存地址,new了两个不同的对象所存放的地址是不一样的,这边的"equals"比较的就是值,这里为什么比较的是值呢,equals里的重写了equals的方法。附上源码:

    复制代码

    1   public boolean equals(Object obj) {
    2         if (obj instanceof Integer) {
    3             return value == ((Integer)obj).intValue();
    4         }
    5         return false;
    6     }

    复制代码

     

      ③  比较String:

      "=="比较的是内存地址,"equals"比较的是值

    复制代码

     1         String s1 = "latiny";
     2         String s2 = "latiny";
     3         
     4         System.out.println(s1 == s2);
     5         System.out.println(s1.equals(s2));
     6 
     7         String s3 = new String("latiny");
     8         String s4 = new String("latiny");
     9         
    10         System.out.println(s3 == s4);
    11         System.out.println(s3.equals(s4));

    复制代码

      输出结果:

    true
    true
    false
    true

      补充说明:Java String 和 new String()的区别

      栈区存引用和基本类型,不能存对象,而堆区存对象。==是比较地址,equals()比较对象内容。

    (1) String str1 = "abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd"";如果后来又定义了字符串变量 str2 = "abcd",则直接将str2引用指向String池中已经存在的“abcd”,不再重新创建对象;当str1进行了赋值(str1=“abc”),则str1将不再指向"abcd",而是重新指String池中的"abc",此时如果定义String str3 = "abc",进行str1 == str3操作,返回值为true,因为他们的值一样,地址一样,但是如果内容为"abc"的str1进行了字符串的+连接str1 = str1+"d";此时str1指向的是在堆中新建的内容为"abcd"的对象,即此时进行str1==str2,返回值false,因为地址不一样。

    (2) String str3 = new String("abcd")的实现过程直接在堆中创建对象。如果后来又有String str4 = new String("abcd"),str4不会指向之前的对象,而是重新创建一个对象并指向它,所以如果此时进行str3==str4返回值是false,因为两个对象的地址不一样,如果是str3.equals(str4),返回true,因为内容相同。

     

      ④ 比较对象:

      这里"=="比较的是内存地址,"equals"比较的也是地址,没有重写equals方法的类都是调用的Object的equals的方法。

    1         Person p1 = new Person(1001, "latiny1");
    2         Person p2 = new Person(1001, "latiny1");
    3         
    4         System.out.println(p1 == p2);
    5         System.out.println(p1.equals(p2));

      输出结果:

    false
    false

      

     

    展开全文
  • Java char数据类型

    千次阅读 2017-03-22 09:06:30
    char数据类型是16位无符号Java基元数据类型。 它表示Unicode字符。请注意,char是无符号数据类型。 因此,char变量不能为负值。字符数据类型的范围为0到65535,这与Unicode集的范围相同。 字符字面量 字符...
  • 基本数据类型也称为简单数据类型Java语言有八种基本数据类型, 分别为 boolean、byte、short、int、double、float、double,这八种基本数据类型通常分为四大类型; 逻辑类型(布尔类型):boolean; 整数类型 ...
  • java基本数据类型取值范围

    千次阅读 2019-03-28 10:41:23
    在JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean 整型 其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 byte的取值...
  • char型是存储字符的数据类型,它机器占16位,范围为0-65535。Java中char型与C/C++char型不同。C /C++char型采用的是ASCII字符集,宽度为8位,范围为0-255,而Java中char型采用的是Unicode字符集,...
  • java基本数据类型范围

    万次阅读 2019-07-05 13:04:44
    当对小于int的数据类型(byte, char, short)进行运算时,首先会把这些类型的变量值强制转为int类型进行计算,最后会得到int类型的值。因此,如果把2个short类型的值相加,最后得到的结果是int类型,如果需要得到...
  • [Java基础]-- java char基本数据类型

    千次阅读 2015-11-02 20:52:06
    charjava基本数据类型之一,封装类是Character,占用长度是1个字节8位 char的初始化类型: 一、单引号引起  如‘A’、“0”、“d”等等,但是注意:必须限定长度是一个字节 二、转义字符 如‘\t’、‘\n’、...
  • Java中数据类型分为两大类,基本数据类型和引用数据类型 一、数据类型二、基本数据类型和引用数据类型的区别
  • Java基本数据类型的Class问题

    千次阅读 2018-12-10 22:13:50
    问题发现:项目需求,调用第三方接口时,规定请求报文体为XML,所以需要将实体Bean或POJO转成XML的形式,我使用了XStream来完成序列化转换,其中因为驼峰命名的字段名跟接口报文规定的字段有所出入或者说完全不同...
  • Java 基本数据类型有哪些?

    千次阅读 2019-08-12 09:25:58
    我想说的是,万变不离其宗,只要学好基础,就不愁学不会框架,很多自诩多年开发经验的程序员可能只是停留各种框架的基本应用上,而对基础知识一知半解。这样长期下去,职业生涯发展期间其实是很难精进的,这并...
  • java中charjava.lang.Character 对应sql数据库CHAR(1)类型,应该把string换成Character; 如果是char里面是保存的Y/N这种,则可以用boolean。
  • 一、在JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean整型 color=gray 其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 byte的取值...
  • java八种基本数据类型及包装类详解

    万次阅读 多人点赞 2018-12-20 10:14:40
    java八种基本数据类型分为四类八种,四类分别为整型、浮点型、布尔型、字符型;八种分别为byte、short、int、long、float、double、boolean、charjava八种基本数据类型的字节数:分别为1、2、4、8个字节;1字节...
  • 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream数据以Unsigned读取。 Java在这方面提供了支持,可以用java.io.DataInputStream类对象来完成对流内数据的Unsigned读取,该类提供...
  • 首先我们做个小测验,通过下面代码来看看Java语言和Java虚拟机对boolean类型有什么不同: public class Foo { public static void main(String[] args) { boolean flag = true; if (flag) System.out.println(&...
  • Java基本数据类型的比较

    千次阅读 2018-03-27 18:51:46
    栈里创建的变量要比堆创建的速度快得多== 可以比较基本数据类型 , 也可以比较引用数据类型 equals: 只能比较引用数据类型, 默认比较的是地址值*(string类重写了eqals方法),如果我们想建立自己的比较方式, 需要...
  • java基本数据类型自动转换规则

    千次阅读 2017-08-03 09:38:02
    一、java基本数据类型 Java提供了八种基本类型,其中包括六种数字类型(四个整数型,两个浮点型),一种字符类型和一种布尔型。  整型: short, int, long, byte;  浮点型:float, double;  字符型:char;  ...
  • byte:1个字节,8位,-128~127 最大存储数据量 255short:2个字节,16位,-32768~32767 最大存储数据量 65535char:2个字节,16位,存储Unicode编码,用‘’int:4个字节,32位,负的2的31次方~2的31次方-1 最大...
  • java中基本数据类型转换规则

    千次阅读 2019-07-17 20:50:59
    java数据类型以及转换原则 一、数据类型分类:主要分为 基本类型、引用类型两大类; 二、基本类型 转换原则 1、类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。  a、赋值和方法调用 转换规则:...
  • java基本数据类型及类型转换

    千次阅读 2017-12-25 21:42:36
    在java中数据类型在大类上可分为基本数据类型和引用数据类型。这篇博文则主要针对基本数据类型进行介绍和了解每种数据类型的特别范围以及针对各个数据类型之间的类型转换。数据类型的分类结构: 基本数据类型 ...
  • byte:Java中最小的数据类型内存占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,内存占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,内在占32位,...
  • Java中基本数据类型占几个字节多少位 1.字节:byte:用来计量存储容量的一种计量单位;位:bit 2.一个字节等于8位 1byte = 8bit char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字。 整型: byte:...
  • byte 类型用大型数组节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;short:short 数据类型是 16 位、有符号的以二进制补码表示的整数最小值是 -32768(-2^15);最大值是 32767...
  • Java 基本数据类型大小

    千次阅读 2018-11-28 16:18:29
    Java基本数据类型 byte 8bit short 16bit int 32bit long 64bit float 32bit double 64bit char 16bit private static void calSize() { System.out.println("Integer...
  • 之所以java中引入基本数据类型,是因为通过执行效率以及内存使用来提高应用软件的性能。 //正常情况下 public class Foo { public static void main (String [] args){ boolean flag = true; if(flag){ ...
  • java基本数据类型长度

    万次阅读 2017-11-03 00:05:57
    Java语言提供了八种基本类型。六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。 byte: byte数据类型是8位、有符号的,以二进制补码表示的整数;...
  • import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; public class Cast { public static void main(String[] args) throws UnsupportedEncodingException { String string...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 328,832
精华内容 131,532
关键字:

char在java的基本数据类型中

java 订阅