1) 在Java中,整数类型共有4种,它们有固定的表述范围和字段长度,且不受具体的操作系统的影响,保证了Java的跨平台性
2) Java语言中,整数有三种表现形式,分别是:
a. 十进制整数,如 120, -31, 0
b. 八进制整数,要求以0开头(注意这是数字0,不是字母o),如:012,
c. 十六进制整数,要求以0x开头(注意这是数字0,不是字母o),如: 0x12
3) Java语言中,默认的整数类型是int类型,声明long类型的时候,后面必须要加个l或者L
4) Java中四种整数类型的表述范围:
1) 与整数类型一样,同样有固定的表述范围和字段长度,且不受具体的操作系统的影响,保证了Java的跨平台性
2) Java语言中,浮点类型有两种表现形式,分别是:
a. 十进制数形式, 如3.14
b. 科学计数法,如,3.14e2, 3.14e-2, -3.14E2
3) Java语言中,默认的浮点数类型是double,声明float类型的时候,后面必须添加字母f或者F,如3.14F,3.14f。
例如:float a=5.6f;//直接将5.6给float赋值是错误的,5.6默认的类型为double。
而如果将float a=5;这样复制后,编译就不会报错,只是将5看作默认的double类型,打印输出值为5.0。
4) Java中两种浮点类型的表述范围:
public static double div(double v1,double v2) { return div(v1,v2,10); } /** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。 */ public static double div(double v1,double v2,int scale){ if(scale<0){ throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); }
1) 字符类型是用''单引号括起来的单个字符,例如char c = 'w'; char a = '中',可以看到Java中的char类型是可以表示中文字符的;
2) Java字符采用Unicode(全球语言统一编码)编码,每个字符占两个字节,因而可用16进制编码形式表示,如:char c = '\u0061'
3) Java中允许使用转义字符'\'将其后面的字符转换成其他含义, 如: char c = '\n'; //表示换行
1) boolean类型的值只有两种:true,false
2) boolean类型不可以转换为其他的数据类型,所以有过C语言编程基础的人可能认为1也能在Java中表示为true,这是错误的。
在C语言中是不存在bool类型的,但是0可以表示假,任何的非0可以表示真,包括负数。
1) boolean不可以转换为其他的数据类型
2) 整数型,浮点类型,字符型是可以相互转换的,转换时遵守下面的原则:
a. 容量小的类型自动转换为大的类型,数据类型按容量大小排序为:
byte, short, char < int < long <float < double
b. byte, short, char 三种类型间不会相互转换,他们三者在计算时,首先会转换为int类型
c. 容量大的类型在转换为小的类型的时候,必须加上强制转换符,此时可能造成精度降低或者溢出问题
d. 有多种数据类型混合计算的时候,系统首先自动转换为容量最大的那个类型再来继续计算
e. 实数类型默认为double类型,如, 1.2; 整数类型默认为int类型,如 1
如图所示:
String x="123"; int p=Integer.parseInt(x); Integer p2=new Integer(x);
int a = 3;
Collection c = new ArrayList();
c.add(a); // 自动转换成Integer.
Integer b = new Integer(2);
c.add(b + 2);// 这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.
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().
(1)包装类和原始类型的区别。int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类,类中提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,能够表示整数的最大值和最小值的常量等等。
(2)初始默认值不同。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。
在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。