细小知识总结
作者:互联网
细小知识总结
一、next() , nextInt()与nextLine()方法区别:
他们三个都属于Scanner的内置方法,首先,Scanner是一个扫描器,它扫描数据都是去内存中一块缓冲区中进行扫描并读入数据的, 而我们在控制台中输入的数据也都是被先存入缓冲区中等待扫描器的扫描读取,这个扫描器在扫描过程中判断停止的依据就是“空白符”,空格啊,回车啊
-
next()与nextInt()基本相同,nextInt()规定返回值必须为int类型,所以输入必为int
-
nextInt()方法在扫描到空白符的时候会将前面的数据读取走但会丢下空白符“\r”在缓冲区中
-
next()返回值为字符串类型,next()将空格看做分割两个字符串之间的标志
-
nextLine()将空格也看做字符串的一部分
-
当使用nextInt()方法时,只能输入int类型的数据
例子如下:
使用next()方法时,将空格看作是两个字符串的间隔
import java.util.Scanner; public class Example { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("使用next()方法,输入为:"); while (sc.hasNext()) {//sc.hasNext()意为需输入一个值存放在sc中,才可进入循环 //返回值为boolean System.out.print("输出为"); String n = sc.next(); System.out.print(n); } } }
运行结果为:
使用nextLine()方法如下:
public class Example {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("使用nextLine()方法,并且输入为:");
String n=sc.nextLine();
System.out.println("输出为:");
System.out.println(n);
}
}
运行结果为:
二、toSrting()与String.valueOf()方法对比
String.valueOf()和toString()方法大致相同
toString()
Object类的toString方法意为返回该对象的字符串表示,若为null则报错,抛出异常java.lang.NullPointerException
String.valueOf()
与toString()类似,唯一区别是先判断是否为null,若不为null则等同于toString(),若为null则返回null的字符串表示
String.valueOf() 比起直接用 toString() 来说虽然可能会减少报错的机会,但是要注意的是对象的类型是否符合。
若对象为Integer 类型,不能转换成 String 类型,则在编译期间就会报错Cannot cast from Integer to String。
如果要把 Integer 型转换成 String,可以调用其 toString()方法:Integer.toString(obj1) 或者 String.valueOf(obj1); 对应于其他自定义类型,则调用自己重写的 toString() 方法。
此外,因null值可以被强制转换为任何类型,所以(String)null也是合法的。
同理,Integer.valueOf(String)为返回该对象的Int类型
三、parseInt()方法
parseInt(string, radix)
方法用于解析字符串,并返回一个整数。
- 接收两个参数:
string
和radix
,string
为需要解析的字符串,radix
为进制数,也就是将字符串按照几进制进行解析,当radix
为2,表示将字符串按照二进制解析,依次类推; radix
是可选参数,取值范围为2 ~ 36
;- 当
radix
为0或者不存在时,js会按照如下规则对字符串进行解析:<1>、当字符串以1-9
开头时,会按照十进制解析;<2>、当字符串以0x
开头时,会按照十六进制进行解析;<3>、当字符串以0
开头时,会按照八进制或十六进制解析;
public static int parseInt(String s, int radix)
//s是要转换的数字的字符串形式
//radix是其原始进制
int num = Integer.parseInt("ABCDEF", 16);
System.out.printf("%15d",num);
四、#o与#x
#o意为输出八进制数
#x意为输出十六进制数
System.out.printf("%#o", x);//#o为输出八进制数
System.out.print(' ');
System.out.printf("%#X", x);//#X为输出十六进制数
}
五、parseInt(String)/parseDouble(String)
parseInt(String)将括号内字符串转换为int值
parseDouble(String)将括号内字符串转换为double值
int id=Integer.parseInt(data[0]);//将()内的字符串转换为Int值如.parseInt(String)
double score1=Double.parseDouble(data[1]);
六、split()方法
方法用于将字符串分割为字符数组
若split(",")表示字符串以逗号分割为数组
split("[;,]")表示字符串以分号和逗号分割为数组
//使用;或,分隔输入数据
String[] data = scanner.nextLine().split("[;,]");
//split表示把一个字符串分割成字符串数组
//data[0]为第一个数组元素,依次类推
七、BYTES方法
输出不同整型数据类型在内存中占多大(字节)
其中Short.SIZE意为返回short所占比特位,除8为求其字节数
Integer.BYTES意为返回其所占字节数,不用除以8
public class Main{
public static void main(String[] args){
System.out.println("The size of short is " + Short.SIZE / 8 + " bytes.");
System.out.println("The size of int is " + Integer.BYTES + " bytes.");
System.out.println("The size of long is " + Long.BYTES + " bytes.");
System.out.println("The size of long long is " + Long.SIZE / 8 + " bytes.");
}
}
八、read()方法
在Java8中,InputStream被定义为一个抽象类,相应的,该类下的read()方法也是一个抽象方法,这也就意味着必须有一个类继承InputStream并且实现这个read方法。
查阅Java8 API,我们可以看到,在InputStream中定义了三个重载的read()方法
没有参数的read方法,从(来源)输入流中(读取的内容)读取数据的下一个字节到(去处)java程序内部中,返回值为0到255的int类型的值,返回值为字符的ACSII值(如a就返回97,n就返回110).如果没有可用的字节,因为已经到达流的末尾, -1返回的值,运行一次只读一个字节,所以经常与while((len = inputstream.read()) != -1)一起使用.
public static void main(String[] args) throws IOException {
System.out.println(System.in.read());
//使用read()方法读取一个字符,返回值为int
}
九、charAt()方法
java.lang.String.charAt()返回指定索引处的char值,索引范围是0——length-1,若有异常则抛出IndexOutOfBoundsException
System.out.print(str.charAt(str.length()-i-1));
十、hasNext()方法
hasNext()返回的是boolean类型
sc.hasNext()可以理解为把我们输入的值存到了sc当中,sc中有值时返回true,没有值时为false,此时sc有值,所以才进入循环,然后再输出ABC。
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println("ABC");
int s = sc.nextInt();
}
标签:总结,String,int,知识,System,sc,字符串,细小,out 来源: https://blog.csdn.net/weixin_45949645/article/details/111480900