JavaSE常用类练习题

JavaSE常用类练习题

简答

1.判断输出结果

public void testString(){
	String str1 = "尚硅谷";//常量池
	String str2 = "尚硅谷";//常量池 
	String str3 = new String("尚硅谷");//堆空间 -->  常量池 
	System.out.println(str1 == str2);//true
	System.out.println(str1 == str3);//false
	System.out.println(str1.equals(str3));//true
	str1 = "尚硅谷atguigu.com";
	String str4 = "atguigu.com";
	String str5 = "尚硅谷" + "atguigu.com";//常量拼接常量,还是在常量池中
	System.out.println(str1 == str5);//true
	
	String str6 = (str2 + str4).intern();//intern()方法 在常量池中
	System.out.println(str1 == str6);//false  ---->true
}

2.String s = new String(“xyz”);创建了几个String Object

解:两个,一个字符对象(常量池),一个字符对象引用对象(堆空间中 指向常量池)

3.是否可以继承String类

解:String类是final类故不可以继承

4.String ,StringBuffer,StringBuilder三者的异同?

解:String:不可变的字符序列;底层使用 char[] 存储
StringBuffer : 可变的字符序列;线城是安全的,效率低;底层使用 char[] 存储
StringBuilder;可变的字符序列;JDK5.0 新增的,线程不安全的,效率低;底层使用 char[]存储

判断

1.用运算符“==”比较字符串对象时,只要两个字符串包含的是同一个值,结果便为 true 错误

解析:用运算符“==”比较字符串对象,实际上是比较他们的内存地址是否相同

2.String 类字符串在创建后可以被修改 错误

解析:String 类字符串对象是常量,在创建后不能修改

3.方法 replace (String srt1, String srt2)将当前字符串中所有 srt1 子串换成 srt2子串 正确

解析:String 类的方法 replace(String srt1, String srt2)用字符串 srt2 的内容替换当前字符串中遇到的所有 srt1 子串

4.方法compareTo在所比较的字符串相等时返回 0 正确

解析:不仅如此,如果调用compareTo的字符串比作为参数的字符串小,则返回一个负数;如果调用compareTo的字符串比作为参数的字符串大时,则返回一个正数

5.方法IndexOf((char ch,-1)返回字符ch在字符串中最后一次出现的位置 错误

解析:方法lastIndexOf((char ch)返回字符ch在字符串中最后一次出现的位置

6.方法startsWith()判断当前字符串的前缀是否和指定的字符串一致 正确

解析:startsWith(prefix)方法判断当前字符串的前缀是否和指定的字符串 prefix 一致,如果一致,返回 true,否则返回 false

选择

1.下面哪个选项正确地声明了一个字符串数组: C
A char str[] 
B char str[][]
C String str[] 
D String str[10]

解析:声明数组时,不允许在数组名后面的括号内指定数组元素的个数
2. 请看下面的程序段:
public class class1{
public static void main(String a[]) {
int x[] = new int[8]; 
System.out.println(x[1]); 
} } 
当编译和执行这段代码时会出现: D
A 有一个编译错误为“possible reference before assignment” 
B 有一个编译错误为“illegal array declaration syntax” 
C 有异常出现为“Null Pointer Exception”
D 正确执行并且输出 0 

解析:一旦数组被创建则它的元素就被初始化为 0
3.已知 String 对象 s="abcdefg",则s.substring(2, 5)的返回值为  B。
A "bcde"  
B "cde" 
C "cdef"
D "def" 

解析:substring(begpos, endpos)取出一个子串,该子串从begpos位置起至 endpos-1 为结束  左闭右开
4.请看下面的代码 String s = “people”; String t = “people”; String c[] = {“p”,”e”,”o”,”p”,”l” ,”e”}; 
下面哪一选项的语句返回值为真: A D        修改为 ACD
A s .equals(t); 
B t .equals(c); 
C s==t; 
D t .equals(new String(“people”)); 
E t==c;

解析:s 和 t 不是相同的引用,而在使用==比较引用时,如果两个引用指向内存中的同一个
5.已知 s 为一个 String 对象,s="abcdefg",则s.charAt(1)的返回值为 B
A a 
B b 
C f 
D g 

解析:字符串中第一个字符的 index 取值是 0
6.请看下面的代码 String s = “good”; 下面选项语句书写正确的是: AD
A s += “student”; 
B char c = s[1];  //s 是字符串不是数组
C int len = s.length; //length 后要加括号
D String t = s.toLowerCase();

7.正确创建一个含有 5 个元素的字符串数组的选项是: AB
A String s[] = new String[5]; for(int i=0;i<5;s[i++]=""); 
B String s[]={"", "", "", "",""}; 
C String s[5];
D String [5]s;

8.请看下面的代码
public class class1{ 
	String str = new String("Girl"); 
	char ch[ ]={'d','b','c'}; 

	public static void main(String args[ ]){
		class1 x = new class1( );
		x.change(x.str,x.ch);
		System .out .println(x.str +" and "+x.ch[0]+x.ch[1]+x.ch[2]); 
} 
	public void change(String str,charch[ ]){
	str="Boy"; ch[0]='a'; 
	} }
该程序的输出结果是:D
A Boy and dbc
B Boy and abc 
C Girl and dbc 
D Girl and abc

解析:由于 change(String str,charch[]) 中str为值参数,所以str= "Boy" 的结果不会影响实际参数

编程

1.请编写一个 Application 实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大

写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。

package com.atguigu.exer;
import java.util.Scanner;
public class exer1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String str = scan.next();
        //大写字母 65-90  小写字母:97-122
        char firstChar = str.charAt(0);
        if((int)(firstChar) >= 65 && (int)(firstChar) <= 90){
            for(int i = 0; i < str.length();i++){
                int temp = str.charAt(i);
                if(temp >= 65 && temp <= 90){
                    System.out.print((char)temp);
                }
            }
        }else{
            System.out.println("第一个字母不是大写字母!");
        }
    }
}

