A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuguoqing 中级黑马   /  2015-7-19 02:33  /  379 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1: Scanner注意事项
        存在的问题:当录入数据依次是int String,并且分别使用nextInt()和next()方法获取数据的时候,会接受不到String数据。
        解决办法:
                1). 在录入完int后重新创建一个新的Scanner对象
                2). 用字符串接受,然后把字符串转成int类型

2:数据结构思想:拿时间换空间,拿空间换时间
        例子:需求:一个网站有一个功能,当你填入你的年龄的时候,我就能自动判断你是哪个年龄段
                0-9岁,儿童
                10-19岁,少年
                20-29岁,青年
                30-39岁,壮年
                40-49岁,中年
                50-59岁,中老年
                60岁以上,老年
        代码实现例子:
                String[] ages = {"儿童","少年","青年","中年","中老年","老年"};
                System.out.println(ages[age/10]);

2:String类(掌握)
                键盘录入:int————int可以;
                          string————string可以
                          string————int可以;
                          但是int——string 不行;因为把回车换行符给了string
        (1)字符串:多个字符组成的一串数据。
        (2)构造方法:
                A:String s = new String();
                B:String s = new String(byte[] bys);
                C:String s = new String(byte[] bys,int index,int length);字节数组。
                D:String s = new String(char[] chs);
                E:String s = new String(char[] chs,int index,int length);
                F:String s = new String(String str);
                G:String s = "hello";
        (3)字符串的特点及面试题
                A:字符串一旦被赋值,就不能改变。
                        注意:这里说的时字符串在常量池值不能改变,
                        没有说引用变量不能改变。
                B:面试题:
                        a:String s = new String("hello")和String s = "hello"的区别。
                        在内存中有两个对象存在,         内存中有一个对象存在,
                        b:请写出结果:
                String s1 = new String("hello");
                String s2 = new String("hello");
                System.out.println(s1==s2);//false
                System.out.println(s1.equals(s2));//true

                String s3 = new String("hello");
                String s4 = "hello";
                System.out.println(s3==s4);//false
                System.out.println(s3.equals(s4));//true

                String s5 = "hello";
                String s6 = "hello";
                System.out.println(s5==s6);//true
                System.out.println(s5.equals(s6));//true

        (4)成员方法

                A:判断功能
        boolean equals(Object obj):判断字符串的内容是否相同,区分大小写。
        boolean equalsIgnoreCase(String str):判断字符串的内容是否相同,不区分大小写。
        boolean contains(String str):判断字符串对象是否包含给定的字符串。
        boolean startsWith(String str):判断字符串对象是否以给定的字符串开始。
        boolean endsWith(String str):判断字符串对象是否以给定的字符串结束。
        boolean isEmpty():判断字符串对象是否为空。数据是否为空。
        B:获取功能
        int length():获取字符串的长度
        char charAt(int index):返回字符串中给定索引处的字符
        int indexOf(int ch):返回指定字符在此字符串中第一次出现的索引
        int indexOf(String str):返回指定字符串在此字符串中第一次出现的索引
        int indexOf(int ch,int fromIndex):返回在此字符串中第一次出现指定字符的索引
                从指定的索引开始搜索。
        int indexOf(String str,int fromIndex):返回在此字符串中第一次出现
        指定字符串的索引,从指定的索引开始搜索。
        String substring(int start):截取字符串。返回从指定位置开始截取后的字符串。
        String substring(int start,int end):截取字符串。
        返回从指定位置开始到指定位置结束截取后的字符串。
C:转换功能
        byte[] getBytes():把(字符串)转换成(字节数组)。
        char[] toCharArray():把(字符串)转换成(字符数组)。
        static String copyValueOf(char[] chs):把(字符数组)转换成(字符串)
        static String valueOf(char[] chs):把字符数组转换成字符串。
        static String valueOf(int i):基本类型:把int(基本类型)转换成字符串。
        String toLowerCase():把字符串变成小写
        String toUpperCase():把字符串变成大写
        String concat(String str):拼接字符串。

