Java数据类型

Posted 是小辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据类型相关的知识,希望对你有一定的参考价值。

目录

前言:

1、基本数据类型

1.1整型

1.1.1整型变量

1.1.2短整型变量

注意:

1.1.3长整型变量

1.1.4字节型变量

1.2浮点型

1.2.1双精度浮点型

1.2.2单精度浮点型

1.3字符型

1.4布尔型

2.引用数据类型

总结


前言:

 Java的数据类型分为基本数据类型和引用数据类型。


1、基本数据类型

        基本数据类型分为四种:1.整型(字节型、短整型、整型、长整型),2.浮点型(单精度浮点型、双精度浮点型),3.字符型4.布尔型

类型名称关键字占用内存取值范围
字节型byte1 字节-128~127
短整型short2 字节-32768~32767
整型int4 字节-2147483648~2147483647
长整型long8 字节-9223372036854775808L~9223372036854775807L
单精度浮点型float4 字节有范围,但不关注
双精度浮点型double8 字节有范围,但不关注
字符型char2 字节0~65535 
布尔型boolean1 字节true 或 false

1.1整型

        整型分为四种:字节型、短整型、整型、长整型

1.1.1整型变量

/ 方式一:在定义时给出初始值
int a = 10;
System.Out.println(a);
// 方式二:在定义时没有给初始值,但使用前必须设置初值
int b;
b = 10;
System.Out.println(b);
// 使用方式二定义后,在使用前如果没有赋值,则编译期间会报错
int c;
System.Out.println(c);
c = 100;
// int型变量所能表示的范围:
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);
// 注意:在定义int性变量时,所赋值不能超过int的范围
int d = 12345678901234;  // 编译时报错,初值超过了int的范围

注意:

1. int不论在何种系统下都是4个字节
2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出
4. 变量在使用之前必须要赋初值,否则编译报错
5. int的包装类型为 Integer

1.1.2短整型变量

short a = 10;
System.Out.println(a);
// short型变量所能表示的范围:
System.Out.println(Short.MIN_VALUE);
System.Out.println(Short.MAX_VALUE);

注意:

1. short在任何系统下都占2个字节
2. short的表示范围为:-32768 ~ 32767
3. 使用时注意不要超过范围(一般使用比较少)
4. short的包装类型为Short1.1.3长整型变量

1.1.3长整型变量

int a = 10;
long b = 10;  // long定义的长整型变量
long c = 10L; // 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l
long d = 10l; // 一般更加以加大写L,因为小写l与1不好区分
// long型变量所能表示的范围:
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long.MAX_VALUE)

注意:

1. 长整型变量的初始值后加L或者l,推荐加L
2. 长整型不论在那个系统下都占8个字节
3. 长整型的表示范围为: -9223372036854775808L~9223372036854775807L
4. long的包装类型为Long

1.1.4字节型变量

byte b = 10;
System.Out.println(b);
// byte型变量所能表示的范围:
System.Out.println(Byte.MIN_VALUE);
System.Out.println(Byte.MAX_VALUE);

注意:

1. byte在任何系统下都占1个字节
2. byte的范围是:-128 ~ 127
3. 字节的包装类型为Byte

1.2浮点型

1.2.1双精度浮点型

double d = 3.14;
System.Out.println(d);

注意:

1. double在任何系统下都占8个字节
2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
3. double的包装类型为Double

4. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

1.2.2单精度浮点型

float num = 1.0f;   // 写作 1.0F 也可以
System.out.println(num);
        int i = 2;
        int k = 3;
        double j = 3.0;
        System.out.println(i / k);  //输出结果是?
        System.out.println(i / j);  //输出结果是?

上面代码输出分别是多少呢?

运行我们发现结果为:

0
0.6666666666666666

为什么会造成这样的结果?这是因为:

在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.6666666666666, 需要使用 浮点型计算。

1.3字符型

char c1 = 'A';   // 大写字母
char c2 = '1';   // 数字字符
System.out.println(c1);
System.out.println(c2);
// 注意:java中的字符可以存放整形
char c3 = '你';
System.out.println(c3);

注意:

1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值。
2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文。

3. char的包装类型为Character。

1.4布尔型

boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);

注意:

1. boolean 类型的变量只有两种取值, true 表示真, false 表示假。
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。

3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节。
4. boolean的包装类型为Boolean。


2.引用数据类型

引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。

引用类型指向一个对象,不是原始值,指向对象的变量是引用变量。

在java里面除去基本数据类型的其他类型都是引用类型,自己定义的class类都是引用类型,可以像基本类型一样使用。

引用类型常见的有:String、StringBuffer、ArrayList、HashSet、HashMap等。


总结

瑞思拜!

