常见对象-day07

day07-Scanner的常见对象

1 Scanner的概述和方法介绍

  • A:Scanner的概述

  • B:Scanner的构造方法原理

    • Scanner(InputStream source)
    • System类下有一个静态的字段:
    • public static final InputStream in; 标准的输入流,对应着键盘录入。
  • C:一般方法

    • hasNextXxx() 判断是否还有下一个输入项
    • nextXxx() 获取下一个输入项。

2 Scanner获取数据出现的小问题以及解决方案

  • 两个常用的方法:
    • public int nextInt():获取一个int类型的值
    • public String nextLine():获取一个String类型的值
import java.util.Scanner;                     //导入键盘录入的包
class DemoScanner0 {
    public static void main(String[] args) {  
        Scanner sc=new Scanner(System.in);    //创建一个键盘录入对象sc
        System.out.println("请输入一个整数");   
        int intcode=sc.nextInt();            //intcode获取整数值
        System.out.println(intcode);
        //Scanner sc0=new Scanner(System.in);//重新创建一个键盘录入对象便可以解决,创建后记得以下使用的新对象名
        System.out.println("请输入一个字符串");
        String stringcode=sc.nextLine();     //stringcode获取字符串
        System.out.println(stringcode);
    }
}
/*
请输入一个整数
10
运行结果:
10
请输入一个字符串

*/
/*
结果分析:
在输入整数10的时候,系统会默认输入换行符进行换行,而字符串判断输入结束的标志就是换行符,在检测到输入整数的换行符后,便直接运行结束。
问题解决方案
  * 第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
  * 第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
*/
复制代码

3 常见String类的构造方法

class DemoString1 {
    public static void main(String[] args) {  
        String s0=new String();   //创建一个名为s0的String方法
        System.out.println(s0);   //打印空参构造

        byte[] arr1={97,98,99};    //其对应的ASCII值为abc
        String s1=new String(arr1);//把字节数组转成字符串。
        //String(byte[] bytes)
        System.out.println(s1);   //打印转换的字符串

        byte[] arr2={97,98,99,100,101};
        String s2=new String(arr2,1,3);//把字节数组转成字符串,限制开始位置以及转换长度。
        //String(byte[] bytes,int index,int length)
        System.out.println(s2); 

        char[] arr3={'a','b','c','d','e'};
        String s3=new String(arr3);//把字符数组转成字符串,限制开始位置以及转换长度。
        //String(char[] value)
        System.out.println(s3); 

        char[] arr4={'a','b','c','d','e'};
        String s4=new String(arr4,2,2);//把字符数组转成字符串,限制开始位置以及转换长度。
        //String(char[] value,int index,int count)
        System.out.println(s4); 

        String s5=new String("abcde");//把字符串常量转成字符串。
        //String(String original)
        System.out.println(s5); 
    }
}
/*
运行结果:

abc
bcd
abcde
cd
abcde
*/
复制代码

4 常见String类的判断功能

class DemoString2 {
    public static void main(String[] args) { 
        String s1="abcde";
        String s2="abcde";
        String s3="ABCDE";
        String s4="bc";
        String s5="ab";
        String s6="de";
        String s7="";

        System.out.println(s1.equals(s2));  
        System.out.println(s1.equals(s3));  //equals区分大小写
 
        System.out.println(s1.equalsIgnoreCase(s3));//equalsIgnoreCase不区分大小写

        System.out.println(s1.contains(s4));  //判断大字符串里是否包含小字符串,包含为true,不包含为flase

        System.out.println(s1.startsWith(s5)); //判断字符串是否以某个指定的字符串开头

        System.out.println(s1.endsWith(s6)); //判断字符串是否以某个指定的字符串结尾

        System.out.println(s7.isEmpty()); //判断字符串是否为空.
        /*
        这里的空即不是指空格,也不是null,而是""里什么都不输入。
        如果输入的是空格键,则运行结果为flase,如果是null。则报错
        */
    }
}
/*
运行结果:
true
false
true
true
true
true
true
*/
复制代码

