细小知识总结

细小知识总结

一、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)方法用于解析字符串,并返回一个整数。

  • 接收两个参数:stringradixstring为需要解析的字符串,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();

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值