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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-8-25 11:08 编辑

【济南中心】JavaEE基础班新课程day08:常用Api


但是我相信在中国,大家看到的应该是这样式儿的:
不过总算是浪了一波,回来又要继续战斗啦~
      今天我们要学习一个帮助我们开发的文档,叫Api --> 应用程序设计接口  英文叫Application programming interface.
  
    下载链接http://pan.baidu.com/s/1eREzVHK 密码:4fbr
    这个文件是长这个样子的,点开是这个样子的:
   
        可以看到,左边是一些类的目录,是java帮我们写好的一些工具类,比如我们之前用过的Scanner  用来接收键盘录入。Random类 用来产生随机数。
       今天我们要学的是一个String类,字符串类。什么是字符串?就是字符连成串,我们的软件经常需要处理文字,就要跟字符打交道,所以这个知识点是很重要的。
       在学习之前,我们先设想一下会有什么方法?  我们接触一个网站或者软件,常用的有登录注册功能,有搜索功能,这里就会有两个字符串的比较,看看账号是不是存在在服务器中啊,看看你搜索的这个关键字和那个产品匹配啊,这个功能应该有,除此之外还有很多,我们一一来看。

    String类的  构造方法:

        构造方法也是一种方法,它有它的特殊性,没有返回值连void都没有,方法名和类名相同,我们之前学习面向对象的时候知道创建对象就是调用它的构造方法,比如 Student s = new Student();   就是调用它的空参构造。 Student s2 = new Student("张三",23);  就是调用它的有参构造。

我们这里学习String类的构造方法也是用来创建字符串对象的,当然我们可以通过String str = "HelloWorld"; 这种直接赋值的方式创建字符串对象。也可以通过构造方法,常用的构造方法有:
         String()
         String(char[] value)
         String(String str)
         String(StringBuilder builder)
这几个构造方法都可以创建String对象,传入的参数不同当然作用就不同,
          String()   --   创建一个空的字符串对象    --   String str = new String();
         String(char[] value)   --   把一个字符数组变成字符串对象  --  char[] ch = {'a','b','c'} ;    String str = new String(ch);
         String(String str)   --   把一个字符串变成字符串对象   --  String str = new String("HelloWorld");
         String(StringBuilder builder)   --  把一个带缓冲区的StringBuilder对象变为一个String对象   
                                                               StringBuilder sb = new StringBuilder("abc");
                                                               String str = new String(sb);
       不过我们常用的方式还是   String str = "abc";

     String类的方法:
      这里就是我们今天的重中之重,String类的方法,挺多的,先了解一下,在练习中去体会 并加深记忆。
      还记得我们之前学习方法的时候说写一个方法什么最重要吗?  对,参数和返回值。就是我们需要给他什么,他给我们返回什么。
      这里我们学习String的方法需要明白,1,这个方法的功能。2,这个方法有参数吗,什么类型的。3,这个方法有返回值吗,什么类型的。
      比如charAt方法,它有的功能是根据索引获取字符串中的字符。它的参数是int类型的索引值,返回值是char类型的字符。
      String s = "abc"
      char c = s.charAt(1);   // 获取1索引位置的字符,输出 b   联想到数组的索引,都是从0开始的。

char
charAt(int index)
          返回指定索引处的 char 值。
boolean
contains(CharSequence s)
          当且仅当此字符串包含指定的 char 值序列时,返回 true。
boolean
endsWith(String suffix)
          测试此字符串是否以指定的后缀结束。
boolean
startsWith(String prefix)
          测试此字符串是否以指定的前缀开始。
boolean
equals(Object anObject)
          将此字符串与指定的对象比较。
boolean
equalsIgnoreCase(String anotherString)
          将此 String 与另一个 String 比较,不考虑大小写。
int
indexOf(int ch)
          返回指定字符在此字符串中第一次出现处的索引。
boolean
isEmpty()
          当且仅当 length() 为 0 时返回 true。
int
lastIndexOf(String str)
          返回指定子字符串在此字符串中最右边出现处的索引。
int
length()
          返回此字符串的长度。
split(String regex)
          根据给定正则表达式的匹配拆分此字符串。
substring(int beginIndex)
          返回一个新的字符串,它是此字符串的一个子字符串。
substring(int beginIndex, int endIndex)
          返回一个新字符串,它是此字符串的一个子字符串。
char[]
toCharArray()
          将此字符串转换为一个新的字符数组。
toLowerCase()
          使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
toUpperCase()
          使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
toString()
          返回此对象本身(它已经是一个字符串!)。
trim()
          返回字符串的副本,忽略前导空白和尾部空白。
