Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定。由于是statical typed,导致Java语言也是强类型(Strong typed)的。强类型意味着每个变量都具有一种类型,每个表达式具有一种类型,并且每种类型都是严格定义的,类型限制了变量可以hold哪些值,表达式最终产生什么值。同时限制了这些值可以进行的操作类型以及操作的具体方式。所有的赋值操作,无论是显式的还是在方法调用中通过参数传递,都要进行类型兼容性检查。

Java的数据类型有两种: 

Java数据类型通常(分类方法多种多样)从整体上可以分为两大类:基础类型(primitive types)和引用类型(reference types),基础类型的变量持有原始值,引用类型的变量通常表示的是对实际对象的引用,其值通常为对象的内存地址

关系整理一下如下图:

对象是动态创建的类实例或者动态创建的数组。而引用一般是指内存地址。所有的对象(包括数组)支持Object类中定义的方法。

基本类型具有明确的取值范围和数学行为。

基本数据类型和引用数据类型的区别主要在存储方式上:

  基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;引用数据类型在被床架时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

例如:我有一个类MyDate,其中有属性day,mouth,year等,有构造方法(带参数);

现在为其创建一个对象MyDate d1 = new MyDate(8,8,2008);

在内存中的具体创建过程是:

1)首先在栈内存中位其d1分配一块空间;2)然后在堆内存中为MyDate对象分配一块空间,并为其三个属性设初值0,0,0;3)根据类MyDate中对属性的定义,为该对象的三个属性进行赋值操作;4)调用构造方法,为三个属性赋值为8,8,2008;(注意这个时候d1与MyDate对象之间还没有建立联系)5)将MyDate对象在堆内存中的地址,赋值给栈中的d1;通过句柄d1可以找到堆中对象的具体信息。

1.基本数据类型(基础类型)

Java的八大基本数据类型为:

整型

byte字节型1字节 8bit  最大存储数据量是255,存放的数据范围是-128~127之间
short短整型2字节 16bit最大数据存储量是65536,数据范围是-32768~32767之间
int整型4字节 32bit最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1
long长整型8字节 64bit最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1 

浮点型

float单精度4字节 32bit数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F double双精度8字节 64bit数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加 

字符类型

char字符型用单引号 

布尔类型

boolean布尔型true/false(只有真假两种结果)

数据值域的知识说明:

1.一个bit是计算机考研存储的最小的数据单位。即1位,只可能是0或1. 2.一个byte由八个bit组成,即八位,可以表示256个整数值,又由于byte在Java中有符号之分(即正负数),所以范围位-128~127. 3.一个char在Java中由两个byte组成,用来表示一个字符,即unicode编码,是无符号类型。 4.int和float在Java中由4个byte组成。 5.每个long或double型变量占用八个byte的存储空间。 6.1T=1024G,1G=1024M,1M=1024K,1K=1024B 

心得:

1.程序中的整数默认都是int型,即在方法调用直接传入的一个具体的整数值,默认情况下是int型。

2.值域小的的类型可以自动转化为值域大的。值域大的不能直接转化为值域小的,但是可以通过强制转化实现。

eg:

byte a=10;
int
i=a;
(程序正常运行,输出的i为10)
eg:int a=10;
byte
i=(byte)a;
(程序正常运行,输出的i为10) 

若a的值超出了byte类型的上限或下限,可以输出值,但该值的数据会改变,改变规律如下:

假设a为int型,b为byte型(其他情况可以类比!~)

若a大于byte的上限值,则应减去其值域n次,直到最终的值落在-128~127之间,举个例子:int a=1000;

byte
b=(byte)a;//1000-256-256-256-256=-24
(输出的b为-24) 

3.浮点型转化为整型是不是四舍五入,而是直接截去小数部分。

double
b=12.5;
int
i=(int)12.5;
(输出值为12而不是13!) 

4.浮点型数字的科学表示方法:

比如:1.2e+12f(表示1.2乘以10的12次幂)
1e-21f(表示1乘以10的-21次幂) 

Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java5.0(1.5)开始,JAVA虚拟机(Java Virtual Machine)可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。

基本类型的优势:数据存储相对简单,运算效率比较高

包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想

2.对象数据类型(引用类型)

类、接口类型、数组类型、枚举类型、注解类型;

所有用class,interface,abstract 
class定义的类;

String是Java定义的一个类。

