Java字符串&异常处理

14.字符串

String StringBuffer类 StringBuilder类

【练习】

1.下面这条语句一共创建了多少个对象:String s=“welcome”+“to”+“huayu”;

 答:1个

答案解析:

在Java中,String对象是不可变的,所以对String类对象进行+操作,相当于是创建了一个新的String对象,而字符串常量也是一个String对象,所以这条语句中应该是创建了四个对象:"welcome "、"to "、"huayu"和"welcome to huayu"这四个字符串,但是这个问题的正确答案却是1个

2. String s = new String(“xyz”);创建了几个字符串对象?()

正确答案: 两个或一个都有可能

3.String类、StringBuffer、StringBuilder的区别?

正确答案:

  • String是Java中基础且重要的类,并且String也是Immutable类的典型实现,被声明为final class,除了hash这个属性其它属性都声明为final,因为它的不可变性,所以例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。
  • StringBuffer就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列,把所有修改数据的方法都加上synchronized。但是保证了线程安全是需要性能的代价的。
  • StringBuilder是JDK1.5发布的,它和StringBuffer本质上没什么区别,就是去掉了保证线程安全的那部分,减少了开销。

4.String有哪些方法?请写出10个常用的方法,并说出功能

正确答案:

  • int length():获取字符串的长度(字符数)
  • char charAt(int index):获取指定下标位置的字符
  • String[] split(String regex):根据表达式来拆分字符串
  • boolean startWith(String prefix):是否以某个字符串开头
  • boolean endtWith(String suffix):是否以某个字符串结尾
  • String subString(beginIndex,endIndex):获取子串,包含beginIndex,不包含endIndex
  • String subString(beginIndex):获取子串,从beginIndex一直到结束;
  • String replace(oldString,newString):将字符串中所有的oldString替换成newString;返回一个新的字符串;
  • String replaceAll():
  • String replaceFirst();
  • int compareTo(String another):与另外一个字符串进行比较大小,如果相等,返回0,如果小于another,返回负数,否则返回一个正数
  • int compareToIgnoreCase(String another):忽略大小写进行比较
  • boolean contains(CharSequence s):当前串中是否包含了s,如包含,返回true,否则返回false
  • int lastIndexOf(String):查找某个字符串最后一次出现的索引,如不存在,返回-1
  • int indexOf(String):查找某个字符串第一次出现的索引,如不存在,返回-1
  • String toLowerCase():返回一个新串,将原串的所有字符转成小写
  • String toUpperCase():返回一个新串,将原串的所有字符转成大写
  • String trim():返回去掉前后的空格后的新串
  • static String valueOf(Object):将其它类型转成String
  • boolean equals(Object):与某个对象进行比较,如果内容相同,返回true,否则返回false
  • boolean equalsIgnoreCase(Object):忽略大小写,比较内容是否相同;

【编程题】

5.定义一个方法,求出字符串中有多少种字符,以及每个字符的个数

static void printCharInfo(String str)

例如有字符串 str="apple is a apple.";

结果应该是 a:3 p:4 l:2 e:2 :3 i:1 s:1 .:1(换行了的)

public class Test6 {
	static void printCharInfo(String str) {
		char[] a = new char[100];
		int[] b = new int[100];
		char[] ch = str.toCharArray();
		int index = 0;
		for(int i = 0;i<str.length();i++) {
			if(i!=0)
				for(int j =0;j<index;j++) {
					if(a[j]==ch[i]) {
						b[j]++;
						break;
					}else if(j==index-1) {
						a[index++]=ch[i];
						b[index-1]=1;
						break;
					}
				}
			else {
				a[index++]=ch[i];
				b[index-1]=1;
			}
		}
		for(int i=0;i<index;i++) {
			System.out.println(a[i]+" :"+b[i]);
		}
	}
	public static void main(String[] args) {
		String str = "apple is a apple.";
		printCharInfo(str);
	}
}

6.字符串右移n位,例如 “hello world” 右移两位后"ldhello wor"
要求写一个方法实现此功能,方法的格式是

String moveToRight(String str,int position)

str:需要移动的字符串

p:右移的位数

public class Test9 {
//字符串右移n位,例如 “hello world” 右移两位后"ldhello wor"
	public static String moveToRight(String str,int position) {
		String left = str.substring(0,str.length()-position);
		String right = str.substring(str.length()-position);
		return right+left;
	}
	public static void main(String[] args) {
		String str="hello world";
		System.out.println(moveToRight(str,2));
	}
}

7.【编程题】若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回-1。

int stringAt(String str,String subStr)

public class Test10 {
	    public static int stringAt(String str,String subStr){
	        if(str.toLowerCase().contains(subStr.toLowerCase())){
	            return str.toLowerCase().indexOf(subStr.toLowerCase());
	        }else{
	            return -1;
	        }

	    }   
	    public static v
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 10 9、请设计一个一百亿的计算器 10 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 14 16、下面的代码有什么不妥之处? 14 17、请说出作用域public,private,protected,以及不写时的区别 14 18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 15 19、构造器Constructor是否可被override? 16 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 16 21、写clone()方法时,通常都有一行代码,是什么? 16 22、面向对象的特征有哪些方面 17 23、java中实现多态的机制是什么? 18 24、abstract class和interface有什么区别? 18 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 20 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 20 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 22 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 23 29、super.getClass()方法调用 23 30、String是最基本的数据类型吗? 24 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 25 34、StringStringBuffer的区别 25 35、如何把一段逗号分割的字符串转换成一个数组? 26 36、数组有没有length()这个方法? String有没有length()这个方法? 26 37、下面这条语句一共创建了多少个对象String s="a"+"b"+"c"+"d"; 26 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 41、运行时异常与一般异常有何异同? 30 42、error和exception有什么区别? 30 43、Java中的异常处理机制的简单原理和应用。 30 44、请写出你最常见到的5个runtime exception。 31 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 32 .... ....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值