Java数据类型介绍

个人微信:yinhaoliang6

2. Java 数据类型

Java 中的数据类型,分为引用类型和基本数据类型。基本类型有 8 种,引用类型将在面向对象时详细讲解,此处了解即可.

2.1. 八种基本数据类型 ***

整型: byte, short, int, long
浮点型: float, double
字符型: char
布尔型: boolean

2.2.整数类型 ***

整数类型有 byte, short, int, long

类型 占位 最大值 最小值
byte 8 2^7-1 -2^7
short 16 2^15-1 -2^15
int 32 2^31-1 -2^31
long 64 2^63-1 -2^63
  • byte占用8位,每位用0或1表示,能够表示256(2^8)个数据。
  • 这8位分为符号位(最高位)和数值位(剩余七位),符号位0表示正数,1表示负数
    整数字面量默认是 int 类型,如果不超出声明类型的范
    围, 则可以给小类型直接赋值(不需要强记,在编写程序过程中会逐渐理解)。
byte b = 128;  //超范围赋值  
byte b1 = 127;
byte b2 = -128;

使用整数类型(byte, short, int)要注意取值范围, (-128~127)之间的整数字面量可以直接赋值给byte 类型,Java 会自动处理符号位.
long 类型的字面量需要使用"L",“l” 后缀,否则编译不通过。注意如图所示,因为整数值的默认字面量是 int 类型,13241234856854 明显超出了 int 的范围,所以报编译错误,但是如果在后面加了后缀"L",则表示该数是 long 类型的.
java 底层 byte,short 按照 32 位计算(注意 int 类型范围也是 32 位)

public static void main(String[] args)
{
    long a = 13241234856854; //编译错误  
    long b = 13241234856854L;
}

2.3.浮点数类型 **

用于表示小数的数据类型.
float 类型共 32 位(与 int 相同)
int 类型的数据能表示的范围比 float 类型小,int 类型数据表示的精度比 float 大.
float 类型因为精度过低,所以一般很少使用,一般我们会使用 double。
对于float类型来说,它小数点后面有6-7位小数,而对于double类型来说,它小数点后面有15位小数,所以double类型比float类型精度高。又由于15是 7的两倍多,所以float称为单精度浮点型, double称之为双精度浮点型.
double 精度比 int 精确,但是不如 long;double 范围大于 long。
需要注意的是,浮点数的字面量默认是 double, D d 后缀是 double, f F 是 float。
Java虚拟机规范:https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.2

2.4.字符类型 char **

  1. java中char类型占2个字节、16位可以存放汉字,字母和数字占一个字节,一个字节8位,中文占2个字节,16位
  2. char类型赋值
    char a=’a’; //任意单个字符,加单引号。

char a=’中’;//任意单个中文字,加单引号。

char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符
字符类型是经常用到的,比较有趣,要掌握。字符类型是一个16位无符号整数, 是一个2进制数
这个数值是一个字符的 unicode 编码值。
unicode 编码,是全球范围内的编码方法, 编制了英文, 中,日,韩,阿拉伯, 希伯来等等共 8 万多个
字符(unicode 编码在设计的时候就旨在能表示世界上所有文字)
Java char 的范围 0~65535 不能表示全部 unicode,但是可以表示 unicode 只能够最常用的部分,
足够用的了。
Unicode 编码中英文部分不与ASCII 码兼容(ASCII 表示范围 0~128), 同时英文字符和数字是连续
编码的。
编码是什么?在计算机中不能写字,只能有用 0 和 1 表示的数,那么我们人为做了规定,某个数除
了表示一个数,还可以表示成一个字符。一个 10 进制数 65 代表的字符就是大写字母 A,如下所示:

public class Test
{
    public static void main(String[] args)
    {
        char c = 65;
        System.out.println(c);    //A
    }
}

这一切都是为了尽可能的按人的习惯显示和输出,在计算机内部永远是 0 和 1 存储和运算的。
如下图,20013 按字符输出是"中",按数字输出是 20013.
unicode对照表
http://blog.csdn.net/hherima/article/details/9045861

public static void main(String[] args)
{
    char c = 20013;
    System.out.print(c);  //中  
    System.out.print((int)c);
}

注:例中的(int)c 表示将字符强制类型转换为数字,接下来会讲。
如上例中,做个运算,如下图,我们得到的输出结果是 C,是因为在 Java 中运仍然按数字运算,
但是输出时按照它的类型(char)来输出。

public static void main(String[] args)
{
    char c = '中' + 3;
    System.out.println(c);  //丰  
    System.out.println((int)c);
}

如下案例是利用 Java 提供的产生随机数的方法随机生成一个数,然后将此数转换为 char 类型

public static void main(String[] args)
{
    Random r = new Random();
    int rInt = r.nextInt(58);  //产生一个随机数[0,58);
    System.out.println(rInt);
    char c = (char)('A' + rInt);
    System.out.println(c);
}

char 类型是无符号的 16 位整数,最小值为 0, 最大值为 65535 = 2^16-1,在程序中为一个字符
赋值,字符字面量使用单引号,可以为 char 赋值的有字符、数字、符号,如下所示:
image
注意:特殊字符采用转义字符表示,如:
‘\n’ 表示回车
‘\t’ 表示制表位字符
‘\’ 表示\
‘’’ 表示单引号
‘"’ 表示双引号
'\u4e2d’表示 unicode 编码对应的字符
当我们的控制台显示如下为"?"时,代表在我本操作系统中找不到该数字对应的字库(我们的操作系统中最多存 2 万多的汉字,65535 本操作系统也不认识)

扫描二维码关注公众号,回复: 9420735 查看本文章

2.5.boolean 布尔类型 *

表达: 真(true)/假(false)。一般用于判断语句块中,如图
image

发布了14 篇原创文章 · 获赞 3 · 访问量 407

猜你喜欢

转载自blog.csdn.net/lovemore2/article/details/103883106