Java是一种强类型语言,这就意味着必须为每一种变量声明一种类型。
java的数据类型分为基本数据类型和引用数据类型
?基本数据类型(8种)
1.数值型:
1.1整形:byte、short、int、long(默认值为0)
1.2浮点型:double、float(默认值为0.0)
2.字符型:char(默认值为‘\u0000’)
3.布尔型:boolean(默认值为false)
?引用数据类型(除基本类型之外都是引用数据类型)
数组、类、接口都是引用数据类型(默认值为null)
?基本数据类型整理
基本类型 | 默认值 | 存储 | 对应的包装类 | 数据范围 |
boolean | false | 1位 | java.lang.Boolean | ture/false |
byte | 0 | 1字节 | java.lang.Byte | [-128~127] |
short | 0 | 2字节 | java.lang.Short | [-32768~32767] |
char | ‘\u0000’ | 2字节 | java.lang.Character | [0~65535] |
int | 0 | 4字节 | java.lang.Integer | [-2147483648~2147483647] |
float | 0.0F或0.0f | 4字节 | java.lang.Float | |
double | 0.0 或0.0D或0.0d | 8字节 | java.lang.Double | |
long | 0L或0l | 8字节 | java.lang.Long | -2^63~2^63-1 |
Java中的int永远是32位的整数,而在C/C++中,int可能是16位或者是32位的整形,也可能是编译器提供商提供的其他大小。
在JAVA中数据类型具有固定的大小,这也消除了代码移植时的问题。
默认值在主方法中无效。
类型的默认值,需要跟类一起使用,作为类的成员变量或者静态值。
1.int型
在java中,任何一个整型常量都是int类型
大的数据类型转小的类型必须强转,因为有时会丢失内容
long num = 214567995L;
int result = (int) num;
说明:关于数据默认值,默认值在主方法中无效。解决方法:1.在使用前赋值。2.在定义变量时赋值
各个数据类型的默认值使用,需要结合类才能观察到。默认值在主方法中无效。
2.浮点型(默认小数为double类型)
float f1 =1.1 ; //double类型
float f2 = 1.2F; //float类型
double f3 = 1.3; //double类型
3.String类
char可以描述单一的字符。想要描述多个字符就必须使用字符串,String是引用数据类型。
eg:
String name = "zhaofan";
String note = "student";
根据JAVA命名规范String首字母要大写。因为它本身是一个类(类采用大驼峰命名)
?数据类型转换
当使用+、-、*、/、%运算符是必须遵守以下规则:
1.只要两个操作数中有一个double类型,另一个也会被转换成double类型,其结果也是double类型。
2.如果两个操作数中有一个float类型,另一个也会被转换成float类型,其结果也是float类型。(但如果另一个是double则遵守规 则1)
3.如果两个操作数中有一个long类型,另一个也会被转换成long类型,其结果也是long类型。
4.否则操作数为byte、short、int、char ,这是两个数都会被转成int,并且结果也是int ,但是被final修饰的域类型不会发生变化。
eg:看下面一段代码
byte b1 = 1, b2 = 2, b3, b6, b8;
final b4 = 4, b5 = 6, b7 = 9;
public void test(){
b3 = (b1+b2); //错误语法
b6 = (b4+b5); //正确语法
b8 = (b1+b4); //错误语法
b7 = (b2+b5); //正确语法
System.out.println(b3+b6);
}