第四章第五章深入学习

关于博客积极主动敲代码的学习

package src.week3;
public class b{
    public static  void main(String[] args)
    {
        StringBuffer buffer=new StringBuffer ();
        buffer.append('S');
        buffer.append("tringBuffer");
        System.out.println(buffer.charAt(1));
        System.out.println(buffer.capacity());
        System.out.println(buffer.indexOf("tring"));
        System.out.println("buffer ="+ buffer.toString());
    }
}

首先关于StringBuffer()的用法与含义。String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。
String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。StringBuffer对象和String对象之间的互转的代码如下:

String s = “abc”;
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String
  • 基于上一周的学习,我猜测
System.out.println(buffer.charAt(1));

对应的输出是第一个字母,但上面代码第二三行分别两次输入不同内容,我猜测输出“S”。

System.out.println(buffer.capacity());

image
如图,经过API的查找我发现capacity()的用法是返回这个缓冲区的容量。“StringBuffer”长度为12.故猜测输出为12.

 System.out.println(buffer.indexOf("tring"));
 System.out.println(buffer.indexOf("S"));
System.out.println(buffer.indexOf("dd"));

经过API查找知道了indexOf()的用法为:indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。故上述代码的输出为:image

System.out.println("buffer ="+ buffer.toString());

经过书上P111页不可变动字符串的学习,
知道了上述代码与下述

String s1=(new StringBuilder()).append("buffer =").append('S').append("tringBuffer").toString();

代码相同,编译结果相同。append()用法经过API查找image得知该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变。

package src.week3;
public class c {
    public static void main(String[] args) {

        int a = 1000;
        int d, e;
        Integer b = new Integer(a);//使用包装类
        String f = b.toString();
        System.out.println(f);
        System.out.println(c.c(f));
    }

    public static String c(String value) {

        StringBuffer sbu = new StringBuffer();
        char[] chars = value.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (i != chars.length - 1) {
                sbu.append((int) chars[i]).append(",");
            } else {
                sbu.append((int) chars[i]);
            }
        }
        return sbu.toString();

    }
}
  • 使用上述代码的上半部分可以通过用toString(),方法把数字转化成字符串,下半部分将字符串的ASCII码值打印出来得到验证。输出入下图image
  • 上述用到toCharArray()方法,在API查找到如下结果image大意是将一个字符串放入char型数组中去。代码验证如下
public class a {
    public static void main(String[] args) {
        int a = 1000;
        String d="ahhj";
        char x[]=d.toCharArray();
        for (int i=0;i<x.length;i++)
        {
            System.out.println(x[i]);
        }
    }
    }

结果如下image
代码实现将ASCII转化为字符串如下:

public class c {
    public static void main(String[] args) {
        System.out.println(c.asciiToString("48,49,50"));
    }
public static String asciiToString(String a)
{
    StringBuffer x=new StringBuffer();
    String[] chars=a.split(",");
    for (int i=0;i<chars.length;i++)
        x.append((char)Integer.parseInt (chars[i]));
    return x.toString();
}
}

输出结果如下:image
其中split()方法是把字符串转化为字符串数组,如下代码进行验证

public class a {
    public static void main(String[] args) {
    String s1="how are you today ?";
    StringBuffer x=new StringBuffer();
    String[] chars=s1.split("",3);//limit的含义是最多分成3组,之后的值直接打印出来
        String[] chars1=s1.split(" ");
        for (int i=0;i<chars.length;i++)
        {
            System.out.println(chars[i]);
        }
        for (int i=0;i<chars1.length;i++)
        {
            System.out.println(chars1[i]);
        }
    }
    }

打印结果如下:image

  • Integer.parseInt ()方法的使用:parseInt(String s )方法是类Integer的静态方法,它的作用就是将形参 s 转化为整数,比如:
    Interger.parseInt("1")=1;
    Integer.parseInt("20")=20;在网上搜到如下例题:
    设有下面两个赋值语句:
    a = Integer.parseInt(“123”);
    b = Integer.valueOf(“123”).intValue();
    下述说法正确的是( d )。
    A、a是整数类型变量,b是整数类对象。
    B、a是整数类对象,b是整数类型变量。
    C、a和b都是整数类对象并且值相等。
    D、a和b都是整数类型变量并且值相等。
    valueOf(String s )方法也是Integer类的静态方法,它的作用是将形参 s 转化为Integer对象。再调用intValue()方法,就是将123的对象表示形式转化为基本数据123。