day14常用类Scanner&String

Scanner:
        概述:用于键盘录入数据,在程序中使用
            构造方法:Scanner(InputStream source)
        由于该类实在java.util包下,所以将来使用的时候,需要导包。
        1、获取键盘上的int类型的数据
            nextInt()
        2、获取字符串数据
            next(): 不会接收到特殊字符
            nextLine(): 会接收到特殊字符,如换行符

package com.shujia.wyh.day14;
import java.util.Scanner;
public class ScannerDemo1 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        //键盘录入一个int类型的数据
        int num = sc.nextInt();
        System.out.println(num);

        //键盘录入一个字符串
        String s1 = sc.next();
        System.out.println(s1);

        //nextLine()可以接收一些特殊的字符,如换行符
        //这里nextLine()接收的是上面输出语句println的换行符
        String s2 = sc.nextLine();
        System.out.print(s2);
    }
}


 

String:
        概述:简单理解为一个签将许多的字符串起来
            字符串是由多个字符组成的一串数据(字符序列)
            字符串可以看成是字符数组 
        特点:
            一旦被创建,值不能发生改变,这里的改变指的是,常量池中的字符换本身不可改变

        构造方法:
            public String()        无参构造方法
            public String(byte[] bytes)        根据一个字节数组创建出一个字符串对象
            public String(byte[] bytes,int offset,int length)        将字节数组中的一部分转化成字符串
            public String(char[] value)        将字符数组转成一个字符串
            public String(char[] value,int offset,int count)        将字符数组的一部分转成字符串
            public String(String original)        参数是字符串的带参构造方法

package com.shujia.wyh.day14.stringdemo;
public class StringDemo1 {
    public static void main(String[] args) {
        //public String()
        String s = new String();
        System.out.println(s); 
        //查看字符串的长度
        //public int length()返回此字符串的长度。
        System.out.println("字符串s的长度为:" + s.length()); //如果字符串中没有字符,返回0

        System.out.println("=====================================================");
        //public String(byte[] bytes)
        //根据一个字节数组创建出一个字符串对象
        byte[] bytes = {97, 98, 99, 100, 101};
        String s2 = new String(bytes);
        System.out.println("s2: " + s2);
        System.out.println("字符串s2的长度为:" + s2.length());

        System.out.println("=====================================================");
        //public String(byte[] bytes,int index,int length)
        //将字节数组中的一部分转化成字符串
        String s3 = new String(bytes, 1, 3);
        System.out.println("s3: " + s3);
        System.out.println("字符串s3的长度为:" + s3.length());

        System.out.println("=====================================================");
        //public String(char[] value)
        //将字符数组转成一个字符串
        char[] c = {'a', 'b', 'c', 'd', '我', '喜', '欢'};
        String s4 = new String(c);
        System.out.println("s4: " + s4);
        System.out.println("字符串s4的长度为:" + s4.length());

        System.out.println("=====================================================");
        //public String(char[] value,int index,int length)
        //将字符数组的一部分转成字符串
        String s5 = new String(c, 4, 5);
        System.out.println("s5: " + s5);
        System.out.println("字符串s5的长度为:" + s5.length());

        System.out.println("=====================================================");
        //public String(String original)
        String s7 = "你好";
        String s8 = new String(s7);
        System.out.println("s8: " + s8);
        System.out.println("字符串s8的长度为:" + s8.length());


    }
}

注意:
1、String s = new String("hello");与String s = "hello";的区别
        new的时候会在堆内存中开辟空间。

        注意事项:
            1、==比较引用数据类型的时候,比较的时候地址值
            2、String类中使用equals方法比较的是字符串的值,因为String类中重写了equals方法

package com.shujia.wyh.day14.stringdemo;
public class StringDemo3 {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = "hello";

        System.out.println(s1==s2); //false
        System.out.println(s1.equals(s2)); //true

    }
}

