Java基础(二):数据类型
Java语言是强类型语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
一、数据类型分类
1、基本数据类型
整数类型
byte num1 = 10; //byte占1个字节范围:-128~127
short num2 = 20; //short占2个字节范围:-32768~32767
int num3 = 30; //int占4个字节范围:-2147483648~2147483647
long num4 = 40L; //long占8个字节范围:-9223372036854775808~9223372036854775807
long定义的时候需要在数字的后面加上“L",用来区分long类型
浮点数类型
float num5 = 50.1f;//float占4个字节
double num6 = 60.1;//double占8个字节
float定义的时候需要在数字的后面加上”f“,用来区分float类型
字符类型
char name = 'G'; //char占2个字节
boolean类型
boolean flag = true;//boolean占1个字位
boolean只有两个值,true或false(代表是非)
2、引用类型
类、接口、数组(除八大基本数据类型之外)
3、补充:字节
位(bit):是计算机内部数据存储的最小单位,0000 0000是一个8位二进制数
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
1B(byte字节)=8bit(字位)
二、数据类型拓展及面试题目
1、整数类型(进制)
二进制:0b开头
十进制:正常
八进制:0开头
十六进制:0x开头
2、浮点数类型
面试题:银行业务(钱)怎么表示?
不能使用float或者double类型表示
float num1 = 0.1f;
double num2 = 1.0/10;
System.out.println(num1==num2);
float num3 = 121212121f;
float num4 = num3+1;
System.out.println(num3==num4);
浮点数表示的字长是有限的且是离散的,并且存在舍入误差,结果只能是一个大约数。最好不要使用浮点数进行比较
银行业务(钱)使用BigDecimal数学工具类表示
3、字符类型
所有的字符本质是数字。Unicode编码占2字节,最多可表示65536位。97 = a 65 = A 20013 = 中
\u0061是Unicode的标准的表示方式(\u是转义字符)
转义字符:
4、布尔值类型
public class Demo01 {
public static void main(String[] args) {
boolean flag = true;
if(flag==true){} //新手程序员
if(flag){} //老手程序员
//两种表示方式相同,表示如果flag为真,则执行***代码
//代码原则:精简易读
}
}
三、数据类型转换
1、转换原理
Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低------------------------------------------------->高
byte,short,char->int->long->float->double
高–>低强制转换;低–>高自动转换。
运算中,不同类型的数据先转化为同一类型,然后进行运算
public class Demo01 {
public static void main(String[] args) {
int num1 = 127;
byte num2 =(byte)num1; //将int类型强制转换为byte类型
//强制转换:(类型)变量名
System.out.println(num2);
double num3 = num1;
System.out.println(num3);//自动转换
}
}
不能对boolean类型进行转换
不能把对象类型转换成不相干的类型
在把高容量转换到低容量的时候强制转换
操作比较大的数的时候,注意溢出问题
2、补充:
①JDK 7新特性:
数字之间可以用下划线分割,输出的时候并不会输出分割线
②溢出问题
total 2赋值之前,money和year计算的时候已经发生溢出现象,即使total 2是long类型,也不能避免溢出现象。因此需要在计算过程中,进行强制类型转换。