第四章第五章深入学习
关于博客积极主动敲代码的学习
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());
如图,经过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。故上述代码的输出为:
System.out.println("buffer ="+ buffer.toString());
经过书上P111页不可变动字符串的学习,
知道了上述代码与下述
String s1=(new StringBuilder()).append("buffer =").append('S').append("tringBuffer").toString();
代码相同,编译结果相同。append()用法经过API查找得知该方法的作用是追加内容到当前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码值打印出来得到验证。输出入下图
- 上述用到toCharArray()方法,在API查找到如下结果大意是将一个字符串放入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]);
}
}
}
结果如下
代码实现将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();
}
}
输出结果如下:
其中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]);
}
}
}
打印结果如下:
- 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。