Scanner类、String类、StringBuffer类
1、Scanner类
当程序需要从键盘获取用户输入的命令或数据时,可以通过Scanner类方便地获取用户输入。
通过Scanner类获取用户输入时,控制台会一直等待用户的输入,直到用户敲回车键结束,把所输入的内容传给Scanner,程序要从Scanner获取输入的内容,则只需要调用Scanner的方法即可。
● Scanner类的初始化:
Scanner scanner = new Scanner(System.in);
声明一个scanner变量,并用new运算符实例化Scanner,实例化Scanner时,需要传入System.in对象,Scanner通过传入的System.in获取用户输入,并对用户输入的字符进行处理,屏蔽了获取用户输入的复杂操作。
● 示例:从键盘获取用户的输入
1 public class ScannerDemo { 2 public static void main(String[] args) { 3 int num = Su.getNum(); 4 System.out.println("输出结果:" + num); 5 } 6 7 } 8 9 class Su{ 10 private static Scanner sc = null; 11 private Su(){ 12 13 } 14 static{ 15 sc = new Scanner(System.in); 16 } 17 public static int getNum(){ 18 int i = 0; 19 while(true){ 20 System.out.println("请输入一个数字:"); 21 if(sc.hasNextInt()){ 22 i = sc.nextInt(); 23 break; 24 }else{ 25 sc = new Scanner(System.in);//为了阻塞住程序 26 System.out.println("你输入的不正确,请重新输入"); 27 } 28 } 29 return i; 30 } 31 32 }
2、String 类
● String 类内存图解:
String s = new String("hello");创建了几个对象?
创建了两个对象,一个在常量池,一个在堆内存。
3、StringBuffer 类
StringBuffer 的 capacity()方法会自动扩充容量,默认16
● 示例:实现字符串的反转(通过 StringBuffer 和 String 相互转换)
1 public static void main(String[] args) { 2 String s = "abcdefg"; 3 StringBuffer sb = new StringBuffer(s); 4 System.out.println(sb); 5 StringBuffer sbr = sb.reverse(); 6 String string = sbr.toString(); 7 char[] charArray = string.toCharArray(); 8 for(char c : charArray){ 9 System.out.print(c); 10 } 11 }
● 结果:abcdefg
gfedcba