Scanner 数据扫描:
一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。
API
Scanner需要掌握的方法:
Scanner扫描输入对象:
//常用场景:扫描输入对象Scannersc=newScanner(System.in);//获取在控制台输入的内容System.in扫描输入流//在学习System类的时候会详细解析 -> System.in。...
Scanner中的常用方法:
//hashNext();判断传入的对象中是否还有元素publicstaticvoidmain(String[] args) throwsFileNotFoundException { //File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。// 注:此处的斜杆为双斜杠,java中的转义字符一般为单斜杠开头。Filefile=newFile("D:\\FileTest\\file1.txt"); Scannersc=newScanner(file,"utf-8"); //此处要抛异常// sc.hasNext()返回值位Boolean型Booleanbl=sc.hasNext(); System.out.println(bl); //判断是否存在内容// 输出file1.txt中的内容while (sc.hasNext()){ Stringcontent=sc.nextLine(); System.out.println(content); } } //nextLine() / nextInt():next数据类型()publicstaticvoidmain(String[] args) { Scannersc=newScanner(System.in); // 1.next() 查找并返回此扫描仪的下一个完整令牌。返回值为:String类型//注:当按下回车的时候,程序终止,只能读取到一个数字,如果出现空格等 只会输出空格之前的内容。System.out.println("请输入数字:");// 输入:123455 58963System.out.println(sc.next()); //输出:123455*///2.nextLine() 将此扫描仪推进到当前行并返回跳过的输入。返回值为:String类型System.out.println("请输入数字:");// 输入:123549 945 6456 1System.out.println(sc.nextLine()); //输出:123549 945 6456 1*/// 3.nextDouble() 将输入的下一个标记扫描为布尔值,并返回该值。 返回值为:double类型System.out.println("请输入数字:");// 输入:123System.out.println(sc.nextDouble()); //输出:123.0}
注意事项:
Scannersc=newScanner(System.in); System.out.println("请输入年龄:"); sc.next(); System.out.println("请输入名字:"); sc.nextLine();
next()和nextLine()一起使用的时候:会出现在你没有输入名字后直接结束的情况。此时是因为:next()会将手动按下的回车当做输入的内容,所以并不是没有办法写入名字,而是因为名字哪里获取到的是回车。
所以建议都使用nextLine()方法:nextLine()方法会获取一行内容!
Scannersc=newScanner(System.in); System.out.println("请输入年龄:"); sc.nextLine(); System.out.println("请输入名字:"); sc.nextLine();
Object所有类的基类(又名,超类):
每个类都由Object作为超类。 所有对象(包括数组)都实现了这个类的方法。
API
方法简截:
publicStringtoString()返回对象的字符串表示形式。一般来说,toString方法返回一个对象的字符串。结果应该是一个简明扼要的表达,容易让人阅读。建议所有子类覆盖此方法。该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串”和对象的哈希码的无符号的十六进制表示。换句话说,这个方法返回一个等于下列值的字符串:getClass().getName() +'@'+Integer.toHexString(hashCode())
此处只要知道Object类是所有类的超类即可,其子类可以直接调用Object方法,或者自行重写Object中的方法;例如,toString()方法,在Object类中是直接返回对象的地址;在输出的时候,默认是使用toString()方法的。
toString方法
//Java中sout()输出时,默认会加上toString() Stringstr="小红"; //System.out.println(str);输出的是一样的效果System.out.println(str.toString()); Stringstr2[] = {"1","2","3","4"}; System.out.println(str2.toString()); /*小红[Ljava.lang.String;@7ea987ac*/
String 字符串类:
String类操作字符串。
String类代表字符串。Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
String的值在创建后不能被更改。 因为String对象是不可变的,它们可以被共享。
API
String类的常用方法:
重点掌握:
indexOf()方法,返回指定字符第一次出现的字符串内的索引。
equals()方法,将此字符串与指定对象进行比较。
StringBuilder 字符串缓冲区,可存储可变的字符串;
一个可变的字符序列。 此类提供与StringBuffer相同的API,但不保证同步。
此类设计用作简易替换为StringBuffer在正在使用由单个线程字符串缓冲区的地方(如通常是这种情况)。
在可能的情况下,建议使用这个类别优先于StringBuffer ,因为它在大多数实现中将更快。
API
StringBuffer和StringBuilder最主要的方法是append和insert方法,它们被重载以便接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入到字符串缓冲区。
append方法总是在缓冲区的末尾添加这些字符;insert方法将insert添加到指定点。
StringBuffer的常用方法:
StringBuffer 字符串缓冲区,可存储可变的字符串,线程安全。
线程安全,可变的字符序列。字符串缓冲区就像一个
String
,但可以修改。在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。字符串缓冲区可以安全地被多个线程使用。
API
String字符串操作总结:
String与StringBuffer和StringBuilder的区别:
String是字符串不可变;
StringBuffer和StringBuilder是字符串可变,字符串缓冲区。
StringBuffer和StringBuilder的区别:
StringBuffer线程安全;
StringBuilder线程不安全,但是速度较StringBuffer更快。
建议自学API,此处仅做指引以及注意事项的辨析,自学能力很重要。