java数据类型-- 四类八种
一、整数类型
- 整数型 : byte 1个字节八位,二进制中1111 1111 转换为十进制的取值范255 范围在 -128 —127
- 短整型 : short 2个字节 +-3万2之间
- 整型 :int 4个字节 是java已经大部分编程语言中默认的整数类型 取值范围在+-21亿之间
- 长整型 :long 8个字节数值范围超过int的取值范围时,避免出现内存数据泄漏则可以选择long类型
那么肯定有小伙伴肯定疑问,为什么不全部选择long类型就好了?
当然可以,在初始化类型的时候,会开辟内存空间全部变量都选择long类型的话,导致程序会占用更多的内存空间,影响程序性能。
二、浮点类型
- 浮点型 float 4字节 -127~128
- 双精度浮点类型 double 8字节 -1023~1024
三、字符类型
- char
四、布尔类型
- boolean 取值 true fales
类型转换
- 自动类型转换: 把一个表示数据范围小的数值或者变量赋值给一个表示数据范围大的变量格式: 表示数据范围大的数据类型 变量名 = 表示数据范围小的值;
public class HelloWorld{ public static void main(String[] args){ // 把100赋值给变量numD double numD = 100; System.out.println(numD);// 100.0 int num = 'a'; System.out.println(num);// 97 } }
- 强制类型转换: 概述: 把一个表示数据范围大的数值或者变量赋值给一个表示数据范围小的变量 格式: 表示数据范围小的数据类型 变量名 = (表示数据范围小的数据类型)表示数据范围大的值;
public class HelloWorld{ public static void main(String[] args){ int num = (int)3.14; System.out.println(num);// 3 } }
- 注意事项: 数据范围大小关系: byte < short < int < long < float < double 数据范围大小关系: char < int < long < float < double 强制类型转换会发送数据丢失,故慎用 boolean类型不能发生类型转换 char,byte,short发生数学运算,会自动提升为int类型
public class HelloWorld{
public static void main(String[] args){
// 因为3和4是常量,在java中具有常量优化机制,所以编译器在编译期间就可以确定 3+4的结果为7,在byte所能表示的范围,所以能赋值成功
byte res1 = 3+4;// byte res1 = 7;
System.out.println(res1);// 7 总结
byte b1 = 3;
byte b2 = 4;
// 因为b1和b2是变量,而变量没有优化机制,所以编译器在编译期间无法确定b1+b2的 结果是否在byte所能表示的范围, // 所以b1和b2会自动提升为int类型,那么b1+b2的结果为int类型,int类型的值赋 值给byte类型的变量,需要发生强制类型转换 // byte res2 = b1 + b2;// 编译报错
byte res2 = (byte)(b1 + b2);
System.out.println(res2);
byte res3 = 3 + b2;
// 编译报错,原因同上
System.out.println(res3);
} }
变量命名方式
- 数据类型 变量名 = 值; int num1 = 100;
- 数据类型 变量名; 变量名=值;int num1; num1 = 100;
- 数据类型 变量名1 = 值,变量名2 = 值,...; int num1 = 100,num2 = 200,num3 = 300;
public class HelloWorld{
public static void main(String[] args){
// 需求:定义所有基本类型的变量,并把该变量中的值打印输出
byte num1 = 100;
System.out.println(num1);
short num2 = 300;
System.out.println(num2);
int num3 = 1012345678;
System.out.println(num3);
long num4 = 2212345678L;
System.out.println(num4);
float numF = 3.14F;
System.out.println(numF);
double numD = 3.14;
System.out.println(numD);
char numC = 'a';
System.out.println(numC);
boolean numB = true;
System.out.println(numB);
// 定义了String类型的变量,并存储字符串数据
String str = "hello";
System.out.println(str);
}
}
变量使用的注意事项
同一作用域(一对大括号),不能有同名的变量
没有初始化的变量,是不能直接使用的
给long类型的变量赋值,记得加L\l
给float类型的变量赋值,记得加F\f
public class HelloWorld{
public static void main(String[] args){
int num = 10;
int num = 20;// 报错
System.out.println(num);
}
}
public class HelloWorld{
public static void main(String[] args){
int num;
System.out.println(num);// 报错
}
}
public class HelloWorld{
public static void main(String[] args){
long num1 = 100;// 不报错
long num2 = 2212345678;// 报错
System.out.println(num1);
System.out.println(num2);
}
}
public class HelloWorld{
public static void main(String[] args){
float num1 = 100.13;// 报错
System.out.println(num1);
}
}
当然在java中也提供了初始化变量的语法糖