Java基本数据类型

Java基本数据类型总结

种类共有8种


byte


1Byte = 8bit


-128 ~127


short


2Byte = 16bit


-32768 ~ 32767


int


4Byte = 32bit


-2147483648~+2147483647


long


8Byte = 64bit


2的63次方 ~ 2的63次方-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类型

 

时间: 2024-09-23 20:06:31

Java基本数据类型的相关文章

浅析Java基本数据类型

作为一种强类型语言,Java针对每一种数据都定义了明确的数据类型.大体来讲可分为:基本数据类型和引用数据类型:在此,主要讨论前者,后者以后再继续探究. Java基本数据类型分为四类八种: 1: 整数 占用字节数 byte 1 short 2 int 4 long 8 2:浮点数 float 4 double 8 3:字符 char 2 4:布尔 boolean 1 请注意: 整数默认为int类型 浮点数默认为double类型 在声明double类型的数据时,建议添加后缀L 在声明float类型的

java代码-java引用数据类型的问题,请大神解释下标注的问题.....

问题描述 java引用数据类型的问题,请大神解释下标注的问题..... import java.util.Scanner; public class Bank implements Runnable { Acount acount; public Bank(Acount a) -->这个构造方法的含义? { this.acount=a; } public void run() { Scanner input=new Scanner(System.in); System.out.println(&qu

Java 基本数据类型 sizeof 功能【转】

  转自:http://blog.csdn.net/sunboy_2050/article/details/7310008 版权声明:本文为博主原创文章,未经博主允许不得转载. Java基本数据类型int     32bitshort   16bitlong    64bitbyte    8bit char    16bitfloat   32bitdouble  64bit boolean 1bit,This data type represents one bit of informati

Java基本数据类型与位运算

赋值运算符 赋值使用操作符"=".它的意思是"取右边的值(即右值),把它复制给左边(即左值)".右值可以是任何 常数.变量或者表达式 (只要它能 生成 一个值就行).但左值必须是一个明确的,已命名的变量.也就是说,必须有一个物理空间可以存储等号右边的值. 分类 基本数据类型 与 类数据类型 的不同 1. 对基本数据类型的赋值是很简单的.基本数据存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到了另一个地方. 2. 但是在为

java 基础数据类型

数据|数据类型 1.简单数据类型 逻辑类型  boolean 文本类型  char,String(特殊类型) 整数类型  byte,short,int,long 浮点类型  double,float boolean  两个值:true and false char  16位无符号(不分正负的)Unicode字符 必须包含在单引号内('')        eg:'\t' 表示一个制表符             '\u????' 表示一个特殊的Unicode字符 ????应严格按照4个16进制数进行

(三)java的数据类型

    java是一种强类型的语言,所谓强类型,意味着每个变量都要有确定的类型,每个表达式也要有明确的类型,包括传递的某些参数.java中从大的方面分有两大数据类型,分别是基本数据类型和引用数据类型,基本数据类型是java中规定的八种,引用数据类型则是除此八种以外的所有类型,一般都是在程序中根据需要自定义的.     基本数据类型包括整形int.字节形byte.短整型short.长整型long.字符型char.浮点型float.双精度小数型double和布尔型boolean,至于这些类型所对应的

Java 基本数据类型

  基本数据类型 所占用空间大小 byte b; 1字节 short s; 2字节 int i; 4字节 long l; 8字节 char c; 2字节(C语言中是1字节) float f; 4字节 double d; 8字节 boolean bool; false/true 1字节 基本数据类型注意事项: 1.未带有字符后缀标识的整数默认为int类型: 未带有字符后缀标识的浮点数默认为double类型. 2.如果一个整数的值超出了int类型能够表示的范围,则必须增加后缀"L"(不区分

java tring 数据类型-Java关于String转换其他数据类型的问题

问题描述 Java关于String转换其他数据类型的问题 小弟有个关于String转换其他数据类型的问题想请教各位大大,新手未有悬赏币,见谅.下面贴代码,问题在最后. person类 package com.local.person.bean;public class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id

java 基本数据类型-IdentityHashMap中 直接放入基本数据类型与 new Integer()的区别

问题描述 IdentityHashMap中 直接放入基本数据类型与 new Integer()的区别 import java.util.*; public class Test{ public static void main(String[] args) { // TODO Auto-generated method stub IdentityHashMap<Integer, String> map =new IdentityHashMap<Integer, String>();