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,不过我们无法直接对它们进行操作

Java基础-数据类型int,short,char,long,float,double,boolean,byte的更多相关文章

  1. JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs

    转载地址:http://blog.sina.com.cn/s/blog_5eab3d430101fdv6.html 代码片段: fmax = Float.MAX_VALUE; fmin = Float ...

  2. Java基础-数据类型和包装类

    数据类型 分为基本数据类型和引用数据类型 基本数据类型变量存储的就是数据本身,引用数据类型的变量是保存数据的空间地址 四种基本数据类型: 逻辑型 boolean 文本型 char 整数型 byte s ...

  3. JAVA基础数据类型

    JAVA的数据类型粗略分两种 1.基本数据类型 整数类型: byte,short,int,long 浮点类型: float,double 字符类型: char 布尔类型: boolean 基本语法格式 ...

  4. Java基础 - 数据类型和运算符

    Java 语言支持的类型分为两类:基本数据类型(Primitive Type)和引用类型(Reference Type). 目录 基本数据类型 数值类型 整数类型 byte short int lon ...

  5. 聊聊java基础,int值强制类型转换成byte

    聊聊java基础,int值强制类型转换成byte 知识点:byte.short.char在表达式中会自动提升为int 之前做一个应用时,打印IP地址,因为是用4个byte存储的,所以打印的时候值范围是 ...

  6. [五]基础数据类型之Short详解

      Short 基本数据类型short  的包装类 Short 类型的对象包含一个 short 类型的字段      原文地址:[五]基础数据类型之Short详解   属性简介   值为  215-1 ...

  7. Java基础-数据类型应用案例展示

    Java基础-数据类型应用案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.把long数据转换成字节数组,把字节数组数据转换成long. /* @author :yinz ...

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

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

  9. java基础数据类型包装类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

随机推荐

  1. org.springframework.web.context.ContextLoaderListen 报错解决办法

    今天搭建SSH项目的时候出现了如下错误: 严重: Error configuring application listener of class org.springframework.web.con ...

  2. Hill密码

    希尔密码(Hill Password)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明.每个字母当作26进制数字:A=, B=, C=... 一串字母当成n维向量,跟一个 ...

  3. Redis集群知识解析

    redis集群在启动的时候就自动在多个节点间分好片.同时提供了分片之间的可用性:当一部分redis节点故障或网络中断,集群也能继续工作.但是,当大面积的节点故障或网络中断(比如大部分的主节点都不可用了 ...

  4. 后台跳转到登录页嵌套在iframe的问题(MVC例)

    //首页 public ActionResult Index() { if (!Request.IsAuthenticated) //判断权限,没有登录就跳回登录页 {string url = Url ...

  5. WinForm中异步加载数据并使用进度条

    在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...

  6. .NET编译的目标平台(AnyCPU,x86,x64)

    转载:http://blog.sina.com.cn/s/blog_78b94aa301014i8r.html 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有D ...

  7. OpenGL 4.3配置教程

    OpenGL 4.3配置教程 下载开发包 需要下载的开发包主要包含如下几个组件:freeglut+glew+ OpenGL.Development.Cookbook+源码+GLM+SOIL. Open ...

  8. word 2010自定义快捷键提高工作效率

    经常使用word处理文档, 做笔记的时候会把word文档框缩小,以便同时看pdf同时记录笔记,但是缩小的word框不能把所有的菜单项显示出来,我比较常用那个插入边框下面的那个横线来做分割符,但是缩小了 ...

  9. Week2学习过程报告

    一.学习内容 1. 熟悉Linux系统下的开发环境   2. 熟悉vi的基本操作   3. 熟悉gcc编译器的基本原理   4. 熟练使用gcc编译器的常用选项   5 .熟练使用gdb调试技术    ...

  10. Linux c实现服务端与客户端聊天

    主要利用socket通信实现,具体代码如下 客户端: #include <stdio.h> #include <stdlib.h> #include <string.h& ...