Java中的数据类型
1.变量和类型
变量指的是程序运行时可变的量,是开辟了一块内存空间来保存数据
类型是对变量的种类进行划分,不同类型的变量具有不同的特性
2.Java中的数据类型
2.1 整型
1.整型变量(int)
Java中,一个int变量为4字节(4byte)与操作系统和JVM版本都无关
基本语法格式
int 变量名 = 初始值; //定义一个整型变量 int num = 10; System.out.println(num);
//以下代码可以展示整形数据范围 System.out.println(Integer.MAX_VALUE);//int的最大值 System.out.println(Integer.MIN_VALUE);//int的最小值
整形溢出
int a = Integer.MAX_VALUE; a = a + 1; System.out.println(a);
此时a + 1 超出了int最大范围,就会出现溢出情情况,我们就需要更换一个更大的数据类型long
2.长整型变量(long)
Java中,一个long变量为8字节(4byte)
long num = 10L;//定义长整型变量时,初始值写作10l System.out.println(num);
2.2 浮点型
1.双精度浮点型变量(double)
Java中,一个double变量为8字节(4byte)
double num = 1.0; System.out.println(num);
int a = 1; int b = 2; System.out.println(a / b); //执行结果为0
整型 / 整型 = 整型 (会忽略小数部分)
若想得到0.5,需要使用double类型计算
double a = 1; double b = 2; System.out.println(a / b); //执行结果为0.5
double a = 1.1; double b = 1.1; System.out.println(a * b);
实际中还会遇到这样的情况,是因为计算机的内部只能储存一大堆的0和1,浮点数在计算机内部上实际是通过整数模拟的
有以下两种解决方案:1.仍然使用double但我们只看小数点后6位 2.使用BigDecimal类来代替double使用
2.单精度浮点型变量(float)
Java中,一个float变量占4字节(4byte)
float num = 1.0f;//写作1.0F也可以
2.3 字符型(char)
字符型变量统一占2 byte, Java采用UTF-8
char 变量名 = 初始值; char ch = 'A';
2.4 布尔型(boolean)
boolean只有两个值,表示真就是true 表示假就是false
Java中boolean不能和int相互转换,不存在1表示true,0表示false
2.5 字符串变量(String)
String 变量名 = "初始值";
Java中使用"" + 若干字符表示字符串字面量
字符串中的一些特殊字符需要转移输出,告诉编译器对这个字符不需要做特殊处理
3.不同数据类型转换
只有相同数据类型之间可以进行转换
1.小类型->大类型(自动提升)
2.大类型->小类型(强转)
int a = 10; long b = 20; a = b;//会报错,a是一个int类型,b是一个long类型,将一个long类型的值赋值给int类型时可能会导致整型变量放不下b的值
int a = 10; long b = 20; a = (int) b;//强制转换,可能会导致精度丢失(数据溢出或者数据部分丢失)
int a = 10; long b =20; System.out.println(a + b);//大类型和小类型进行数学运算时会自动提升->long + long
int <->long
int a = Integer.MAX_VALUE; long b = a + 1; System.out.println(b);
此时先进行的是a+1 导致已经移除了,把一个溢出的值被b接受了
int <->char
char a = 'a'; int b = a; char c = 'A'; int d = c; System.out.println(b); System.out.println(d);
char转换为int 自动提升,按照Unicode编码将'a'转为int
int<->String
int num = 10; //直接使用String对象+ String str1 = " " + num; //使用String的valueOf方法 String str2 = String.valueOf(num);
String->int
String str = "123"; //调用int包装类Integer.parseInt()方法 int a = Integer.parseInt(str);
在Java中,所有数据类型都有默认值,定义之后没有赋值,会有默认值(只存在与类变量中,方法中的局部变量不存在默认值)
public class DefaultValue { int a; double b; char c; boolean d; String str; public static void main(String[] args) { System.out.println(new DefaultValue().a); System.out.println(new DefaultValue().b); System.out.println(new DefaultValue().c); System.out.println(new DefaultValue().d); System.out.println(new DefaultValue().str); } }