Java语言是一种面向对象的程序设计语言,但Java中的基本类型却不是面向对象的,而实际使用时很多方法都需要引用类型的对象,无法将一个基本类型的值传入,存在很多不便。因此,JDK提供了一系列包装类可以将基本数据类型包装为引用类型的对象。
例:Integer类的构造方法,演示包装类Integer装箱过程如下
public class TextBoxing{
public static void main(String[] args){
int i = 10;
Integer in = new Integer(i);
System.out.println(in.equals(i));
}
}
拆箱过程
public class TestUnBoxing{
public static void main(String[] args){
Integer in = new Integer("10");
int i =10;
System.out.println(in.intValue()+i);
}
}
8.2 JDK5.0新特性 自动装箱和拆箱
public class TestAutomatic{
public static void main(String[] args)}
Integer in = 10; //自动装箱成Integer
System.out.println(in.toString);
int i = in; //自动拆箱成int
System.out.println(i++);
}
}
8.3 Scanner类
Scanner类是一个基于正则表达式的文本扫描器,可以从文件、输入流、信道、字符串中解析出基本类型值和字符串值。
import java.util.Scanner;
/**
* @Author:BWhitelack
*/
public class ScannerClass {
public static void main(String[] args){
//System.in代表标准输入,即键盘输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入内容,当内容为exit时退出");
while(sc.hasNext()){
String s = sc.next();
if(s.equals("exit")){
break;
}
System.out.println("输入的内容为:"+s);
}
sc.close(); //释放资源
}
}
8.4 String类、StringBuffer类、StringBuilder类
String类
String类表示不可变的字符串,String有两种初始化方式。
1.直接赋值
String s = "hello!"
JVM首先在常量池中查找字符串,若找到立即返回引用,否则在常量池中创建该字符串对象并返回引用。
2. 使用构造方法
String s = new String("hello!")
new关键字是在堆空间新开辟内存,存放字符串常量的引用,因此与常量池中地址值不相等。
注意: 当s = s + "1"时,重新在堆空间开辟新地址,不再是常量池中
字符串比较时使用equals()方法,==方法比较的是地址值。
字符串+整形时,整形变为字符串形式与前面字符串进行拼接 *** 作。
字节+整形时,是ASCII码相加,如
System.out.println(1+'1');
结果是 50。
StringBuffer类描述可变序列的字符串,在 *** 作字符串时不生成新的对象,在内存的使用上要优于String类。
StringBuilder类描述可变序列的字符串,与StringBuffer类不同的是,StringBuilder是线程不安全的,而StringBuffer类是线程安全的,因此StringBuilder的效率更高。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)