功能代码演示:
[Java] 纯文本查看 复制代码
public class Test09 {
        public static void main(String[] args) {
                //1 charAt 根据索引返回该位置的字符
                String s = "jixiaomeng";
                char c = s.charAt(6);
                System.out.println(c);//m
                
                //2 contains 传入字符串  判断是否包含该字符串
                boolean b = s.contains("jixiaomeng");
                System.out.println(b);//true
                
                //3 equals 是否相等   equalsIgnoreCase
                boolean b2 = s.equals("xiao");
                System.out.println(b2);//false
                
                //4 boolean endsWith(String suffix) startWith
                boolean b3 = s.endsWith("g");//jixiaomeng
                System.out.println(b3);//true
                
                //5 int indexOf(int ch) 小串再大串中第一次出现的索引
                //int lastIndexOf(String str) 
                String s5 = "hwheimaloWorheimald";
                int i = s5.indexOf("heima");//2
                System.out.println(i);//2
                int i2 = s5.lastIndexOf("heima");
                System.out.println("i2= "+i2);//12
                
                //6 isEmpty 判断是否为空
                boolean b4 = s5.isEmpty();
                System.out.println("b4= "+b4);//false
                
                //7 length()长度
                int i3 = s5.length();
                
                //8,切割:split  返回的是字符串数组
                String s7 = "86-136 202 030 30";
                //{"86","13620203030"}
                String[] srr = s7.split(" ");
                for(int x=0;x<srr.length;x++){
                        System.out.println(srr[x]);
                }
                
                //9  截取:subString  截取一个字符串返回新的字符串,不影响之前的
                String s8 = "hwheimaloWorheimald";
                String s9 = "heima";
                int index = s8.indexOf(s9);//heima 的h第一次出现的索引
                int index2 = index+s9.length();
                System.out.println(index2);
                String s10 = s8.substring(index2);// 一个参数的方法:截取到末尾
                System.out.println(s10);
                
                String s11 = s8.substring(7,11);//lowo  包含7 不包含11
                System.out.println(s11);
                
                //10 toUpperCase变成大写   toLowerCase变成小写
                
                //11 trim 去除两端空格
                
                //12 toCharArray  把字符串转换成字符类型的数组
                char[] crr = s9.toCharArray();//heima
                //{'h','e','i','m','a'}
                
        }
}

我们学习了String类,发现它的内容一旦确定是不能动态改变的String str = “abc”;,有同学说我可以给str 重新赋值啊!但是那就不是原来的str对象了,是一个新的字符串。这种特性是不利于存储动态的数据的。假如我们要保存一个字符串而且还要能随时修改它,怎么办呢?这里给大家介绍一个长度可变的字符序列 -- StringBuilder
StringBuilder类 构造方法:
    刚才讲过,构造方法是用来创建对象的,我们可以灵活运用,比如StringBuilder sb = new StringBuilder("abc");  这个方法可以把一个Strnig对象转化为StringBuilder对象。

StringBuilder类 方法:

方法摘要
append(boolean b)
         拼接一个boolean类型的值到字符串末尾
append(char c)
          拼接一个char类型的值到字符串末尾
append(double d)
          拼接一个double 类型的值到字符串末尾
append(float f)
          拼接一个double 类型的值到字符串末尾
append(int i)
         拼接一个float 类型的值到字符串末尾
append(long lng)
          拼接一个long 类型的值到字符串末尾
append(String str)
          拼接一个String 字符串到本字符串序列的末尾
append(StringBuffer sb)
          将指定的 StringBuffer 添加到此序列。
delete(int start, int end)
          Removes the characters in a substring of this sequence.
int
length()
          Returns the length (character count).
reverse()
          Causes this character sequence to be replaced by the reverse of the sequence
toString()
          Returns a string representing the data in this sequence.

[Java] 纯文本查看 复制代码
//StringBuilder 带缓冲区的字符串,长度可变。
                //StringBuilder(String str) 
                StringBuilder sb = new StringBuilder("abc");
                
                //append 拼接到末尾
                sb.append("meng");
                System.out.println(sb);//abcmeng
                
                //delete 删除
                sb.delete(1,3);//包含头,不包含尾 --》 subString --> Random
                System.out.println(sb);//ameng
                
                //sb.reverse 反转
                sb.reverse();
                System.out.println(sb);//gnema
                
                //sb.toString()  把StringBuilder 转化为-》 String


好,下面我给大家出几道题来练习一下吧!
第一题:
        1.键盘录入一个大字符串,再录入一个小字符串   
        2.统计小字符串在大字符串中出现的次数
        3.代码运行打印格式:
                请输入大字串:符:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
                请输入小字符串:heima
                控制台输出:小字符串heima,在大字符串中出现?次

第二题:
     1.键盘录入一个字符串
     2.将字符串中的所有大写字母变成小写字母
     3.将该字符串变成字符数组
     4.如果第一位和最后一位的内容不相同,则交换
     5.将字符数组中索引为偶数的元素变成*
     6.打印数组元素的内容

好,今天的学了很多方法,大家要好好练习啊!

4 个回复

正序浏览
Hp_Yx 发表于 2017-5-6 08:17
讲到字符串,居然没有正则表达式,差评

正则表达式的内容放到就业班讲了,并没有少哦
回复 使用道具 举报
回复 使用道具 举报
讲到字符串,居然没有正则表达式,差评
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
坚持就是胜利!!!给自己加油~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马