String的数据存储方式和Java的基本数据类型是一致的。

String的定义方式

String str="abc"; String str=new String(); 

 3 实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作

知识只有共享才能传播,才能推崇出新的知识,才能学到更多,这里写的每一篇文字/博客,基本都是从网上查询了一下资料然后记录下来,也有些是原滋原味搬了过来,也有时加了一些自己的想法

转载于:https://www.cnblogs.com/sunyubin/p/9751222.html

Java基础-数据类型int,short,char,long,float,double,boolean,byte相关推荐

  1. 一木.溪桥学Python-04: Python基础数据类型int ,float ,bool ,complex,None,str, 转义字符

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-04: Python基础数据类型int ,float ,bool ,compl ...

  2. JAVA基础数据类型转化

    JAVA基础数据类型转化 1.根据基础数据储存空间可以将基础数据类型做以下排列 //浮点数类型要比整数类型大 // byte,short,char=>int=>long=>float ...

  3. java基础-数据类型

    数据类型: (1)基本数据类型(4类8种): 整数类型:byte.short.int.long 浮点数类型:float.double 字符类型:char 布尔类型:boolean(ture false ...

  4. java中String,int,Integer,char、double类型转换

    java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...

  5. Java 基础类型int 与 Integer

    Java 基础类型int 与 Integer int与Integer区别 int是基础类型, Integer为对象并且为int的包装类 int的默认值为0, Integer为null 观察以下代码执行 ...

  6. C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short

    //从网络中读取C的无符号int,short,byte字节数组,相应转换成java的long,char,short short anUnsignedByte = 0; char anUnsignedS ...

  7. java char字符转编码_一、java基础-数据类型_数据类型转化_字符编码_转义字符

    1.Java  支持的8种基本数据类型: java的四种整数数据类型:byte 1    short 2     int4     long8 byte     8位带符号整数 -128到127之间的 ...

  8. Java 基础数据类型

    Java 提供的基础数据类型(也称内置数据类型)包含:整数类型.浮点类型.字符类型.布尔类型. 整数类型 整数类型变量用来表示整数的数据类型.整数类型又分为字节型(byte).短整型(short).整 ...

  9. java基础 -- 数据类型,基本程序结构

    JAVA基础概念 程序示例 //public 访问修饰符,这些修饰符用于控制程序的其他部分对这段代码的访问级别 // 关键字 class 表明Java程序中全部的内容都包含在类中,这里只需要将类作为加 ...

最新文章

  1. python staticmethodclassmethod
  2. 分布式系统架构知识储备
  3. 28.构造函数中,成员变量一定要通过初始化列表来初始化的?
  4. python网络通信框架_Python运维-Socket网络编程 (1)
  5. Spring 事务API 架构图
  6. 35--用两个栈实现队列
  7. 使用dubbo后尽量不用要@Service可能引起冲突
  8. OutLook 2010 (Bata) 中的邮件导出功能
  9. CCF NOI1005 存款收益
  10. [Hive]-Table
  11. MYSQL正在使用select发现现场记录方法,包括一个逗号分隔的字符串
  12. 计算机网络flash实训报告,flash动画实训总结精选 .doc
  13. atoll C语言实现
  14. 数学中的全微分(方程),全导数(公式),偏微分(方程),梯度,斜率,导数,方向导数等
  15. 小马哥-----高仿苹果6 plus刷机拆机多图展示 拆机主板图与开机界面图 6572芯片 v76机型
  16. 奥维 最新 图源2023
  17. 数据中心中出现极性问题怎么办?
  18. 最新的VMware Workstation Pro 17安装教程+安装包下载
  19. C#实现异步阻塞TCP(SocketAsyncEventArgs,SendAsync,ReceiveAsync,AcceptAsync,ConnectAsync)...
  20. 汽车理论第六章matlab,汽车理论第二章作业

热门文章

  1. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc
  2. python在财务上的应用-Python用于财务工作培训
  3. python培训中心-深圳Python培训
  4. python免费课程讲解-Python零基础免费入门课程
  5. 函数式编程语言python-用Python进行基础的函数式编程的教程
  6. python基础指令-python的一些基本命令
  7. python基础知识资料-Python学习--最完整的基础知识大全
  8. Ubuntu在命令行下不能够切换字母的大小写,只能输入大写字母
  9. 献给新手的深度学习综述
  10. 关于 quick-cocos 状态机