3.1 java基本数据类型 3.1.1整数 整数表示没有小数的数值,允许是负数。 Java提供四种整型
在java中整数的取值范围与平台无关,且java保证所有的机器上的远行结果相同。 长整型数值的一个后缀L。十六进制有一个前缀0x。八进制有一个前缀是0。一般不建议使用八进制,容易混淆。
3.1.2 浮点数 浮点数用于表示小数部分的数值。 java提供两种浮点数 float 4B double 8B
double的精度是float的两倍。但是,float只是用在需要快速处理或者存储大量的数据时适用。例如:个人的年薪可以用float表示,但是公司总裁的年薪可能就不够了。 jdk5.0中,可以用十六进制表示浮点数。例如:0.125表示为0x1.0p-3,用p表示指数。而不是用e表示。 虽然浮点数表示的数值够大,但还是会出错和溢出的情况。例如:1/0 负数开平方等等。因此,我们定义了三个常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY、Double.NaN来表示正无穷大、负无穷大、Not a Number。正整数/0=正无穷大,0/0=NaN。测试一个结果是不是NaN不能这样测试: if (x==Double.NaN) 应该使用Double.isNaN方法 if (Double.isNaN(x))// 注意:浮点数不适用于禁止出现舍入误差的金融计算中。例如:System.out.println(2.0-1.1)将打印出0.899999999999,而不是0.9。出现这种问题的原因是浮点数值是采用二进制系统表示的,而在系统中无法精确的表示分数1/10。 ① 需要在计算中不含有任何舍入误差,就应该使用BigDecimal类。 ② 将一个类标记为strictfp ,那么这个类中的所有方法都要使用严格的浮点数计算, ③ 将一个方法标记为strictfp,那么这个方法就会使用严格的浮点数计算, public static strictfp void main(String [] args) 3.1.3大数值BigDecimal BigInteger java.math中包含两个很有用的类BigDecimal和BigInteger 1. BigInteger 可以处理任意长度的整数运算, 即不可变的任意精度的整数
BigInteger a=BigInteger.valueOf(100); 使用静态方法valueOf可以把普通的数值转换为大数值。 但是,大数值运算不可以使用去处符+ - * /,而是使用 BigInteger c=a.add(b); //c=a+b //BigDecimal 加法 BigInteger c=a. subtract (b); //c=a+b//BigDecimal 减法 BigInteger c=a. multiply (b); //c=a*b//BigDecimal 乘法 BigInteger c=a. divide (b); //c=a/bBigDecimal 除法 BigInteger d=c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+2) 2. BigDecimal 不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。 可以处理任意长度的浮点数运算。 BigDecimal add(BigDecimal val) //BigDecimal 加法 BigDecimal subtract (BigDecimal val) //BigDecimal 减法 BigDecimal multiply (BigDecimal val) //BigDecimal 乘法 BigDecimal divide (BigDecimal val,RoundingMode mode) // BigDecimal 除法必须提供舍入方法 如:RoundingMode.HALE_UP就是四舍五入方式。
int compareTo(BigDecimal val)
// a.compareTo(b) 比大小。如果 a=b返回0,a>b返回正数 a<b返回负数
static BigDecimal valueOf(long x) static BigDecimal valueOf(long x,int sacle) //返回一个值为x或x/10scale
3.1.4 字符和字符串 1.char类型 char类型是用UTF-16编码描述的一个代码单元。如果确实有必要在程序中对UTF-16代码单元进行操作你才可以使用char类型。 2. 转义字符
3. String String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例来实现。字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享它们。例如: String str = "abc";
等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data);
String g=”Hello”; int b=g.length();//b=5 int cpCount=g.codePointCount(0,g.length()); //返回代码点数量 char first=g.charAt(0); //first is ‘H’ //--------------- int cp=g.codePointAt(i); if (Character.isSupplementaryCodePoint(cp)) i=+2 else i++; //遍历一个字符串 3.3 布尔类型 boolean只有两个值 false和true,用来判断逻辑条件。而且这两个值不能与整型进行转换。 |