java基本类型
8种数据类型
·java语言有8种基本数据类型,分别用于储存整数,浮点数,字符数据和布尔类型数据。

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

java 8种基本数据类型的储存空间和使用场景:如下:
类型名称 字节空间 使用场景
byte 1字节(8位) 储存字节数据
short 2字节(16位) 兼容性考虑
int 4字节(32位) 储存普通整数
long 8字节(64位) 储存长整数
float 4字节(64位) 存储浮点数
double 8字节(64位) 存储双精度浮点数
char 2字节(16位) 存储一个字符
boolean 1字节(8位) 存储逻辑变量(true,false)

**int 类型**

·int是最常用的整数类型,一个int类型的变量占用4个字节(32位),最大表示范围为:-2的31次方————2的31次方-1
即:-2147483648~2147483647
System.out.println(Integer.MAX_VALUE);
整数直接量是int类型
所谓整数直接量就是直接写出的整数
·例如:下面的语句,100就是直接量
int a=100;
关于整数直接量,需要注意如下要点

  • 整数的直接量的类型默认为int类型,如果直接写出整数超过int的表达范围,将出现编译错误;
  • 除了通常的十进制书写形势,横竖直接量也经常写16进制的形势(0X或者0x开头) 或8进制的形式(0开头)。
    例子:
    // int a=10000;
    // int a1=0x186a0;//16进制
    // int a2=0303240;//8进制
    // int a3=100000000000000000;//这个数值写出就是错误的,因为java认为所有直接写出的整数都是int整型,而这个数值好过了int的表达范围
    整型数据的除法运算中的取整
    ·两个整数相除,会舍弃小数的部分(不是四舍五入);
    例子: int c=5/3;
    System.out.println©;//1
    运算时要防止溢出的发生:
    ·整数运算的溢出:两个整数进行运算时,其结果可能会超出整数的范围溢出,整数过大而产出的溢出,结果为负数,而负数过大而产生的溢出,结果为正数。
    例子:
    int a=-2147483648;
    int b=2147483647;
    // System.out.println(a-1);//2147483647
    // System.out.println(b+1);//-2147483648
    System.out.println(b+2147483647+4); //2
    long类型
    在表示整数时,如果int类型的范围不够,可以使用long类型,一个long型的变量占用8个字节(64位),最大并表示范围为-2的63次方~2的63次方-1.
    -9223372036854775808~9223372036854775807;
    例子: -如果要表示long直接量,需要以L或l结尾。
    long a=2147483648l;//所有的数字赋值时都是用的int类型,如果超过了int的极限数字,必须在极限数字后加l
    System.out.println(a);//2147483648
    使用long类型进行较大整数的运算。
    ·对于较大整数运算(超过int表达范围),可以使用long型;
    long a=2147483641*2147483600l;
    //必须有一个long型数据参与的运算结果才是long型,否则会被认为是整型数据,可能会发生溢出。
    System.out.println(a);
    通过时间毫秒来储存日期时间
    ·JDK提供的System.currentTimeMillis();方法,返回1970年1月1日0点到此时此刻所经历的毫秒数,其数据类型为long,该方法经常用于计时操作。

double类型
使用double进行浮点数的运算
·浮点数,就是小数,包括:float和double
·double类型的精度值是float类型的两倍,这正是其(双精度)名称的由来(int类型可以自动转换成double)
·大多数场合使用double表示浮点数
double pi=3.14;
double r=4;
System.out.println(pirr);//50.24
double类型数据参与的运算结果还是double类型

浮点数的直接量有两种写法:

  • 通常写法:如:“3.14,0.1,.5”
  • 科学计数法:如:1.25E2(1.25的2次方)
    默认的浮点直接量为double型,如果需要表示float类型,需要加“f”或者‘F’后缀。
    例子:
    float a=3.14//编译错误,应该写成3.14f
    double运算时的舍入误差
    ·2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确表示1/3一样。
    ·所以2进制表示10进制会有一些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。
    例子:
    double money=3.0;
    double price=2.9;
    System.out.println(money-price);//0.10000000000000009
    char类型
    ·字符类型事实上是一个16位的无符号整数,这个值对应字符的编码。
    ·java字符类型采用Unicode字符集编码,Unicode是世界上通用的定长字符集,所有的字符都是16位
    ·字符直接量可以采用诸如“中”的形式,也可以采用16进制的表示形式,形如“+”\u4e2d
    char c=‘\u4e2d’;
    System.out.println©;//中
    \u4e2d为“中”所对应的16位Unicode编码中的的16进制表示形式。
    对char型变量赋值
    .在对char型变量赋值时,可以采用如下三种方式:
    -字符直接量:形如“A”,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。
    -整数直接量:范围在0~65535之间的整数,变量中实际储存的即该整数值,但是表示的是该整数值所对应的Unicode字符。
    -Unicode形式:形如:“\u0041(Unicode的16进制表示符)”,Unicode字符的16进制形式。
    使用转义字符
    ·对于不方便输出的字符采用转义符表示。
    转义字符 含义
    ‘\n’ 表示回车符 System.out.println(“你是\n帅哥吗”);
    ‘\r’ 表示换行符 System.out.println(“你是\r帅哥吗”);
    ‘\’ 表示反斜杠(\) System.out.println(“你是\帅哥吗”);
    ‘‘’’ 表示单引号(‘’) System.out.println(“你是’帅哥吗’”);
    ‘“”’ 表示双引号(“”) System.out.println(“你是"帅哥吗”");
    “\t” 空格 System.out.println(“你是\t帅哥吗”);

boolean类型
使用boolean变量进行关系运算
·boolean类型适用于逻辑运算,表示某个条件成立,一般用于程序的流程控制。
·boolean类型只允许取值为true或false,true表示条件成立,而false表示条件不成立
·boolean型变量经常用于储存关系运算的结果,所谓关系运算,就是比较两个变量的大小相等等关系。
例子:
int age=18;
boolean isChild=age>16;
System.out.println(isChild);

类型间的转换
基本类型间的转换
·不同的基本类型直接可以转换
-自动类型转换(隐式类型转换):从小类型到大类型可以自动完成,类型的大小关系如下:
byte——>short——>int——>long——>float——>double
|
char
强制转换:从大类型到小类型需要强制类型转换符
语法格式:(需要转换成的类型)变量
PS:但是这样转换有可能造成进度损失或者溢出。
强制转换时的精度丧失和溢出:
·基本数据类型的转换进度丧失和溢出
例子:
//溢出:
long l1=102410241024*4L;
System.out.println(l1);//4294967296
int j=(int)l1;
System.out.println(j);//0 转换为int类型后溢出了,从负数开始增加
//精度损失
double pi=3.14111111111111;
float p=(float)pi;
System.out.println§;//3.1411111
数值运算时的自动转换
·多种基本数据类型参与表达式运算中,运算结果会自动向较大类型进行转换。

double a=70-5.01;
		System.out.println(a);//64.99
		double i=80/100;
		System.out.println(i);//0.0
		double i1=80.0000/100;
		System.out.println(i1);//0.8

byte,char,short三种类型实际储存的数据都是整数,在实际使用遵循如下规则:
-int直接量可以直接赋值给byte,short,char,只要不超过其表示范围.
例子:
byte a=28;
short b1=30;
byte b2=40;
byte b4=a+b2;//不能使用,因为a+b2不是直接量

byte,short,char三种类型参与运算时,先一律换成int类型在进行计算。
例子:
byte b1=20;
short b2=28;
short c1=b1+b2;//byte,short进行运算时,统一转换为int类型,不能使用