题目14
String s = new String(“xyz”);创建了几个String Object
答:两个,一个字符对象,一个字符对象引用对象
题目15
是否可以继承String类
答:String类是final类故不可以继承
题目16
String与StringBuffer的区别
答:String的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
题目17
一、判断题
1.用运算符“==”比较字符串对象时,只要两个字符串包含的是同一个值,结果便为 true。()
2.String 类字符串在创建后可以被修改。()
3.方法 replace (String srt1, String srt2)将当前字符串中所有 srt1 子串换成 srt2子串。
4.方法compareTo在所比较的字符串相等时返回 0。()
5.方法IndexOf((char ch,-1)返回字符ch在字符串中最后一次出现的位置。()
6.方法startsWith()判断当前字符串的前缀是否和指定的字符串一致。()
【答案】 判断: 1.难度:较难 答案:错误 知识点:用运算符“==”比较字符串对象,实际上是比较并确定它们是否为内存中的同一个 对象。 2.难度:容易 答案:错误 知识点:String 类字符串对象是常量,在创建后不能修改。 3.难度:适中 答案:正确 知识点:String 类的方法 replace(String srt1, String srt2)用字符串 srt2 的内容替换当 前字符串中遇到的所有 srt1 子串。 4.难度:容易 答案:正确 知识点:不仅如此,如果调用compareTo的字符串比作为参数的字符串小,则返回一个负数; 如果调用compareTo的字符串比作为参数的字符串大时,则返回一个正数。 5.难度:适中 答案:错误 知识点:方法lastIndexOf((char ch)返回字符ch在字符串中最后一次出现的位置。 6.难度:适中 答案:正确 知识点:startsWith(prefix)方法判断当前字符串的前缀是否和指定的字符串 prefix 一致,如 果一致,返回 true,否则返回 false。
题目18
1.下面哪个选项正确地声明了一个字符串数组:
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]);
} }
当编译和执行这段代码时会出现:
A 有一个编译错误为“possible reference before assignment”
B 有一个编译错误为“illegal array declaration syntax”
C 有异常出现为“Null Pointer Exception”
D 正确执行并且输出 0
3.已知 String 对象 s=“abcdefg”,则s.substring(2, 5)的返回值为____。
A “bcde”
B “cde”
C “cdef”
D “def”
4.请看下面的代码 String s = “people”; String t = “people”; String c[ ] = {“p”,”e”,”o”,”p”,”l” ,”e”};
下面哪一选项的语句返回值为真:
A s .equals(t);
B t .equals©;
C st;
D t .equals(new String(“people”));
E tc;
5.已知 s 为一个 String 对象,s=“abcdefg”,则s.charAt(1)的返回值为____。
A a
B b
C f
D g
6.请看下面的代码 String s = “good”; 下面选项语句书写正确的是:
A s += “student”;
B char c = s[1];
C intlen = s .length;
D String t = s.toLowerCase( );
7.正确创建一个含有 5 个元素的字符串数组的选项是:
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”);
charch[ ]={‘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’;
} }
该程序的输出结果是:
A Boy and dbc
B Boy and abc
C Girl and dbc
D Girl and abc
选择: 1.难度:容易 答案:C 知识点:声明数组时,不允许在数组名后面的括号内指定数组元素的个数。 2.难度:适中 答案:D 知识点:一旦数组被创建则它的元素就被初始化为 0 3.难度:较难 答案:B 知识点:substring(begpos, endpos)取出一个子串,该子串从begpos位置起至 endpos-1 为结束。 4.难度:较难 答案:AD C 知识点:s 和 t 不是相同的引用,而在使用==比较引用时,如果两个引用指向内存中的同一个 对象,则结果为真。 5.难度:容易 答案:B 知识点:字符串中第一个字符的 index 取值是 0。 6.难度:适中 答案:AD 知识点:s 是字符串不是数组,因此 B 错误;C 错误是由于 length 后要加括号。 7.难度:适中 答案:AB 知识点:每个数组元素在初始化之前都为 null。 8.难度:较难 答案:D 知识点:由于 change(String str,charch[ ]) 中str为值参数,所以str=”Boy”的结果不 会影响实际参数。
题目19
String str = new String(“hello”);创建了哪些对象?
字符串常量池中有一个对象,堆中有一个字符串对象。
题目20
如何将String类型转化Number类型?举例说明String str = “123”; 答任意一个都对: Integer num1 = new Integer(str); 或 int num2 = Integer.parseInt(str); 或 Integer num3 = Integer.valueOf(str);
题目21
1.已知sb为StringBuffer的一个实例,且sb= "abcde ",则sB reverse()后sb的值为____。
2.已知sb为StringBuffer的一个实例,且sb= "abcde ",则sB delete(1,2)后sb的值为 ____。
填空: 1.难度:容易 答案: "edcba" 知识点:reverse() 反转当前字符串。 2难度:适中 答案:"acde " 知识点:delete(begpos, endpos)删除当前StringBuffer对象中自begpos位置起,到 endpos-1位置止的子字符串。
题目22
/* 请编写一个 Application 实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。 */
package com.jerry.exer1; /** * @author jerry_jy * @create 2022-10-04 10:47 */ public class Exer1 { public static void main(String[] args) { // System.out.println(Math.round(11.5));//12 // System.out.println(Math.round(-11.5));//-11 // System.out.println(args[0]); int count = 0; if (args.length!=0){ System.out.println(args[0]);//接受命令行中给出的一个字母串,先将该串原样输出 if (args[0].charAt(0)>=65&&args[0].charAt(0)<=90){ for (int i = 0; i < args[0].length(); i++) { if (args[0].charAt(i)>=65&&args[0].charAt(i)<=90){ System.out.println(args[0].charAt(i)); count++; } } System.out.println(); System.out.println("共有" + count + " 个大写字母。"); }else { System.out.println("第一个字母不是大写字母!"); } } } }
题目23
/* 一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。 */
package com.jerry.exer1; import java.util.Scanner; /** * @author jerry_jy * @create 2022-10-04 11:32 */ public class Exer2 { /* 一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。 */ public static void main(String[] args) { System.out.println("接受用户输入的一行字符串: "); Scanner scanner = new Scanner(System.in); String str = scanner.next(); if (str != null) { int count = 0; char[] chars = str.toCharArray(); System.out.println("字符个数:" + chars.length); System.out.print("数组反转:"); //方式一: // for (int i = chars.length-1; i >=0 ; i--) { // System.out.print(chars[i]); // } //方式二:直接调用StringBuffer.reverse()方法 System.out.println(new StringBuffer(str).reverse()); } else { System.out.println("空串"); } } }
题目24
/* 创建BigDecimalDemo类,在类中分别定义add(),sub(),mul()和div()方法实现加、减、乘、除运算,并输出运算结果。要求除法,可以处理商的精度。 */
package com.jerry.exer1; /** * @author jerry_jy * @create 2022-10-04 16:29 */ import java.math.BigDecimal; public class BigDecimalDemo { static final int location = 10; /** * @paramargs 这个类提供精确的浮点数运算 */ public static BigDecimal add(double value1, double value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.add(b2); } public static BigDecimal sub(double value1, double value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.subtract(b2); } public static BigDecimal BigDecimalmul(double value1, double value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.multiply(b2); } /* * 提供精确的除法运算当除不尽时,精确到小数点后10位,以后的数字四舍五入 */ public static BigDecimal div(double value1, double value2) { return div(value1, value2, location); } /* * @param b 表示需要精确到小数点以后的位数 */ public static BigDecimal div(double value1, double value2, int b) { if (b < 0) { System.out.println("b值必须大于等于0"); } BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP); } public static void main(String[] args) { BigDecimalDemo b = new BigDecimalDemo(); System.out.println("两个数字相加结果:" + b.add(-7.5, 8.9)); System.out.println("两个数字相减结果:" + b.sub(-7.5, 8.9)); System.out.println("两个数字相乘结果:" + b.BigDecimalmul(-7.5, 8.9)); System.out.println("两个数字相除结果,结果小数后保留10位:" + b.div(10, 2)); System.out.println("两个数字相除,结果保留小数后5位:" + b.div(-7.5, 8.9, 5)); } }
题目25
/* 编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。 */
package com.jerry.exer1; import java.util.Arrays; import java.util.Scanner; /** * @author jerry_jy * @create 2022-10-04 16:40 */ public class Exer4 { // 输入的字符串应该是数字型,对于不是该类型的应该做正则表达式的校验 public static void main(String[] args) { System.out.println("请输入第一个数字型字符串:"); Scanner scanner1 = new Scanner(System.in); String str1 = scanner1.next(); System.out.println("请输入第二个数字型字符串:"); Scanner scanner2 = new Scanner(System.in); String str2 = scanner2.next(); Exer4 exer4 = new Exer4(); System.out.println("两个字符串的拼接:" + exer4.concat(str1, str2)); System.out.println("整数相加:" + exer4.intPlus(str1, str2)); System.out.println("浮点数相加:" + exer4.floatPlus(str1, str2)); } public String concat(String str1, String str2) { return str1 + str2; } public int intPlus(String str1, String str2) { return Integer.parseInt(str1) + Integer.parseInt(str2); } public float floatPlus(String str1, String str2) { return Float.parseFloat(str1) + Float.parseFloat(str2); } }
题目26
/* 对字符串中字符进行自然顺序排序 */
package com.jerry.exer1; import java.util.Arrays; /** * @author jerry_jy * @create 2022-10-04 18:38 */ public class Exer5 { public static void main(String[] args) { String str = "21Fdfw85KyeD"; char[] chars = str.toCharArray(); Arrays.sort(chars); System.out.println(new String(chars)); } }
题目27
/* 中国有句俗语叫“三天打鱼两天晒网”。如果从1990年1月1日起开始执行“三天打鱼两天晒网”。如何判断在以后的某一天中是“打鱼”还是“晒网”? */
package com.jerry.exer1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.Period; import java.util.Date; /** * @author jerry_jy * @create 2022-10-04 18:59 */ public class Exer6 { public static void main(String[] args) { String date1 = "1990/1/1"; // 开始“三天打鱼两天晒网”的日期 String date2 = "2022/10/4"; // 手动输入的日期 long day = getQuot(date1, date2);// 传入值计算时间差 if (day % 5 == 0 || day % 5 == 4) { System.out.println("今天是休息日,可以晒晒网"); } else { System.out.println("今天要工作,打鱼了!"); } } public static long getQuot(String time1, String time2) { long dayDistance = 0; SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd"); try { Date date1 = ft.parse(time1); Date date2 = ft.parse(time2); dayDistance = date2.getTime() - date1.getTime(); dayDistance = dayDistance / 1000 / 60 / 60 / 24 + 1; } catch (ParseException e) { e.printStackTrace(); } return dayDistance; } }
题目28
/* 完成MathLib类,可以做加,减,乘,除等功能,其中加法不但可以做数字的加法,还可以做字符串的相加。 */
package com.jerry.exer1; /** * @author jerry_jy * @create 2022-10-04 19:30 */ public class Exer7 { /* 完成MathLib类,可以做加,减,乘,除等功能,其中加法不但可以做数字的加法,还可以做字符串的相加。 */ public static void main(String[] args) { System.out.println(MathLib.add(1, 2)); System.out.println(MathLib.add("1", "2")); System.out.println(MathLib.sub(1, 2)); System.out.println(MathLib.multi(1, 2)); System.out.println(MathLib.div(1, 2)); } } class MathLib{ public static double add(double num1,double num2){ return num1+num2; } public static double sub(double num1,double num2){ return num1-num2; } public static double multi(double num1,double num2){ return num1*num2; } public static double div(double num1,double num2){ return num1/num2; } public static String add(String str1,String str2){ return str1+str2; } }
题目29
/* 任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数。 */
package com.jerry.exer1; import java.util.Scanner; /** * @author jerry_jy * @create 2022-10-04 19:37 */ public class Exer8 { /* 任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数。 */ public static void main(String[] args) { System.out.println("请从键盘任意输入一串字符,统计字符串里面的大写字母和小写字母的个数"); Scanner scanner = new Scanner(System.in); String str = scanner.next(); // String str = "1f5a64gFE4g6hT"; int count1 = 0, count2 = 0; char[] chars = str.toCharArray(); System.out.print("大写字母:"); for (int i = 0; i < chars.length; i++) { if (chars[i] >= 65 && chars[i] <= 90) { System.out.print(chars[i]); count1++; } } System.out.println(); System.out.println("大写字母的个数:" + count1); System.out.print("小写字母:"); for (int i = 0; i < chars.length; i++) { if (chars[i] >= 97 && chars[i] <= 122) { System.out.print(chars[i]); count2++; } } System.out.println(); System.out.println("小写字母的个数:" + count2); } }
题目30
/* 输入一句5个字的话,然后将它逆序输出。例如: 原数组:我爱你中国 逆序输出:国中你爱我 提示:先声明一个字符串数组,每个汉字作为字符串数组的一个元素,然后再从数组末尾开始循环输出。 */
package com.jerry.exer1; /** * @author jerry_jy * @create 2022-10-04 20:05 */ public class Exer11 { public static void main(String[] args) { char[] chars = {'我','爱','你','中','国'}; //方式一: // System.out.println(new StringBuffer(String.valueOf(chars)).reverse()); //方式二: for (int i = chars.length-1; i >=0; i--) { System.out.print(chars[i]); } } }
题目31
/* 输出字符串"ddejidsEFALDFfnef2357 3ed"里的大写字母数,小写英文字母数,非英文字母数 */
package com.jerry.exer1; /** * @author jerry_jy * @create 2022-10-04 20:09 */ public class Exer12 { public static void main(String[] args) { String str = "ddejidsEFALDFfnef2357 3ed"; char[] chars = str.toCharArray(); System.out.print("大写字母数:"); for (int i = 0; i < chars.length; i++) { if (chars[i] >= 65 && chars[i] <= 90) { System.out.print(chars[i]); } } System.out.println(); System.out.print("小写字母数:"); for (int i = 0; i < chars.length; i++) { if (chars[i] >= 97 && chars[i] <= 122) { System.out.print(chars[i]); } } System.out.println(); System.out.print("非英文字母数:"); for (int i = 0; i < chars.length; i++) { if (chars[i] < 65 || (chars[i] > 90 && chars[i] < 97) || chars[i] > 122) { System.out.print(chars[i]); } } } }
题目32
/* 求出“hijavahehejavahejava”字符串里面包含几个“java字符串。” */
package com.jerry.exer1; /** * @author jerry_jy * @create 2022-10-04 20:20 */ public class Exer13 { public static void main(String[] args) { int count = 0; String str = "hijavahehejavahejava"; char[] chars = str.toCharArray(); for (int i = 0; i < chars.length; i++) { if (chars[i] == 'j' && chars[i + 1] == 'a' && chars[i + 2] == 'v' && chars[i + 3] == 'a') { count++; } } System.out.println("里面包含 " + count + " 个“java字符串。”"); } }
题目33
/* 编写java程序,随便输入两个单词,两个单词之间以空格隔开,输出时每个单词的首字母变为大写。如输入:“hello java”,输出为“Hello Java” */
package com.jerry.exer1; import org.junit.Test; import java.util.Scanner; /** * @author jerry_jy * @create 2022-10-04 21:20 */ public class Exer14 { public static void main(String[] args) { System.out.println("随便输入两个单词,两个单词之间以空格隔开"); // Scanner scanner = new Scanner(System.in); // String str = scanner.next(); String str = "hello java"; char[] chars = str.toCharArray(); int index = 0; for (int i = 0; i < chars.length; i++) { if (chars[i] < 97 || chars[i] > 122){ index = i; System.out.println("index:"+index); } } chars[0]= (char) (chars[0]-32); chars[index+1]= (char) (chars[index+1]-32); System.out.println(new String(chars)); } }