Java基础之基本数据类型
概述
java中有两大数据类型:
内置基本数据类型
引用数据类型
内置数据类型
八种基本类型,包括:
四个整数型(byte,short,int ,long)
两个浮点型(float,double)
一个字符型(char)
一种布尔型(boolean)
整数类型
- 四种整数类型,有固定的表述范围和字段长度,都可以表示负数,且不受具体的操作系统的影响。
- long l=990 或 long l=124536545646540l
- 整数的三种表现形式:
a. 十进制整数,如:120,-21,0
b. 八进制整数,,如:010,0010
c. 十六进制整数,如:0x10,0x001f
代码示例
int a=011;
System.out.println(a);//9
int b=0x11;
System.out.println(b);//17
浮点类型
- 与整数类型一样,同样有固定的表述范围和字段长度,均可表示负数,且不受具体的操作系统的影响
- java语言中,默认的浮点类型是double,声明float类型的时候,必须加F或f;
float f=5.0 //错误
float f=5 //正确
float f =5.0f //正确
3.表现形式:
a. 十进制数:如:3.14
b. 科学计数法,如:3.14e2,3.14e-2,-3.14E2
4.其实在实际的应用中,如果要进行精确的小数计算或者是大数计算,建议使用java.math.BigDecimal类
字符类型
- Char类型是一个单一的16位Unicode字符,字符类型占2个字节,无符号整数,最小值为0,范围'\u0000'~'\uffff'
- 表现形式,必须用单引号' ':
a. 'A', 'a', '8' b. 转义字符 '\n','\t' c. Unicode表示 '\uXXXX'
3.只能表示一个字符
char c='中'; //正确
char c="中" ; //错误
char c='中国'; //错误
char c='name'; //错误
4 例子
char zhong='中';
int zhong_value=zhong;
System.out.println(zhong_value); //输出20013
布尔型
布尔型只有true和false,与C语言不同
boolean a=false;
boolean b=true;
a=1;//错误
while(1){} //错误,1为整型,不能表示boolean
封装类
基本数据类型 | byte | short | int | long | float | double | char | boolean |
---|---|---|---|---|---|---|---|---|
封装类 | Byte | Short | Integer | Long | Float | Double | Character | Boolean |
为什么要使用包装类型呢?
- 更加体现了面向对象的特点,有人说java不是纯面向对象语言,纯度只有百分之九十,就是因为java中仍然使用了基本数据类型和static。而包装类的出现,则更好的体现了面向对象的设计理念。
- 由于包装类型本质是一个类,有属性有方法,所以就比基础类型的功能强大了许多。假如需要将一个字符串的类型转化为整数,这时候怎么办?就需要包装类型的方法了。
String x="123";
int p=Integer.parseInt(x);
Integer p2=new Integer(x);
下面是包装类型中共有的一些方法,这些方法也是在项目开发中经常使用的。
1、带有基本值参数并创建包装类对象的构造函数.如可以利用Integer包装类创建对象,Integer obj=new Integer(145);
2、带有字符串参数并创建包装类对象的构造函数.如new Integer("-45.36");
3、可生成对象基本值的typeValue方法,如obj.intValue();
4、将字符串转换为基本值的 parseType方法,如Integer.parseInt(args[0]);
5、生成哈稀表代码的hashCode方法,如obj.hasCode();
6、对同一个类的两个对象进行比较的equals()方法,如obj1.eauqls(obj2); 这里的equals()方法比较的原始的基础类型,
其jdk7原代码如下:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
7、生成字符串表示法的toString()方法,如obj.toString().
int和Integer区别
(1)包装类和原始类型的区别。int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类,类中提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,能够表示整数的最大值和最小值的常量等等。
(2)初始默认值不同。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。