5 常见String类的获取功能

class DemoString3 {
    public static void main(String[] args) {
        String s0="ab.cd?eacdfabd";
        System.out.println(s0.length());   //获取字符串的长度,为每个字符的个数(不是字节)

        System.out.println(s0.charAt(3));  //获取索引的位置

        System.out.println(s0.indexOf('c'));  //根据字符找第一次出现的位置

        System.out.println(s0.indexOf("cd"));  //根据字符串找第一次出现的位置

        System.out.println(s0.indexOf('c',4));  //根据字符找第一次出现的位置,从指定位置开始找

        System.out.println(s0.indexOf("cd",4));  //根据字符串找第一次出现的位置,从指定位置开始找

        System.out.println(s0.lastIndexOf('a'));  //从后向前找,用法和indexOf一样,参考indexOf使用
        System.out.println(s0.lastIndexOf("cd"));  
        System.out.println(s0.lastIndexOf('c',4));  
        System.out.println(s0.lastIndexOf("cd",4)); 

        String s1=s0.substring(3);      //从3处开始截取,把3之前的截去
        System.out.println(s1);

        String s2=s0.substring(3,8);      //把3之前的截去,截取部分不包括3
        System.out.println(s2);   //把3之前和包括8之后的截去,截取部分补包括3,但包括8
    }
}
/*
运行结果:
14
c
3
3
8
8
11
8
3
3
cd?eacdfabd
cd?ea
*/
复制代码

6 常见String类的转换功能

class DemoString4 {
    public static void main(String[] args) {
        String s0="abcde王";
        byte[] arr0=s0.getBytes();      //把字符串转换为字节数组,以gbk码的方式转化
        for(int i=0;i<arr0.length;i++){ //将转换的数组遍历出来
            System.out.print(arr0[i] +" ");
        }
        System.out.println();          //输出换行符

        char[] arr1=s0.toCharArray();      //把字符串转换为字符数组
        for(int i=0;i<arr1.length;i++){ //将转换的数组遍历出来
            System.out.print(arr1[i] +" ");
        }
        System.out.println();          //输出换行符

        char[] arr2={'a','b','c'};    //字符数组
        String s1=String.valueOf(arr2);   //把整数数组转成字符串。
        System.out.println(s1);

        int[] arr3={97,98,99};    //整数数组
        String s2=String.valueOf(arr3);   //把字符数组转成字符串。
        System.out.println(s2);      //toString

        String s3="ABCDE";          //将字符串转换成小写
        System.out.println(s3.toLowerCase());

        String s4="abcde";          //将字符串转换成大写
        System.out.println(s4.toUpperCase());

        String s5="abc";
        String s6="def";
        System.out.println(s5.concat(s6));  //字符串拼接
    }
}
/*
运行结果:
97 98 99 100 101 -25 -114 -117
a b c d e 王
abc
[I@15db9742
abcde
ABCDE
abcdef
*/
复制代码

7 String的其它功能

class DemoString5 {
    public static void main(String[] args) {
        String s0="abcde";
        String s1=s0.replace('b','o');   //用o替换掉b
        System.out.println(s1);

        String s2=s0.replace('g','o');   //用o替换掉g,但原来的字符串中没有g,所以不会被替换。
        System.out.println(s2);

        String s3=s0.replace("bc","op");   //用op替换掉bc
        System.out.println(s3);

        String s4=s0.replace("bf","op");   //用op替换掉bc,但原来的字符串虽然有b,但此处应当把bf看成整体,所以不会被替换。
        System.out.println(s4);

        String s5=s0.replace("bd","op");   //只能替换连着写的字符串
        System.out.println(s5);

        String s6=" ab  cde f  ";
        System.out.print(s6.trim());  //去掉头部和尾部的空格
        System.out.println("验证空格是否去掉");

    }
}
/*
运行结果:
aocde
abcde
aopde
abcde
abcde
ab  cde f验证空格是否去掉
*/
复制代码

转载于:https://juejin.im/post/5bd52845518825288a686d37

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值