运算符对基本类型的影响 : 当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则: 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。 当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则: 运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,且运算结果与运算符左边数值类型相同。 2、封装类(包装类) (1)Java中的包装类、装箱和拆箱 在Java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,不能作为对象调用其toString()、hashCode()、getClass()、equals()
等等方法。所以在java中,针对8种基本数据类型,提供了针对每个基本数据类型的包装类。如下: INDEX 基本数据类型 包装类 1 int Integer 2 char Character 3 float Float 4 double Double 5 byte Byte 6 short Short 7 long Long 8 boolean Boolean 所谓装箱,就是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。 所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。 //JDK1.5 之前使用手动方式进行装箱 和拆箱的 操作 public class IntegerDemo { public static void main (String []agrs) { int i=10; Integer j=new Integer(i); //手动装箱操作 int i1=j.intValue();//手动拆箱操作 System.out.println(i1*i1); } }; //output:100 //JDK1.5之后可自动进行的装箱和拆箱的操作,比较方便 public class IntegerDemo02 { public static void main (String []agrs) { int i=10 Integer j=i; int k=j; System.out.println(++k); } }; //output:11
包装类的另外一个比较有用的是可以将String 字符串类型转换为相应的基本数据类型。下面以将String转为int为例: public class IntegerDemo04 { public static void main (String[] args) { String str="1500"; try { int i=Integer.parseInt(str); System.out.println(++i); } catch (Exception e) { e.printStackTrace(); //打印异常信息 } } };// output: 1501 如果在上述方法中str="15er00";则在调用parseInt方法时候会产生NumberFormatException异常, 总结在包装类中将String转换为包装类所对应的基本数据类型的方法如下,所有的方法都将抛出NumberFormatException异常,需要在调用时候使用try ..catch 进行捕获
index 包装类 返回的基本数据类型 方法名 1 Integer int static int Integer.parseInt(Sting s) 2 Character char static char Character.parseChar(String s) 3 Float float static float Float.parseFloat(String s) 4 Dobule double static double Double.parseDouble(String s) 5 Byte byte static byte Byte.parseByte(String s) 6 Short short static short Short.parseShort(String s) 7 Long long static long Long.parseLong(String s) 8 Boolean boolean static boolean Boolean.parseBoolean(String s) 类似的一个方法为 parseXXX(String s,int radix),对于Integer包装类,这个radix表示进制. parseInt(String s)默认为十进制。 其他包装类的radix参数意义,请参见API文档 可以自动装包,也可以自动解包。 三、String和StringBuffer java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。 例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包含“starlet”。 通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 只要发生有关源序列(如在源序列中追加或插入)的操作,该类就只在执行此操作的字符串缓冲区上而不是在源上实现同步。每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序作者: 349153256 时间: 2016-4-27 12:44
图呢???