Java基本数据类型

简介: Java基本数据类型总结 种类共有8种 byte 1Byte = 8bit -128 ~127 short 2Byte = 16bit -32768 ~ 32767 int 4Byte = 32bit -2147483648~+2147483647 long 8Byt

Java基本数据类型总结

种类共有8

byte

1Byte = 8bit

-128 ~127

short

2Byte = 16bit

-32768 ~ 32767

int

4Byte = 32bit

-2147483648~+2147483647

long

8Byte = 64bit

263次方 ~ 263次方-1

Float(单精度)

4Byte = 32bit

 

Double(双精度)

8Byte = 64bit

 

布尔类型boolean

 在jvm中为int,或short

true,or false 

char

 2Byte = 16bit

表示一个unicode的字符 

 

引用数据类型:接口,枚举,类,数组,注解

 

 

  内存中以二进制的形式存放数据,这个二进制以8位为一个单位,每8位构成一个字节(byte)

  (1)boolean类型

       a.boolean类型的变量只能够取true或者false,在JVM中,会使用int或者byte表示boolean,但是这对Java源程序是屏蔽的,在Java源程序中,boolean类型的变量值只能够取true或者false;

   (2)整数类型byte, short, int, long

          a 都是整数类型,都是有符号的整数 

          b 在Java语言中,如果数学表达式都是整数,则表达式的返回值只可能是int类型或者long类型,如果把返回值赋给byte类型的变量,就必须进行强制类型的转换(类型转换的目的是截断数据,保存数据的后若干位,使它满足结果类型的需要,因为long的内存位数要比int多,因此保存时不需要截断数据就可以保存)

          c 在给整数类型变量赋值时,如果该整数值在类型的取值范围内,就可以把它直接赋给这种类型的变量,如果不在,则需要进行强制类型转换

    (3)char类型

           java中使用Unicode对字符进行编码,由于计算机中只能够保存二进制的数据类型,因此需要为各个字符进行编码,常用的是ASCII码,这种编码使用一个字节的7位,一共能够表示128个字符

  3. 引用类型

      3.1 引用类型可以分为类引用类型(引用类或者子类的实例),接口引用类型(引用实现接口的类的实例)和数组引用类型(数组是Java中真正的对象)

      3.2 如果一个引用变量不引用任何对象,可以给它赋值为null

  4. 基本类型 vs 引用类型

      (1)基本类型代表简单的数据类型,引用类型引用的实例能表示任意一种复杂的数据结构(引用变量字段在执行Java程序时要进行常量池解析,具体就是有直接引用代替符号引用)

      (2)基本类型仅表示数据类型,引用类型所引用的实例除了表示复杂数据结构类型外,还能够包括操纵这种数据类型的行为

      (3)对于基本类型的变量,JVM会为其分配数据类型实际占用的内存空间,对于引用类型变量,它仅仅是一个指向堆区中某个实例的指针。

  5. new 方法

      (1)当一个引用类型的变量被定义之后,如果没有进行初始化,则它不指向任何对象,即默认值为null;

      (2)使用new方法创建对象的过程

                a 为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值;

                b 如果实例变量在定义时显示初始化,则把初始化值赋给实例变量;

                c.调用构造方法

                d.返回对象的引用

  6.变量的作用域

        a. 变量的作用域指它的存在范围,只有在这个范围中,程序代码才能够访问它;

        b. 变量的作用域决定变量的生命周期,变量的生命周期指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除它所占用的内存空间的过程,当一个变量被定义时,它的作用域就确定了。

        c.根据作用域得不同,可以将变量分为以下几种类型:

            c.1 成员变量:在类中声明,作用域是整个类(在哪里声明,作用域是哪里)

            c.2 局部变量:在一个方法内部或者在方法的代码块内部生命,如果在方法中声明,则它的作用域是整个方法,如果在代码块中声明,它的作用域是这个代码块;

            c.3 方法参数:方法或者构造器的参数,它的作用域是整个方法或者构造器;

            c.4 异常处理参数: 传递给异常处理代码块,即catch(Exception e)语句中的异常参数e,它的作用域是紧跟catch(Exception e)语句后的代码块

  7.分析各种变量:成员变量  局部变量

            7.1 成员变量有两种,一种是被static修饰的变量,称为类变量或者静态变量,另一种没有static修饰,称为实例变量。

                  a.静态变量在内存中只有一个,只有当某个类被程序首次主动调用时,才会对该类型进行初始化,在初始化之前首先进行加载和连接操作,在连接的准备阶段给类变量分配内存,并赋予默认的初始值,在初始化阶段,对静态变量进行初始化(静态变量有两种初始化方式,一是在定义时直接进行初始化,二是在静态代码块中进行初始化)(静态变量仅初始化一次),类变量创建后,一直保存在内存运行时数据区的方法区中,保存在类型信息中,被该类型的所有实例所共享,静态变量可以通过类名访问,静态变量的生命周期取决于类的生命周期,当加载类的时候,静态变量被创建并分配内存(变量生命周期开始),当卸载类时,静态变量被销毁,并释放所占的内存(这时变量的生命周期结束)

                  b.类的每一个实例都有自己的实例变量,因此可以有多个实例变量,每创建一个实例,JVM就创建实例变量并分配内存,实例变量的生命周期也就开始了,当销毁对象实例时(内存被GC回收,对象的实例变量也就结束了它的生命周期)

                  c.不能够通过类名访问类的实例变量,因为类的每个实例变量都属于类的某个具体的实例,用类名访问实例变量不知道具体是访问那个实例的实例变量;

          静态变量的生命周期取决于类型何时被加载以及卸载,实例变量的生命周期取决于实例何时被创建以及销毁

             7.2 局部变量

  局部变量的生命周期取决于所属的方法何时被调用以及结束调用;

   当JVM中的某个线程调用一个方法时,会为这个方法中的局部变量分配内存(在堆区的Java栈中),当JVM执行结束一个方法时(或者是方法执行完毕,或者是出现某些异常),该方法的生命周期结束,方法的局部变量的生命周期也随之结束

  不允许在相同的作用域中使用相同名字的变量,但是在不同的作用域中,变量的名字可以相同,比如,如果局部变量和某个实例变量重名,在局部方法中,局部变量会覆盖实例变量,如果让实例变量可见,应该使用this关键字进行调用

 

  8.参数传递

        如果方法的参数是一个简单类型,则直接传递参数的值,如果方法的参数是一个引用类型(类类型或者接口类型)或者数组类型,则传入方法中的是对象的引用,也就是对象的地址(是一个值)

        需要注意的一点是,调用方法的局部变量如果作为被调用方法的参数使用,它们也不是一回事,调用方法的局部变量和被调用方法的参数保存在不同的内存空间中,前者保存在调用方法的栈帧的局部变量区中,后者保存在被调用方法的局部变量区中,它们的值可以相同,如果传入的是引用类型的变量,参数和变量保存相同的地址,这样,如果在被调用方法中修改地址中的对象的数据,实际对象就会发生改变(因为这是对内存的永久性的操作),即使被调用的方法的生命周期结束,调用方法的局部变量所引用的对象的值还是会跟着变。

  9.变量的初始化

   (1)对于成员变量(无论是静态的类变量还是实例变量)可以是先定义,再使用,因为JVM在为这些变量分配内存时,会首先根据类型为这些变量赋予默认值;

   (2)对于局部变量,必须是先定义,再初始化,才能够使用,因为JVM在栈帧中为局部变量分配内存空间时,并不会为局部变量赋予默认值。

 

  10.直接数的复制

    Java中共有7种直接数:int  long  float  double  String  char boolean

  (1)基本类型不能付给引用类型,这里String是引用类型,因此String类型和char类型之间不能够相互赋值

  (2)boolean类型的直接数只能够赋给boolean类型的变量,同样,boolean类型的变量值接受boolean类型的直接数

   (3)把Int类型的直接数赋给byte,short或者char类型的变量是,如果直接数在这些变量的取值范围内,则可以直接赋值,如果不在变量类型的取值范围内(变量的类型说明了变量的取值范围以及在变量上能够进行的操作),必须进行强制类型转换

  (4)将float和double类型的直接数赋给整形变量时,必须进行强制类型转换,而把整数型直接数赋给float和double型变量时,允许直接赋值

  (5)float直接数允许直接赋给double类型的变量,而

    在总结一次

     Java中直接数的类型:int  long  float  double  char  String  boolean

 

     java中变量的类型 整数类型:byte short int long

                               字符类型:char

                               boolean类型

 

