精华内容
下载资源
问答
  •  String不是java中的基本数据类型。java中有8个基本数据类型,它们都对应有封装类(包装类),其中基本数据类型char的包装类有些特殊,是Character类。  Java是一种强类型语言,这就意味着必须为...

    http://blog.chinaunix.net/uid-26642637-id-3235815.html

     String不是java中的基本数据类型。java中有8个基本数据类型,它们都对应有封装类(包装类),其中基本数据类型char的包装类有些特殊,是Character类。


       Java是一种强类型语言,这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本的数据类型(primitive type),其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和一种用于表示真值的boolean类型。这些基础类型也叫原始数据类型,在进行数据传递的时候是值传递而不是引用传递。

        (1).Java提供了四种整型:

    int 4个字节
    short 2个字节
    long 8个字节
    byte 1字节


       在Java中,整型的范围与运行java的机器无关,这个之只和java的虚拟机有关。

        (2).java提供了两种浮点型:

    float 4个字节
    double 8个字节

        所有的浮点数值计算都遵循IEEE754规范。下面是用于表示溢出和出错情况的三个特殊的浮点值:   

        正无穷大:Double.POSITIVE_INFINITY

         负无穷大:Double.NEGATIVE_INFINITY

         NaN:Double.NaN(不是一个数字)

        例如:一个正整数处理除以0的结果为正无穷大,计算0/0或者负数的平方根结果为NaN.

        (3).Java中char型

         在java中,char类型用UTF-16编码描述的一个代码单元。强烈建议不要在程序中使用char类型。除非确实要对UTF-16代码单元进行操作。最好将需要处理的字符串用抽象数据类型表示。

        (4).boolean类型

        boolean类型有两个值:false和true,用来判断逻辑条件。整型和布尔值之间不能直接进行互换。



    展开全文
  • java中的基本数据类型

    2010-05-20 23:29:00
    基本类型,或者叫做内置类型,是JAVA中不同于类特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们身影,在这篇文章中我们将从面试中常考几个方面来回顾一下与基本类型相关知识。 ...

    基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一下与基本类型相关的知识。

    基本类型共有八种,它们分别都有相对应的包装类。关于它们的详细信息请看下表:

    基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:
    Java代码
    1. public class PrimitiveTypeTest {   
    2.     public static void main(String[] args) {   
    3.         // byte   
    4.          System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);   
    5.          System.out.println("包装类:java.lang.Byte");   
    6.          System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);   
    7.          System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);   
    8.          System.out.println();   
    9.   
    10.         // short   
    11.          System.out.println("基本类型:short 二进制位数:" + Short.SIZE);   
    12.          System.out.println("包装类:java.lang.Short");   
    13.          System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);   
    14.          System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);   
    15.          System.out.println();   
    16.   
    17.         // int   
    18.          System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);   
    19.          System.out.println("包装类:java.lang.Integer");   
    20.          System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);   
    21.          System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);   
    22.          System.out.println();   
    23.   
    24.         // long   
    25.          System.out.println("基本类型:long 二进制位数:" + Long.SIZE);   
    26.          System.out.println("包装类:java.lang.Long");   
    27.          System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);   
    28.          System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);   
    29.          System.out.println();   
    30.   
    31.         // float   
    32.          System.out.println("基本类型:float 二进制位数:" + Float.SIZE);   
    33.          System.out.println("包装类:java.lang.Float");   
    34.          System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);   
    35.          System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);   
    36.          System.out.println();   
    37.   
    38.         // double   
    39.          System.out.println("基本类型:double 二进制位数:" + Double.SIZE);   
    40.          System.out.println("包装类:java.lang.Double");   
    41.          System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);   
    42.          System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);   
    43.          System.out.println();   
    44.   
    45.         // char   
    46.          System.out.println("基本类型:char 二进制位数:" + Character.SIZE);   
    47.          System.out.println("包装类:java.lang.Character");   
    48.         // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台   
    49.          System.out.println("最小值:Character.MIN_VALUE="  
    50.                  + (int) Character.MIN_VALUE);   
    51.         // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台   
    52.          System.out.println("最大值:Character.MAX_VALUE="  
    53.                  + (int) Character.MAX_VALUE);   
    54.      }   
    55. }  
    public class PrimitiveTypeTest {
     public static void main(String[] args) {
      // byte
      System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
      System.out.println("包装类:java.lang.Byte");
      System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
      System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
      System.out.println();
    
      // short
      System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
      System.out.println("包装类:java.lang.Short");
      System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
      System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
      System.out.println();
    
      // int
      System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
      System.out.println("包装类:java.lang.Integer");
      System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
      System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
      System.out.println();
    
      // long
      System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
      System.out.println("包装类:java.lang.Long");
      System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
      System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
      System.out.println();
    
      // float
      System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
      System.out.println("包装类:java.lang.Float");
      System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
      System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
      System.out.println();
    
      // double
      System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
      System.out.println("包装类:java.lang.Double");
      System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
      System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
      System.out.println();
    
      // char
      System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
      System.out.println("包装类:java.lang.Character");
      // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
      System.out.println("最小值:Character.MIN_VALUE="
        + (int) Character.MIN_VALUE);
      // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
      System.out.println("最大值:Character.MAX_VALUE="
        + (int) Character.MAX_VALUE);
     }
    }

    运行结果:
    1. 基本类型:byte 二进制位数:8
    2. 包装类:java.lang.Byte
    3. 最小值:Byte.MIN_VALUE=-128
    4. 最大值:Byte.MAX_VALUE=127
    5. 基本类型:short 二进制位数:16
    6. 包装类:java.lang.Short
    7. 最小值:Short.MIN_VALUE=-32768
    8. 最大值:Short.MAX_VALUE=32767
    9. 基本类型:int 二进制位数:32
    10. 包装类:java.lang.Integer
    11. 最小值:Integer.MIN_VALUE=-2147483648
    12. 最大值:Integer.MAX_VALUE=2147483647
    13. 基本类型:long 二进制位数:64
    14. 包装类:java.lang.Long
    15. 最小值:Long.MIN_VALUE=-9223372036854775808
    16. 最大值:Long.MAX_VALUE=9223372036854775807
    17. 基本类型:float 二进制位数:32
    18. 包装类:java.lang.Float
    19. 最小值:Float.MIN_VALUE=1.4E-45
    20. 最大值:Float.MAX_VALUE=3.4028235E38
    21. 基本类型:double 二进制位数:64
    22. 包装类:java.lang.Double
    23. 最小值:Double.MIN_VALUE=4.9E-324
    24. 最大值:Double.MAX_VALUE=1.7976931348623157E308
    25. 基本类型:char 二进制位数:16
    26. 包装类:java.lang.Character
    27. 最小值:Character.MIN_VALUE=0
    28. 最大值:Character.MAX_VALUE=65535
    展开全文
  • Java中的基本数据类型
    Java中的基本数据类型分四类八种
    

    byte(Byte-1)/short(Short-2)/int(Integer-4)/long(Long-8)

    boolean(Boolean-1bit)

    char(Character-2)

    float(Float-4)/double(Double-8)

    括号后是他们的包装类和所占字节大小(Java中的基本数据类型所占字节大小是固定的,和C/C++中不一样)

    基本数据类型的默认值:

    Data Type Default Value (for fields)
    byte 0
    short 0
    int 0
    long 0L
    float 0.0f
    double 0.0d
    char '\u0000'
    String (or any object)   null
    boolean false

     

     

     

     

     

     

     

     




    代码如下:

      package com.example.li;
      
      public class TestBaseType {
      
          public static void main(String[] args) {
              System.out.println("Byte.SIZE__" + Byte.SIZE / 8);// 1字节
              System.out.println("Short.SIZE__" + Short.SIZE / 8);// 2字节
              System.out.println("Integer.SIZE__" + Integer.SIZE / 8);// 4字节
              System.out.println("Long.SIZE__" + Long.SIZE / 8);// 8字节
             System.out.println("Character.SIZE__" + Character.SIZE / 8);// 2字节
             System.out.println("Float.SIZE__" + Float.SIZE / 8);// 4字节
             System.out.println("Double.SIZE__" + Double.SIZE / 8);// 8字节
             // System.out.println(Boolean.SIZE);
         }
     
     }

    运行结果如下:

     Byte.SIZE__1
     Short.SIZE__2
     Integer.SIZE__4
     Long.SIZE__8
     Character.SIZE__2
     Float.SIZE__4
     Double.SIZE__8


     

    展开全文
  • 之所以java中引入基本数据类型,是因为通过执行效率以及内存使用来提高应用软件性能。 //正常情况下 public class Foo { public static void main (String [] args){ boolean flag = true; if(flag){ ...

    java是一门面向对象的语言,但是对于“基本数据类型”是特殊的。之所以java中引入基本数据类型,是因为通过执行效率以及内存使用来提高应用软件的性能。

    //正常情况下
    public class Foo {
    
        public static void main (String [] args){
            boolean flag = true;
            if(flag){
                System.out.println("HELLO,JAVA!");
            }
            if(flag==true){
                System.out.println("HELLO,JVM!");
            }
        }
    }
    //异常情况
    public class Foo {
    
        public static void main (String [] args){
            boolean flag = 2;//java编译无法通过
            if(flag){
                System.out.println("HELLO,JAVA!");
            }
            if(flag==true){
                System.out.println("HELLO,JVM!");
            }
        }
    }

    对于java语言本身来说,第一种情况是合法。因为java编译器定义的boolean类型只包括“true”“false”两种;

    对于java虚拟机来说,两种情况都是合法的。因为编译器将boolean类型映射为整数类型,虚拟机都是可以识别的。只不过java编译器特殊化处理,将“true”映射为“1”,“false”映射为“0”(这也就是为什么java虚拟机定义得更加广泛)。

    将上述两种情况下的java分别反编译为字节码,如下图:

    //第一种情况  
    public static void main(java.lang.String[]);
        descriptor: ([Ljava/lang/String;)V
        flags: ACC_PUBLIC, ACC_STATIC
        Code:
          stack=2, locals=2, args_size=1
             0: iconst_1
             1: istore_1
             2: iload_1
             3: ifeq          14
             6: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
             9: ldc           #3                  // String HELLO,JAVA!
            11: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
            14: iload_1
            15: iconst_1
            16: if_icmpne     27
            19: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
            22: ldc           #5                  // String HELLO,JVM!
            24: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
            27: return
          LineNumberTable:
            line 4: 0
            line 5: 2
            line 6: 6
            line 8: 14
            line 9: 19
            line 11: 27
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0      28     0  args   [Ljava/lang/String;
                2      26     1  flag   Z
          StackMapTable: number_of_entries = 2
            frame_type = 252 /* append */
              offset_delta = 14
              locals = [ int ]
            frame_type = 12 /* same */

     执行结果:不用多说,大家都知道。

    //第二种情况 
    public static void main(java.lang.String[]);
        descriptor: ([Ljava/lang/String;)V
        flags: ACC_PUBLIC, ACC_STATIC
        Code:
          stack=2, locals=2, args_size=1
             0: iconst_2
             1: istore_1
             2: iload_1
             3: ifeq          14
             6: getstatic     #3                  // Field java/lang/System.out:Ljava/io/PrintStream;
             9: ldc           #1                  // String HELLO,JAVA!
            11: invokevirtual #5                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
            14: iload_1
            15: iconst_1
            16: if_icmpne     27
            19: getstatic     #3                  // Field java/lang/System.out:Ljava/io/PrintStream;
            22: ldc           #2                  // String HELLO,JVM!
            24: invokevirtual #5                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
            27: return
          StackMapTable: number_of_entries = 2
            frame_type = 252 /* append */
              offset_delta = 14
              locals = [ int ]
            frame_type = 12 /* same */

    执行结果:只有 HELLO,JAVA!

    从以上结果的不同,我们可以看出:

    两个if语句的字节码指令有所不同-----ifeq与if_icmpne

    ifeq代表:只要传入的参数不为"0",则继续执行,否则跳转;

    if_icmpne代表:只有传入的参数为"1",才继续执行,否则跳转。

    上述改变字节码可以通过asmtools工具来实现。

     

    对于java基本数据类型的范围,如下图所示:

     从前面的boolean类型,我们可以看出,在java虚拟中,boolean类型可以定义为“0”“1”之外的整数类型,同样的,对于其他基本数据类型,也可以定义超出范围的数值。不过,在正常使用java编译器的话,这种情况是不会出现的。

    除了基本数据类型的范围之外,还需要知道基本数据类型的大小。

    在栈中,在32位hotspot虚拟机中,对于32位数据类型以内的数据类型:boolean/byte/short/char/reference/float/int占用4个字节,相当于1个slot,如果是64位数据类型:double/long的话,则占用2个slot;在64位hotspot虚拟机中,boolean/byte/short/char占用8个字节。

    在堆中,基本数据类型boolean/byte/short/char分别占用1/1/2/2个字节。

    存储:如果int类型的数值以这四种基本数据存储的话,则会进行掩码操作,因为这四种类型的长度不足以容纳int类型(8)。boolean类型比较特殊,因为boolean直接以byte存储的,但是又为了保证boolean在堆上的值是合法的,所以只取了最后一位来作为值进行存储。

    加载:如果这四种基本数据类型加载到栈中的话,则在高位进行填充。

     

     

     

    展开全文
  • java中的基本数据类型和引用数据类型
  • java中的基本数据类型和引用数据类型以及它们的存储方式堆内存和栈内存
  • java中的基本数据类型值处理成JS的一般变量值,这个怎么做
  • java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。 下面让我们一起来分析一下原因: 基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型在内存中的存储问题来解释一下...
  • java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。  下面让我们一起来分析一下原因:  基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型在内存中的存储问题来...
  • 特点:一、从概念方面来说基本数据类型:变量名指向具体数值引用数据类型:变量名指向存数据对象内存地址,即变量名指向hash值二、从内存构建方面来说基本数据类型:变量在声明之后java就会立刻分配给他内存空间引用...
  • 转载自 Java中的基本数据类型转换(自动、强制、提升)   说基本数据类型转换之前,先了解下 Java 中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围,如下图所示。 重新温故了下原始数据类型...
  • 首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。  下面让我们一起来分析一下原因:  基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型在内存...
  • 说明: 1:好记性,不如写博客 2:静下心来丢掉手机不做低头族 3:开始学习以及复习Android第一节课 4:本章资料取决于Java编程思想(第4版)第一阶段:JAVA面向对象编程 JAVA基本数据类型和引用数据类型 基本数据...
  • java数据类型以及转换原则 一、数据类型分类:主要分为 基本类型、引用类型两大类; ... (1)布尔型和其它基本数据类型之间不能相互转换;  (2)byte型可以转换为short、int、、long、f...
  • Java中的基本数据类型转换

    千次阅读 2017-03-21 16:43:50
    Java 语言是一种强类型的语言。强类型的语言有以下几个要求: 1.变量或常量必须有类型:要求声明变量或常量时必须声明类型,而且...Java 语言中的数据类型转换有两种: 1.自动类型转换:编译器自动完成类型转换,不
  • Java中主要有8中基本数据类型,分别是byte,short,int,long,char,boolean,float,double,具体如下: 1、boolean:数据值只有true或false,适用于逻辑计算。 2、char:char型(字符型)数据在内存中占用2个字节。...
  • java中的基本数据类型存放位置

    千次阅读 2019-05-17 21:32:54
    基本数据类型是放在栈还是放在堆,这取决于基本类型声明位置。 一:在方法声明变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法声明变量就放在方法栈,...
  • Oracle数据库number类型在hibernate引用 1)如果不指定number长度,或指定长度n>18 id number not null,转换为pojo类时,为Java.math.BigDecimal类型 2)如果number长度在10 id number(n) not null...
  • Java 中的基本数据类型有哪些?

    千次阅读 2019-08-12 09:25:58
    我想说的是,万变不离其宗,只要学好基础,就不愁学不会框架,很多自诩多年开发经验的程序员可能只是停留在各种框架的基本应用上,而对基础知识一知半解。这样长期下去,在职业生涯发展期间其实是很难精进的,这并...
  • Java语言提供了八种基本类型,可以分为四类: ...byte 数据类型是8位、有符号,以二进制补码表示整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组节约空间,主要代...
  • Java程序在运行时,需要在内存中分配空间。为了提高运算效率,对内存空间进行了不同的划分(一共有5种)——因此,...实体中的变量都有默认初始化值。 实体不被使用时,会在不确定时间被回收。 声明数组 为数组中
  • Java中的基本数据类型转换详解: 所谓数据类型之间的相互转换,就是将变量从当前的数据类型转换为其它数据类型。在Java中数据类型之间的相互转换可以分为一下三种情况:   1.基本数据类型之间的相互转换; 2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,048
精华内容 14,819
关键字:

java中的基本数据类型

java 订阅