D:其他功能
        a:替换功能
        String replace(char oldChar,char newChar):用新的字符去替换指定的旧字符
        String replace(String oldString,String newString):
        用新的字符串去替换指定的旧字符串

        b:切割功能
        String[] split(String regex):按照规定的格式切割字符串成字符串数组
                       
        c:去除两端空格功能
                                String trim():去除字符串两端空格       
                       
                        d:字典顺序比较功能:输出的是int 类型的。
        int compareTo(String str):按字典顺序(Unicode编码顺序)
        如果第一个相同比较第二个,依次类推
        int compareToIgnoreCase(String str) :按字典顺序(Unicode编码顺序)
        如果第一个相同比较第二个,依次类推,不区分大小写

        (5)案例:(理解--明天写一遍)

                A:模拟用户登录 (用到了 判断equals 功能,如果有的用户名不区分大小写 还可以用equalsIgnorCase)
                       
                String username = "admin";
                String password = "admin";

                // 三次机会
                for (int x = 0; x < 3; x++) {
                // x 0,1,2
                // 键盘录入数据:用户名和密码。
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入用户名:");
                String name = sc.nextLine();
                System.out.println("请输入密码:");
                String pwd = sc.nextLine();
                // 把数据进行比较。
                if (username.equals(name) && password.equals(pwd)) {
                System.out.println("恭喜你,登录成功");
                // 引入曾经的猜数字小游戏。
                break;
                } else {
                if ((2 - x) == 0) {
                                System.out.println("账号被锁定,请与林青霞联系");
                        } else {
                                        // 2,1,0
                                System.out.println("登录失败,你还有" + (2 - x) + "次机会");
                                }
                        }
                }

                B:字符串遍历 (用到了 charAt 功能)

                        for (int x = 0; x < s.length(); x++) {
                                char ch = s.charAt(x);
                                System.out.println(ch);
                        }

                C:统计字符串中大写,小写,数字字符出现的次数 (用到了 charAt 功能)
                       
                        String s = "Hello12345World";

                        // 定义三个统计变量
                        int bigCount = 0;
                        int smallCount = 0;
                        int numberCount = 0;

                        // 遍历字符串。
                        for (int x = 0; x < s.length(); x++) {
                                char ch = s.charAt(x);
                                // 判断是属于哪种范围                       
                                if (ch >= 'A' && ch <= 'Z') {
                                        bigCount++;
                                } else if (ch >= 'a' && ch <= 'z') {
                                        smallCount++;
                                } else if (ch >= '0' && ch <= '9') {
                                        numberCount++;
                                }
                        }
D:把字符串的首字母大写,其他小写(用到了 截取 、 连接 、 转大小写 功能)

        String str2  = str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase());

        E:大串中小串出现的次数(用到了 截取 、 indexOf 功能,)

        public int getCount(String maxString, String minString) {
                               
                // 定义统计变量
        int count = 0;
        // 在大串中查找小串一次
        int index = 0;
        // 如果返回值不是-1,说明小串在大串中是存在的。
        // 判断
                while ((index  = maxString.indexOf(minString)) != -1) {
                // 统计变量++
                count++;
                // 把查找过的数据给截取掉,重新赋值给大串
                maxString = maxString.substring(index + minString.length());
                        }
                        return count;
                }

                F:学习indexOf过程中,我们发现contains()的底层就是用的indexOf()
                        public boolean contains(CharSequence s) {
                                return indexOf(s.toString()) > -1;
                        }


评分

参与人数 1黑马币 +2 收起 理由
jiatengde + 2 很给力! 总结的真的很详细,而且浅显易懂,.

查看全部评分

5 个回复

倒序浏览
学习了……
回复 使用道具 举报
加油,熬夜奋战!!!
回复 使用道具 举报
僵尸舞 发表于 2015-7-19 02:54
加油,熬夜奋战!!!

哈哈哈哈哈哈哈,加油
回复 使用道具 举报
哇,好详细啊,学习了
回复 使用道具 举报
icichacici 发表于 2015-7-19 06:58
哇,好详细啊,学习了

哈哈哈,学习就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马