目录
相关文章
|
4月前
|
Java
当Java数据类型遇上“爱情”,会擦出怎样的火花?
当Java数据类型遇上“爱情”,会擦出怎样的火花?
56 1
|
3月前
|
Java
java基础(8)数据类型的分类
Java数据类型分为基本数据类型(8种)和引用数据类型。基本类型包括byte, short, int, long, float, double, boolean, char。每种类型有固定占用空间大小,如int占用4字节。字符编码如ASCII和Unicode用于将文字转换为计算机可识别的二进制形式。
81 2
|
4月前
|
Java 程序员
Java数据类型:为什么程序员都爱它?
Java数据类型:为什么程序员都爱它?
55 1
|
4月前
|
存储 Java
Java数据类型:你究竟有多少面孔?
Java数据类型:你究竟有多少面孔?
40 1
|
4月前
|
存储 算法 Java
我与Java数据类型的那场“风花雪月”
我与Java数据类型的那场“风花雪月”
47 0
|
4月前
|
存储 自然语言处理 Java
Java数据类型:为何它如此“撩人”?
Java数据类型:为何它如此“撩人”?
44 0
|
4月前
|
存储 算法 Java
从菜鸟到大神,Java数据类型是如何改变我的人生的?
从菜鸟到大神,Java数据类型是如何改变我的人生的?
33 0
|
21天前
|
Java
Java基础之数据类型
Java基础之数据类型
17 6
|
22天前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
46 7
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
53 4