/* 将一个英文句子逆序输出(单词顺序不变),例如 I am a student 逆序为student a am I */
import java.util.Scanner;
public class test1 {
	public static void main(String[] args) {		
		Scanner scanner = new Scanner(System.in);		
		System.out.println("please input :");
		String str1=scanner.nextLine();			
		String[] list = str1.split(" ");   //以空格分割字符串获得字符串的单词数组
		StringBuffer str2 = new StringBuffer();  //动态字符串数组用来保存新的字符串
		for(int i=0;i<list.length;i++){			
			str2.append(list[list.length-i-1]+" "); 
			//把list中的单词倒着取出来放进str2,append()"附加"是往动态字符串数组添加
		}
		System.out.println(str2.toString());	
	}
}

当然也有更简单的写法(效率要低些)

import java.util.Scanner;
public class test1 {
	public static void main(String[] args) {		
		Scanner scanner = new Scanner(System.in);		
		System.out.println("please input :");
		String str1=scanner.nextLine();			
		String[] list = str1.split(" ");  
		for(int i=list.length-1;i>=0;i--) 
			 System.out.print(list[i]+" "); 
	}
}

小知识点:

1.split()方法可定义多个分隔符,中间用"|"隔开,如str.split(",|.");

2.next()和nextLine()区别:

前者是以回车或空格为分隔符,一次取一个单词;后者是以回车为分隔符,一次取一行。

3.String 与StringBuffer以及StringBuilder的区别

   String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。经常改变内容的字符串最好不要用 String

   StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区,内容可修改。这样使用StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使用StringBuffer类就避免了这个问题.StringBuffer是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

    StringBuilder一个可变的字符序列,此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

    

   StringBuffer类中的方法要偏重于对字符串的变化例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。

1、append方法

public StringBuffer append(boolean b)

追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。

2、deleteCharAt方法

public StringBuffer deleteCharAt(int index)

删除指定位置的字符,然后将剩余的内容形成新的字符串。

还存在一个功能类似的delete方法:

public StringBuffer delete(int start,int end)

删除指定区间以内的所有字符,包含start,不包含end索引值的区间。

3、insert方法

public StringBuffer insert(int offset, String s)

在StringBuffer对象中插入内容,然后形成新的字符串。

4、setCharAt方法

public void setCharAt(int index, char ch)

修改对象中索引值为index位置的字符为新的字符ch。


每日一道题,成就大神梦!字符串逆序输出1.2_string