java 数据类型


java 是一种强类型编程语言,说明java 程序中用到的所有变量都必须是有明确定义的数据类型。

java 数据类型可以分为基本数据类型 和 引用数据类型。

基本数据类型:

  数值类型 :整数类型 (byte、short、int、long) 、浮点类型 (float、double)

  字符类型 :char

  布尔类型 :boolean

引用数据类型:

  类(class) 、数组 、接口(interface)

基本数据类型 和 引用数据类型的差别在于 :基本类型的变量和对象句柄存储在栈内存中,占用大小固定的空间,可以通过变量名直接访问其值;所有的java 对象存储在堆内存中,堆内存是一个运行时的数据区,占用任意大小空间,需要通过储存在栈内存中的对象引用来直接访问其值。


 

 这里先主要介绍基本数据类型。

java 语言中定义了4类、8种基本数据类型。

整数类型:byte、short、int、long

浮点类型:float、double

字符类型:char

布尔类型:boolean

java语言的基本数据类型
数据类型 占内存空间(字节数) 取值范围 默认值
byte 1 -128~127 0
short 2 -32768~32767 0
int 4 -2147483648~21474881647 0
long 8 -9223372036854775808~9223372036854775807 0L
float 4 1.4E-45~3.4028235E38 0.0f
double 8 4.9E-324~1.7976931348623157E308 0.0d
char 2 ‘\u0000‘~‘\uffff‘ ‘\u0000‘
boolean 1 true,flase flase

           java语言中,基本数据类型占用固定的内存长度,与具体的软硬件平台环境无关。


 

常量

  常量是指在程序执行的过程中,其值不能改变的量。声明常量要用关键字 final 。

说明:

  (1) 常量的命名规则是每个字母都大写。

  (2) 在执行的过程中如果想对常量重新赋值,编译将会出错。

  在java语言中,常量一般分为整型常量、浮点常量、布尔常量、字符常量和字符串常量。

1.整型常量

  在java语言中,整型常量可分为以下三种:

  (1)十进制整型:十进制整型常量是由0~9组成的数字序列,并且该序列的第一个数字不能是0(单独一个0除外)。 

  (2)八进制整型:八进制整型常量的第一个数字是0,其后是由0~7组成的数字序列。

  (3)十六进制整型:十六进制整型常量是以“0x”或“0X”开头,其后是十六进制数字序列。十六进制的数字序列是由数字0~9和字母A~F组成。

2.浮点常量

  浮点常量是指可以含有小数部分的数值常量。根据占用内存的长度不同,浮点常量可以分为单精度浮点常量和双精度浮点常量。单精度常量占4个字符节,在其数字后跟一个f或F,双精度常量占8个字节,在其数字后跟d或D。其中,双精度常量后的d或D可以省略,如果一个浮点常量后没有字母,默认是双精度浮点常量。

浮点常量只能采用十进制表示法,有传统计数法和科学计数法。

  (1)传统计数法:由整数部分、小数点和小数部分组成。

  (2)科学计数法:当一个数字很大或者很小时,用科学计数法。例如:1.23e3

3.布尔常量

  布尔常量只有两个值:true和false .

4.字符常量

  字符常量是用一对单引号括起来的单个字符。如‘q‘ ,java中的字符数据是16位无符号数据类型,使用的是Unicode字符集。

5.字符串常量

  字符串常量是用双引号括起来的由0个或者更多字符组成的序列,字符串常量里可以包含转义字符。


 

变量

  变量是指在程序执行过程中,其值可以改变的量。变量在程序中起着十分重要的作用。可分为:整型变量、浮点型变量、字符型变量和布尔型变量。

基本数据类型之间的转换

  数据类型转换是指常量或变量从一种数据类型转换为另一种数据类型。java中,基本数据类型的转换主要包括两种情况:自动转换和强制类型转换。

  1.自动转换

    自动转换是指系统自动的转换数据类型,是从低精度的数据向高精度数据的转换。关系如下;

    byte-->short-->int-->long-->float-->double

    char-->int

  注:当数据很大时,当int型和long型向float型转换、long型向double型转换时可能会有精度损失。

  2.强制类型转换

    强制类型转换是指强制性的将数据的类型进行转换,是从高精度向低精度的转换,需要用到强制类型转换符“(type)”。语法如下:

      (目标类型)表达式;

    例如:float f = 88.88f;

       int x = (int)f;  //将float类型强制转换为int类型。


 

以上是关于Java数据类型的主要内容,如果未能解决你的问题,请参考以下文章

JVM类加载机制

JAVA 8大数据类型

JAVA语言开发基本原理

java语言开发环境搭建

JVM类加载

java特点面向对向数据类型