精华内容
下载资源
问答
  • 关于java的基本类型和包装类型

    千次阅读 2014-03-03 08:44:27
    Java语言是一个面向对象的语言,但是Java的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型...

    包装类类型:java基本数据类型包装类  

    2010-05-09 00:26:36|  分类: java |  标签:|字号大中小 订阅

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

        包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:

    包装类对应表

    基本数据类型

    包装类

    byte

    Byte

    boolean

    Boolean

    short

    Short

    char

    Character

    int

    Integer

    long

    Long

    float

    Float

    double

    Double

        在这八个类名中,除了IntegerCharacter类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。

        对于包装类说,这些类的用途主要包含两种:

        a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

        b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

        由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。

        1、实现intInteger类之间的转换

        在实际转换时,使用Integer类的构造方法和Integer类内部的intValue方法实现这些类型之间的相互转换,实现的代码如下:

                       int n = 10;

                       Integer in = new Integer(100);

                       //int类型转换为Integer类型

                       Integer in1 = new Integer(n);

                       //Integer类型的对象转换为int类型

                       int m = in.intValue();

        2Integer类内部的常用方法

        Integer类内部包含了一些和int操作有关的方法,下面介绍一些比较常用的方法:

        aparseInt方法

        public static int parseIntString s

        该方法的作用是将数字字符串转换为int数值。在以后的界面编程中,将字符串转换为对应的int数字是一种比较常见的操作。使用示例如下:

        String s = “123”

        int n = Integer.parseInts);

        int变量n的值是123,该方法实际上实现了字符串和int之间的转换,如果字符串都包含的不是都是数字字符,则程序执行将出现异常。(说明:异常的概念将在下一章进行讲述)

        另外一个parseInt方法:

        public static int parseIntString s int radix

        则实现将字符串按照参数radix指定的进制转换为int,使用示例如下:

             //将字符串”120”按照十进制转换为int,则结果为120

             int n = Integer.parseInt(“120”,10);

             //将字符串”12”按照十六进制转换为int,则结果为18

             int n = Integer.parseInt(“12”,16);

             //将字符串”ff”按照十六进制转换为int,则结果为255

             int n = Integer.parseInt(“ff”,16);

        这样可以实现更灵活的转换。

        btoString方法

        public static String toStringint i

        该方法的作用是将int类型转换为对应的String类型。

        使用示例代码如下:

        int m = 1000

        String s = Integer.toStringm);

        则字符串s的值是“1000”

        另外一个toString方法则实现将int值转换为特定进制的字符串:

        public static int parseIntString s int radix

        使用示例代码如下:

        int m = 20

        String s = Integer.toStringm);

        则字符串s的值是“14”

        其实,JDK自从1.55.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。使用示例代码如下:

        //int类型会自动转换为Integer类型

        int m = 12

        Integer in = m

        //Integer类型会自动转换为int类型

        int n = in

        所以在实际使用时的类型转换将变得很简单,系统将自动实现对应的转换

     

     

    展开全文
  • JAVA的基本类型及自动转换问题

    千次阅读 2016-12-31 12:18:10
    java提供了一组基本数据类型,包括 boolean, byte, char, short, int, long, float, double, void.  同时,java也提供了这些类型的封装类,分别为 Boolean, Byte, Character, Short, Integer, Long, Float...

    java提供了一组基本数据类型,包括

    boolean, byte, char, short,  int, long, float, double, void. 

    同时,java也提供了这些类型的封装类,分别为

    Boolean, Byte, Character, Short, Integer, Long, Float, Double, Void


    什么Java会这么做?

    在java中使用基本类型来存储语言支持的基本数据类型,这里没有采用对象,而是使用了传统的面向过程语言所采用的基本类在型,主要是从性能方面来考虑的:因为即使最简单的数学计算,使用对象来处理也会引起一些开销,而这些开销对于数学计算本来是毫无必要的。但是在java中,泛型类包括预定义的集合,使用的参数都是对象类型,无法直接使用这些基本数据类型,所以java又提供了这些基本类型的包装器。


    java里一共有八大数据类型 boolean(未定) char(2字节) byte(1字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节),还有与之对应的包装类 Boolean Character Byte Short Integer Long Float Double, 基本数据与包装类之间的转换叫做装箱与拆箱



            Integer i = new Integer(10);//装箱这个在java1.5之前只能这样new一个出来
            Integer i1 = 10;//java1.5之后可以直接这样初始化一个integer对象出来;
            
            Integer j = new Integer(10);
            int k = j; //这叫做拆箱
        
    复制代码

    int i 与Integer i 到底有什么区别呢,看程序:

    复制代码
            Integer n1 = 127;
            Integer n2 = 127;
            Integer n3 = new Integer(10);
            Integer n4 = 10;
            System.out.println(n1.equals(n2));
            System.out.println(n1==n2);
            
            System.out.println(n3==n4);
            System.out.println(n3.equals(n4));
        
    复制代码

    结果是true
         true
         false
         true
    java里"=="比较的是对象的地址,而equal比较的是内容,n3与n4比较的结果不以外,那么为什么n1跟n2 "=="比较也是true呢,看数值127 是byte的最大值,java里对于byte范围的数据因为使用多,所以这个对象会放到内存中保存,n1与n2指向的是同一个内存地址,但是超过127或者小于-128结果就是

    复制代码
            Integer n1 = -129;
            Integer n2 = -129;
            Integer n3 = new Integer(10);
            Integer n4 = 10;
            System.out.println(n1.equals(n2));
            System.out.println(n1==n2);
            
            System.out.println(n3==n4);
            System.out.println(n3.equals(n4));
        
    复制代码

    true
    false
    false
    true

    包装类有一些常用的方法,主要就是数据类型转换,除了boolean char之外的构造方法除了构造方法有两种,不过Float有三种。

    数制转换方法,用Integer做例子。byteValue();doubleValue();floatValue;intValue;shorValue;这些方法都是拆箱,返回的都是基本数据类型。

    反过来 valueOf(int i)是放回包装类的。

     

    ps:基本数据类型转换遵循的原则:

      1 容量小的类型自动转换成容量大的数据类型,数据类型按照容量大小排序是

     byte,short,char<int<long<float<double; 注意这是是容量大小不是所占字节数

    (例:int是整型,用来表示整数,其值是精确值。

    float是浮点型,用来表示实数,其值是近似值。

    所以当int转换为float时,是由准确值变成了近似值,所以会丢失精度。

    比如int 的1000,转换为浮点型时,可能会被存成1000.00000000001,用来计算或者输出时看不出区别,实际上是已经有变化了。


    在32位和64位的编译器中,int和float都是占四字节。

    int可以表示范围为-2147483648~2147483647。

    float可以表示-3.40E+38 ~ +3.40E+38。

    从这个角度上看,float可以表示的范围比int的大太多了,对于比较大的数值,自然就会差距越大。

    比如下面的代码)

        

      2 容量大的数据类型转换成容量小的数据类型时,要加上强制转换符,但是可能造成精度降低,或者溢出。

      3 有多种数据类型混合运算是,系统将自动所有数据转换成最大的那个类型,然后进行运算。

      4 实数常量,系统默认为double;

      5 整数常量,系统默认为int;

    所以long lg = 10000000000l;后面要加一个l,不然系统会保存因为默认为int就超出范围了


            Integer i = new Integer(10);//装箱这个在java1.5之前只能这样new一个出来
            Integer i1 = 10;//java1.5之后可以直接这样初始化一个integer对象出来;
            
            Integer j = new Integer(10);
            int k = j; //这叫做拆箱
        
    复制代码

    int i 与Integer i 到底有什么区别呢,看程序:

    复制代码
            Integer n1 = 127;
            Integer n2 = 127;
            Integer n3 = new Integer(10);
            Integer n4 = 10;
            System.out.println(n1.equals(n2));
            System.out.println(n1==n2);
            
            System.out.println(n3==n4);
            System.out.println(n3.equals(n4));
        
    复制代码

    结果是true
         true
         false
         true
    java里"=="比较的是对象的地址,而equal比较的是内容,n3与n4比较的结果不以外,那么为什么n1跟n2 "=="比较也是true呢,看数值127 是byte的最大值,java里对于byte范围的数据因为使用多,所以这个对象会放到内存中保存,n1与n2指向的是同一个内存地址,但是超过127或者小于-128结果就是

    复制代码
            Integer n1 = -129;
            Integer n2 = -129;
            Integer n3 = new Integer(10);
            Integer n4 = 10;
            System.out.println(n1.equals(n2));
            System.out.println(n1==n2);
            
            System.out.println(n3==n4);
            System.out.println(n3.equals(n4));
        
    复制代码

    true
    false
    false
    true

    包装类有一些常用的方法,主要就是数据类型转换,除了boolean char之外的构造方法除了构造方法有两种,不过Float有三种。

    数制转换方法,用Integer做例子。byteValue();doubleValue();floatValue;intValue;shorValue;这些方法都是拆箱,返回的都是基本数据类型。

    反过来 valueOf(int i)是放回包装类的。

     

    ps:基本数据类型转换遵循的原则:

      1 容量小的类型自动转换成容量大的数据类型,数据类型按照容量大小排序是

        byte,short,char<int<long<float<double; 注意这是是容量大小不是所占字节数

      2 容量大的数据类型转换成容量小的数据类型时,要加上强制转换符,但是可能造成精度降低,或者溢出。

      3 有多种数据类型混合运算是,系统将自动所有数据转换成最大的那个类型,然后进行运算。

      4 实数常量,系统默认为double;

      5 整数常量,系统默认为int;

    所以long lg = 10000000000l;后面要加一个l,不然系统会保存因为默认为int就超出范围了

    展开全文
  • Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 1、整数:包括int,short,byte,long ,初始值为0 2、浮点型:float,double ,初始值为0.0 3、字符:char ,初始...

    Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
    1、整数:包括int,short,byte,long ,初始值为0
    2、浮点型:float,double ,初始值为0.0
    3、字符:char ,初始值为空格,即'' ",如果输出,在Console上是看不到效果的。
    4、布尔:boolean ,初始值为false

     

    基本型别 大小 最小值 最大值
    boolean ----- ----- ------
    char 16-bit Unicode 0 Unicode 2^16-1
    byte 8-bit -128 +127
    short 16-bit -2^15 +2^15-1
    int 32-bit -2^31 +2^31-1
    long 64-bit -2^63 +2^63-1
    float 32-bit IEEE754 IEEE754
    double 64-bit IEEE754 IEEE754
    void      

    注意:

    表格里的^代表的是次方;

    java采用unicode,2个字节来表示一个字符。

     

    基本类型的包装类

     

          Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmail

     

    其中BigInteger、BigDecimal没有相对应的基本类型,主要应用于高精度的运算,BigInteger 支持任意精度的整数,

     

    BigDecimal支持任意精度带小数点的运算。

     

    基本类型与包装类型的异同

       1、在Java中,一切皆对象,但八大基本类型却不是对象。

     

       2、声明方式的不同,基本类型无需通过new关键字来创建,而封装类型需new关键字。

     

       3、存储方式及位置的不同,基本类型是直接存储变量的值保存在堆栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中。

     

       4、初始值的不同,封装类型的初始值为null,基本类型的的初始值视具体的类型而定,比如int类型的初始值为0,boolean类型为false;

     

       5、使用方式的不同,比如与集合类合作使用时只能使用包装类型。

       6、什么时候该用包装类,什么时候用基本类型,看基本的业务来定:这个字段允不允许null值,如果允许null值,则必然要用封装类,否则值类型就可以了,用到比如泛型和反射调用函数.,就需要用包装类了!

    展开全文
  • java的基本类型一定存放在栈中吗?

    千次阅读 多人点赞 2017-11-11 09:04:35
    基本类型的变量存在栈里或者堆里不是由"大小可知,生存期可知"就能确定了。关键是上下文。 比如 void func(){ int a = 3; } 这自然是存在栈里。局部方法嘛。 而 class Test{ int a = 3; } 这就肯定是随对象放到堆...
    基本数据类型存放在哪?
    基本类型的变量存在栈里或者堆里不是由"大小可知,生存期可知"就能确定了。关键是上下文。
    比如
    void func(){
    int a = 3;
    }
    这自然是存在栈里的。局部方法嘛。

    class Test{
    int a = 3;
    }
    这就肯定是随对象放到堆里的。

    因此,不要孤立的看到基本类型就说放到栈里,看到引用类型就说放到堆里。从更深层次去理解它们会更好,例如为什么是在基本类型的实例变量在堆上创建,局部变量在栈上创建,这样做有什么好处


    思考:

    如果你熟悉java的内存结构的话就会知道,堆 是所有线程共享的内存区域,栈 是每个线程独享的,如果你将一个实例变量放在栈内,那么就不存在多个线程访问同一个对象资源了,这显然是不对的,所以实例变量要在堆上创建,也不是线程安全的。

    但是对于局部变量,是在栈上创建的,每一次方法调用创建一个帧,独享一份内存区域,其他的线程是不会访问到该线程的资源,在 栈上创建也会减轻GC的压力,随着该方法的结束,帧出栈,相对应的内存消除,这种局部变量占用的内存自然就消失了,因此局部变量是线程安全的。

    展开全文
  • 话说干了这么多年开发,只知道会用,怎么用,用什么,隐约也知道了为什么用,但为啥JAVA总像一个犹抱琵琶半遮面女子,总让人看不透,看不腻?因该就是基础不扎实了。
  • java中,除了long和double的64比特的变量外,其他的基本变量都是原子性的。 说起原子性的操作,是值读和写是原子性的,比如i=5;这个就是一个原子性的操作。 但是两个原子性的操作合在一起进行,就不一定是原子性的...
  • java基本数据类型的转换

    万次阅读 2020-07-03 10:39:12
    java基本数据类型的转换自动类型转换强制类型转换 自动类型转换 举例:多种不同数据类型的一起运算 解释:有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大那个数据类型,然后再进行计算。 ...
  • JAVAjava基本数据类型详解

    万次阅读 2020-02-22 11:26:15
    Java的数据类型可分为两大类:基本数据类型(primitivedata type)和引用数据类型(reference data type)。 Java中定义了3类8种基本数据类型 数值型- byte、 short、int、 long、float、 double 字符型- char ...
  • Java的基本数据类型和Java的变量类型

    千次阅读 2016-01-15 20:35:37
    一、Java 基本数据类型 1、什么是变量? 变量就是用来储存值而保留内存位置。这就意味着当你创建一个变量时就会在内存中占用一定空间。 基于变量数据类型,操作系统会进行内存分配并且决定什么将被储存在保留...
  • Java基本类型和引用类型区别

    千次阅读 2019-06-22 18:18:00
    Java基本类型和引用类型区别 一、基本数据类型: byte:Java中最小数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32767,...
  • Java基本类型和包装类型总结

    万次阅读 多人点赞 2017-07-19 12:36:40
    1.Java的基本类型及其对应的包装器类Java有8种基本类型:大致分为3类:字符,布尔,数值类型(在java中数值是不存在无符号的,这一点不像C/C++,他们的取值范围是固定的,不会随着机器硬件的环境或者操作系统的改变...
  • Java的基本类型与非基本类型

    千次阅读 2019-05-22 13:39:15
    Java号称一切皆为对象,此话不假,但是尚需知道Java对象分两种类型:基本类型和非基本类型基本类型 基本类型就是那些最常用类型,例如:boolean/char/byte/short/int/long/float/double,这些类型有个特点...
  • JAVA的基本类型与包装类型

    千次阅读 2021-03-14 19:54:46
    JAVA的基本类型与包装类型 一:基本类型与包装类型简介 1.由于基本类型没有面向对象的特征,为了他们参加到面向对象的开发中, java为八个基本类型提供了对应的包装类。 2.六个和包装类继承java.lang.Number,...
  • Java基本数据类型转换与java基本类型转换优先级转换类型1. 自动类型转换: 编译器自动完成类型转换,不需要再程序中编写代码转换规则: 从存储范围小类型到存储范围大类型具体规则 : byteàcharàshortàintàlong...
  • Java 基本类型与引用类型

    千次阅读 2019-03-27 20:55:51
    Java 基本类型与引用类型 一、基本数据类型 java 中一共分为 8 种基本数据类型:byte、short、int、long、float、double、char、boolean, ...java 为每种基本类型都提供了对应封装类型,分别为:Byte...
  • Java 基本类型 引用类型

    千次阅读 2017-06-01 15:48:09
    Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。...
  • Java的基本数据类型详解

    千次阅读 多人点赞 2019-11-20 14:21:02
    目录 ...java的基本数据类型可以简称为“四类八种”: 整型:(byte、short、int、long):整数数据类型默认是int 浮点型:(float、double) 字符型:(char) 布尔类型:(boolean):true 真 和 fals...
  • Java基本类型和常量讲解

    千次阅读 2017-01-15 17:24:39
    基本类型或者叫做内置类型,是JAVA中不同于类的...1. Java的基本类型 Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类
  • java基本类型与引用类型

    万次阅读 多人点赞 2018-01-04 17:30:32
    java基本类型与引用类型 目录 java基本类型与引用类型 目录 一基本数据类型 二引用类型 三基本类型与引用类型区别 默认值 内存分配 自动装箱自动拆箱 自动装箱拆箱带来问题 程序性能 空指针异常 ...
  • Java基本数据类型和引用类型的区别

    千次阅读 2019-05-05 11:17:32
    Java基本数据类型和引用类型的区别
  • java 基本类型和常量讲解

    千次阅读 2015-07-10 15:21:37
    基本类型或者叫做内置类型,是JAVA...1. Java的基本类型Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型b
  • java不同基本类型之间运算

    千次阅读 2018-09-17 12:52:42
    JAVA中,基本类型(除了boolean外)可以自动转换,转换形式为:byte,short,char – int –long–float–double这就是自动转换顺序了,其中byte,short,char在运算时是自动转换为int型,而int与long运算时自动...
  • Java基本数据类型

    千次阅读 2019-02-01 19:39:26
    这节博客将向大家讲解java的数据类型,在讲解数据类型前,先来看一下变量。 (一)变量 java语言是强类型语言,强类型包含两方面的含义。 1:所有的变量必须先声明,后使用。 2:指定类型的变量只能接受类型与之...
  • java基本类型封装类和原始类型区别及好处

    千次阅读 多人点赞 2019-01-07 19:13:14
    这是最近有人问我的一个问题,我当时解答了,但是发现解答的并不是很全面,所以花...我们先来看一下java的基本类型和其封装类  原始类型 封装类   boolean Boolean   char Character   byte Byte   ...
  • java的八大基本类型

    万次阅读 多人点赞 2018-09-04 16:30:15
    Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。...
  • java基本类型和包装类型区别

    千次阅读 2019-02-24 14:01:29
    1、为什么存在基本类型: 在Java中正常应该设置对象,然后通过new一... 包装类型相当于将基本类型包装起来,使其具有对象性质,并且可以添加属性和方法,丰富了基本类型的操作。 (2)包装类型具有哪些好处:  ...
  • java基本类型和包装类型

    千次阅读 2018-10-08 11:20:21
    java是面向对象的语言为什么还要有基本类型,只有...java的基本类型和包装类型:  基本类型  包装器类型 boolean Boolean char Character int Integer byte Byte short Short ...
  • java基本类型包装类

    万次阅读 多人点赞 2020-12-14 08:38:00
    1. 基本类型包装类概述为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据操作。用于描述该对象类就称为基本数据类型对象包装类。将基本数据类型封装成对象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,679
精华内容 33,471
关键字:

java的基本类型

java 订阅