2、字符串相加的时候需要注意的问题:
        a、字符串如果是变量相加,是先在常量池中开辟空间,然后再做拼接。
        b、字符串如果是常量相加,是先相加,然后再去常量池中去找,如果找到了,就返回,如果没有找到就开辟新的空间,存储拼接后的值。

package com.shujia.wyh.day14.stringdemo;
public class StringDemo5 {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "world";
        String s3 = "helloworld";
        String s4 = "hello"+"world";
        //常量相加,是先相加,然后再去常量池中去找
        System.out.println(s3==s4); // true
        //字符串如果是变量相加,是先在常量池中开辟空间,然后再做拼接
        String s5 = s1+s2;
        System.out.println(s3==s5); // false
        System.out.println(s3==(s1+s2)); // false
        System.out.println(s3.equals(s1+s2)); // true
    }
}

        String类的判断功能:
            boolean equals(Object obj)        比较字符串中的内容是否相同,区分大小写比较的
            boolean equalsIgnoreCase(String str)        比较字符串中的内容是否相同,忽略大小写
            boolean contains(String str)        判断大的字符串中是否包含小的字符串,如果包含,返回true,反之返回false,区分大小写
            boolean startsWith(String str)        测试此字符串是否以指定字符串开头,区分大小写
            boolean endsWith(String str)        测试此字符串是否以指定字符串结尾,区分大小写
            boolean isEmpty()        判断字符串是否是空字符串


        注意:String s = "";与String s = null; 避免空指针异常,null不能调用方法

        如果是变量1.equals(变量2)的时候,在做equals之前判断一下变量1是不是null
        如果是一个变量1与字符串常量1做equals比较的时候,把字符串常量1放在前面调用方法,因为单独一个字符串也是一个String对象

package com.shujia.wyh.day14.stringdemo;
public class StringDemo6 {
    public static void main(String[] args) {
        String s1 = "helloworld";
        String s2 = "Helloworld";
        String s3 = "HelloWorld";

        //boolean equals(Object obj)比较字符串中的内容是否相同,区分大小写比较的
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));

        //boolean equalsIgnoreCase(String str)比较字符串中的内容是否相同,忽略大小写
        System.out.println(s1.equalsIgnoreCase(s2));
        System.out.println(s1.equalsIgnoreCase(s3));

        //boolean contains(String str)
        //判断大的字符串中是否包含小的字符串,如果包含,返回true,反之返回false
        //区分大小写
        System.out.println(s1.contains("Hello")); //false
        System.out.println(s1.contains("hel"));
        System.out.println(s1.contains("owo"));

        //boolean startsWith(String str)
        //测试此字符串是否以指定字符串开头
        //区分大小写
        System.out.println(s1.startsWith("hel"));
        System.out.println(s1.startsWith("Hel")); // false
        System.out.println(s1.startsWith("hell34")); // false

        //boolean endsWith(String str)
        //测试此字符串是否以指定字符串结尾
        //区分大小写
        System.out.println(s1.endsWith("rld"));
        System.out.println(s1.endsWith("rlD"));

        //boolean isEmpty()
        //判断字符串是否是空字符串
        System.out.println(s1.isEmpty());
        String s4 = "";
        String s5 = null;
        System.out.println(s4==s5);
        System.out.println(s5==s4);
        System.out.println(s4.equals(s5)); //false

        //需求:比较s6的值是否和s7的值一样
        String s6 = null;
        String s7 = "hello";
        if(s6!=null){
            if(s6.equals(s7)){
                System.out.println("是一样的");
            }
        }else {
            System.out.println("s6是null值");
        }

        //需求2:判断s6的值是否是hello
        if("hello".equals(s6)){
            System.out.println("是一样的");
        }else {
            System.out.println("s6的值不是hello");
        }

    }
}

        String类的获取功能:
            int length()        获取字符串的长度
            char charAt(int index)        返回指定索引处的字符
            int indexOf(int ch)        返回指定字符第一次出现的字符串内的索引(如果此字符串中没有此类字符,则返回-1)
            int indexOf(String str)        返回的是小串的第一个字符在大串中出现的索引位置(如果大串中不存在小串,返回-1)
            int indexOf(int ch,int fromIndex)        返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。如果找到了,返回的是字符在整个字符串中的索引(如果此字符串中没有此类字符或索引越界,则返回-1)        
            int indexOf(String str,int fromIndex)        返回的是小串的第一个字符在大串中出现的索引位置,以指定的索引开始搜索。如果找到了,返回的是字符在整个字符串中的索引(如果此字符串中没有此类字符或索引越界,则返回-1)
            String substring(int start)        从指定位置处截取字符串,包括开始截取的位置,截取到末尾
            String substring(int start,int end)                截取字符串的一部分出来截取的串从start位置开始截取,截取到end-1的位置结束,含头不含尾