2.一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出

package com.atguigu.exer;
import java.util.Scanner;
public class exer2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String str = scan.next();

        char[] array = str.toCharArray();
        System.out.println("字符串长度为:" + array.length);

        for(int i = array.length -1; i >= 0;i--){
            System.out.print(array[i]);
        }
    }
}

3.模拟一个trim方法,去除字符串两端的空格

public static String myTrim(String str){
	int start = 0;
	int end = str.length() - 1;
	while(start < end && str.charAt(start) == ' '){
		start++;
	}
	while(start < end && str.charAt(end) == ' '){
		end--;
	}
	if(start == end){
		return "";
	}
	return str.substring(start, end + 1);
}

4 . 将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”

package com.atguigu.exer;

import java.util.Scanner;

public class exer4 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //输入原始字符
        String str = scan.next();
        //输入指定翻转位置的字符
        String reverseStr = scan.next();

        System.out.println(reverse(str,reverseStr));

    }

    public static String reverse(String str1,String str2){
        char[] array = str1.toCharArray();

        int start = str1.indexOf(str2);
        int end = start + str2.length();

        for(int i = start ; i <  start + (str2.length() / 2 ); i++){

            char temp = array[i];
            int indexExchange = start + end - 1 - i;
            array[i] = array[indexExchange];
            array[indexExchange] = temp;
        }

        return new String(array);
    }
}

abcdefg
cdefg
abgfedc

5.获取一个字符串在另一个字符串中出现的次数。判断str2在str1中出现的次数

//自己写的
package com.atguigu.exer;

import java.util.Scanner;

public class exer5 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //输入原始字符
        String str = scan.next();
        //输入需要查找的字符
        String reverseStr = scan.next();

        System.out.println(indexofString(str,reverseStr));

    }

    public static int indexofString(String str1,String str2){
        int count = 0;

        for(int i = 0; i < str1.length() - str2.length() + 1;i++){
            String subString = str1.substring(i,i+str2.length());
            //System.out.println("第" + i +"次分割结果:" + subString);
            if(subString.equals(str2)){
                count++;
            }
        }

        return count;
    }
}
//老师给的
public static int getTime(String str1,String str2){
	int count = 0;
	int len;
	while((len = str1.indexOf(str2)) != -1){
		count++;
		str1 = str1.substring(len + str2.length());
	}
	
	return count;
}

6 .获取两个字符串中最大相同子串

没写出来

//老师给的
public static List<String> getMaxSubString(String str1,String str2){
	String maxStr = (str1.length() > str2.length())? str1 : str2;
	String minStr = (str1.length() < str2.length())? str1 : str2;
	int len = minStr.length();
	List<String> list = new ArrayList<>();
	for(int i = 0;i < len;i++){
		for(int x = 0,y = len - i;y <= len;x++,y++){
			String str = minStr.substring(x, y);
			if(maxStr.contains(str)){
				list.add(str);
			}
		}
		if(list.size() != 0){
			return list;
		}
	}
	return null;
}

7.编写java程序,随便输入两个单词,两个单词之间以空格隔开,输出时每个单词的首字母变为大写。如输入:“hello java”,输出为“Hello Java”

package com.atguigu.exer;
import java.util.Scanner;
public class exer7 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String str1 = scan.next();
        String str2 = scan.next();

        System.out.print(str1.substring(0,1).toUpperCase() +
                str1.substring(1) + " ");
        System.out.print(str2.substring(0,1).toUpperCase() +
                str2.substring(1));
    }
}

8.输出字符串"ddejidsEFALDFfnef23 573ed"里的大写字母,小写英文字母,非英文字母

package com.atguigu.exer;
import java.util.Scanner;
public class exer8 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();

        int len = str.length();
        char[] array = str.toCharArray();

        char[] upperChar = new char[len];
        int upperCount = 0;
        char[] lowerChar = new char[len];
        int lowerCount = 0;
        char[] otherChar = new char[len];
        int otherCount = 0;

        //大写字母 65-90  小写字母:97-122 ,0-9:48-57
        for(int i = 0; i < array.length;i++){
            int temp = (int)array[i];
            if(temp >= 65 && temp <= 90){
                upperChar[upperCount++] = array[i];
            }else if(temp >= 97 && temp <= 122){
                lowerChar[lowerCount++] = array[i];
            }else{
                otherChar[otherCount++] = array[i];
            }
        }

        print(upperChar,upperCount,"大写字母");
        print(lowerChar,lowerCount,"小写字母");
        print(otherChar,otherCount,"非英文字母");


    }
    public static void print(char[] arr,int count,String str){
        System.out.print(str + ":");
        for(int i = 0; i < count;i++){
            System.out.print(arr[i]);
        }
        System.out.println();
    }
}

参考文献

链接: B站尚硅谷宋红康Java.

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值