package com.shujia.wyh.day14.stringdemo;
public class StringDemo7 {
    public static void main(String[] args) {
        String s = "helloworld";

        //int length() 获取字符串的长度
        System.out.println("字符串s的长度为:"+s.length());//如果字符串中没有字符,返回0
        System.out.println("==================================");
        //char charAt(int index) 返回指定索引处的字符
        //0<=index<=length()-1
        System.out.println(s.charAt(4));
        System.out.println(s.charAt(0));
        System.out.println(s.charAt(9));

        System.out.println("==================================");
        //public int indexOf(int ch)返回指定字符第一次出现的字符串内的索引。
        //需求:获取o在字符串中第一次出现的位置
        System.out.println(s.indexOf('o'));
        //如果此字符串中没有此类字符,则返回-1 。
        System.out.println(s.indexOf(97));

        System.out.println("==================================");
        //public int indexOf(String str)返回的是小串的第一个字符在大串中出现的索引位置
        System.out.println(s.indexOf("owo"));
        //如果大串中不存在小串,返回-1
        System.out.println(s.indexOf("owe"));

        System.out.println("==================================");
        // public int indexOf(int ch,int fromIndex)
        // 返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
        //如果找到了,返回的是字符在整个字符串中的索引
        System.out.println(s.indexOf("l",4)); // 8
        System.out.println(s.indexOf("p",4)); // -1

        System.out.println("==================================");
        // int indexOf(String str,int fromIndex)
        // 返回的是小串的第一个字符在大串中出现的索引位置,以指定的索引开始搜索
        //如果找到了,返回的是字符在整个字符串中的索引
        System.out.println(s.indexOf("owo",2)); //4

        System.out.println("==================================");
        //String substring(int start) 从指定位置处截取字符串,包括开始截取的位置,截取到末尾
        //如果给的索引值不存在,报错
        System.out.println(s.substring(3)); // loworld

        System.out.println("==================================");
        //String substring(int start,int end)
        //截取字符串的一部分出来
        //截取的串从start位置开始截取,截取到end-1的位置结束
        //含头不含尾。
        System.out.println(s.substring(5,8)); // wor
    }
}

        String类的转换功能:
            byte[] getBytes()        将字符串转成字节数组
            char[] toCharArray()        将字符串转成字符数组
            static String valueOf(char[] chs)        将字符数组转成字符串
            static String valueOf(int i)        将int类型的数据转成字符串
            String toLowerCase()        将字符串中的内容全部转小写
            String toUpperCase()        将字符串中的内容全部转大写
            String concat(String str)        将小括号中str的字符串拼接到大字符串的后面
            public String[] split(String regex)         输出按regex分隔开的字符串

package com.shujia.wyh.day14.stringdemo;
public class StringDemo8 {
    public static void main(String[] args) {
        String s = "HelloWorLD";

        //public byte[] getBytes()
        //将字符串转成字节数组
        byte[] bytes = s.getBytes();
        for(int i=0;i<bytes.length;i++){
            System.out.print(bytes[i]);
        }
        //72 101 108 108 111 87 111 114 76 68

        System.out.println("=================================");
        //char[] toCharArray()
        //将字符串转成字符数组
        char[] chars = s.toCharArray();
        for(int i=0;i<chars.length;i++){
            System.out.println(chars[i]);
        }

        System.out.println("=================================");
        //static String valueOf(char[] chs)
        //将字符数组转成字符串
        String s1 = String.valueOf(chars);
        System.out.println(s1);

        System.out.println("=================================");
        //static String valueOf(int i)
        //将int类型的数据转成字符串
        String s2 = String.valueOf(100); // 100 --> "100"
        System.out.println(s2); //100

        System.out.println("=================================");
        //String toLowerCase()
        //将字符串中的内容全部转小写
        String s3 = s.toLowerCase();
        System.out.println(s3); //helloworld

        System.out.println("=================================");
        //String toUpperCase()
        //将字符串中的内容全部转大写
        String s4 = s.toUpperCase();
        System.out.println(s4); //HELLOWORLD

        System.out.println("=================================");
        //String concat(String str)
        //将小括号中str的字符串拼接到大字符串的后面
        String s5 = s.concat("hadoop");
        System.out.println(s5);

        System.out.println("=================================");
        //public String[] split(String s)
        //输出按s分隔开的字符串
        String s6 = "hello world hello java world";
        //需求:求出字符串中的每一个单词
        String[] strings = s6.split(" ");
        for(int i=0;i<strings.length;i++){
            System.out.println(strings[i]);
        }

    }
}

        String类的其他功能:
            替换功能
                String replace(char old,char new)        将新的字符替换字符串中指定的所有字符,并返回一个替换后的字符串
                String replace(String old,String new)        将字符串中旧的小串用新的小串替换,返回一个替换后的字符串。如果被替换的字符串不存在返回的是原本的字符串
            去除字符串两边若干个空格
                String trim()
            按字典顺序比较两个字符串
                int compareTo(String str)比较字符串是否相同,如果相同返回0。不同时返回第一个不同字符ASCII码值的差,若对应字符都相同(长度不同)则返回字符串长度差        
                int compareToIgnoreCase(String str)不区分大小写

package com.shujia.wyh.day14.stringdemo;

public class StringDemo9 {
    public static void main(String[] args) {
        String s = "hellowrodldajavahadoopowollohelloowo";

        //String replace(char old,char new)
        //将新的字符串替换字符串中指定的所有字符,并返回一个替换后的字符串
        String s1 = s.replace('l', 'q');
        System.out.println(s);
        System.out.println(s1);

        System.out.println("====================================");
        //String replace(String old,String new)
        //将字符串中就的小串用新的小串替换,返回一个替换后的字符串
        String s2 = s.replace("owo", "===");
        System.out.println(s);
        System.out.println(s2);
        //如果被替换的字符串不存在返回的是原本的字符串
        String s4 = s.replace("qwer", "LOL");
        System.out.println(s);
        System.out.println(s4);

        System.out.println("====================================");
        //String trim() 去除字符串两边的若干个空格
        String s5 = "   hello world  ";
        System.out.println(s5);
        System.out.println(s5.trim());

        System.out.println("====================================");
        //int compareTo(String str)  //比较字符串是否相同,如果相同返回0
        String s6 = "hello"; // h的ASCII码值是 104
        String s7 = "hello";
        String s8 = "abc";   // a的ASCII码值是 97
        String s9 = "qwe";   // q的ASCII码值是 113
        System.out.println(s6.compareTo(s7)); // 0
        //不同时返回第一个不同字符ASCII码值的差
        System.out.println(s6.compareTo(s8)); // 7
        System.out.println(s6.compareTo(s9)); // -9
        //对应字符都相同(长度不同)则返回字符串长度差
        String s10 = "hel";
        System.out.println(s6.compareTo(s10)); // 2
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值