JAVA实用类期末复习题

单选题

1. (单选题)
下列哪个叙述是错误的?

  • A. "9dog".matches("\\ddog")的值是true。
  • B. 12hello567 .replaceAll( [123456789]+ , @ )返回的字符串是@hello@。
  • C. new Date(1000)对象含有的时间是公元后1000小时的时间。
  • D.  "\\hello\n"是正确的字符串常量

正确答案: C   

new Date(1000) 创建的 Date 对象表示的是从1970年1月1日 00:00:00 GMT 开始经过的毫秒数,而不是公元后1000小时的时间

A. “9dog”.matches(“\ddog”)的值是true。

这个叙述是正确的。正则表达式"\ddog"匹配任何一个数字后跟着"dog",所以"9dog"符合这个模式,结果为true。

B. 12hello567 .replaceAll( [123456789]+ , @ )返回的字符串是@hello@。

这个叙述也是正确的。正则表达式[123456789]+匹配1到9之间的数字的一个或多个出现。在给定的字符串"12hello567"中,它匹配到了"12"和"567",然后用"@“替换它们,结果为”@hello@"。

D. "\hello\n"是正确的字符串常量。

这个叙述也是正确的。字符串常量"\hello\n"表示字符串"\hello\n",其中"\h"表示字符"h"前面带有转义字符"“,”\n"表示换行符。所以,在Java中它是一个有效的字符串常量

   2、单选题 下列哪个说法是正确的?

A .   "\natural"是正确的String常量。

B.    "\hello"是正确的String常量。

正确答案:A  \n会被解释成换行符,\h会被识别会非法的转义字符

判断题

1. (判断题)
表达式"3.1415926".matches("[0-9]+[.]{1}[0-9]+")的值是true。

  • A. 对
  • B. 错

正确答案: 对 

这个正则表达式 [0-9]+[.]{1}[0-9]+ 可以分解为几个部分:

  1. [0-9]+: 表示一个或多个数字。[0-9] 表示任意一个数字,+ 表示前面的字符可以出现一次或多次,所以这部分匹配了数字序列。

  2. [.]{1}: 表示一个小数点。[.] 表示匹配一个小数点,{1} 表示确保小数点只出现一次。

  3. [0-9]+: 再次表示一个或多个数字,匹配小数点后的数字序列。

因此整个正则表达式的意思是匹配一个或多个数字,接着是一个小数点,再接着是一个或多个数字。                                                                                                                                                                                                                                                                                                                                                                                               

在正则表达式中,花括号 {} 用来指定匹配前面字符的次数。有几种不同的用法:

  1. {n}: 匹配前面的字符恰好 n 次。
  2. {n,}: 匹配前面的字符至少 n 次。
  3. {n,m}: 匹配前面的字符至少 n 次,但不超过 m 次。

例如,在正则表达式 [a-z]{3} 中,{3} 表示匹配小写字母序列,该序列包含恰好三个字符。

2. (判断题)
表达式java88_hello_99".matches("[a-zA-Z|0-9|_]+")的值是true。

  • A. 对
  • B. 错

正确答案: 对  

  1. 首先匹配任何一个小写字母(a-z)或大写字母(A-Z)
  2. 然后匹配竖线字符(|)
  3. 接着匹配任何一个数字(0-9)
  4. 再次匹配竖线字符(|)
  5. 最后匹配下划线字符(_)
  6. +代表匹配前面的字符一次或多次

3. (判断题)
Random对象的nextInt(int n)方法随机返回[0,n)之间的一个整数。

  • A. 对
  • B. 错

正确答案: 对   

Random 是 Java 中用于生成伪随机数的类。它提供了多种方法来生成随机数,其中一些常用的方法包括

  1. nextInt(): 这个方法返回一个随机的整数,范围是 Integer.MIN_VALUE 到 Integer.MAX_VALUE 之间的任意整数。

  2. nextDouble(): 返回一个随机的双精度浮点数,范围是大于等于0.0(包括)且小于1.0(不包括)的任意双精度浮点数。

  3. nextBoolean(): 返回一个随机的布尔值,即 true 或 false

  4. nextLong(): 返回一个随机的长整数,范围是 Long.MIN_VALUE 到 Long.MAX_VALUE 之间的任意长整数。

  5. nextFloat(): 返回一个随机的单精度浮点数,范围是大于等于0.0(包括)且小于1.0(不包括)的任意单精度浮点数。

  6. nextInt(int n): 这个方法会返回一个介于 0(包括)和 n(不包括)之间的随机整数。

4. (判断题) 表达式"RedBird".indexOf("Bird")的值是4。

  • A. 对
  • B. 错

正确答案: 错  表达式"RedBird".indexOf(“Bird”)的值是 3,而不是 4。这是因为 indexOf() 方法返回第一次出现指定子字符串的位置的索引,索引从 0 开始计数。  indexOf() 方法用于查找字符串中指定子字符串的位置,如果找到则返回第一次出现的位置的索引,如果未找到则返回 -1。它的基本语法是 indexOf(String str),其中 str 是要搜索的子字符串。该方法从字符串的开头开始搜索,并返回找到的子字符串的索引位置。

5. (判断题)
表达式"\t\nABC".length()的值是5。

  • A. 对
  • B. 错

正确答案: 对   \t制表符,\n换行符各占一个字符

三、填空题

1、请说出下面代码中标注的【代码】的输出结果。

public class Main {
 public static void main (String args[ ]) {
   String regex = "\\djava\\w{1,}" ;
   String str1 = "88javaookk";
   String str2 = "9javaHello";
   if(str1.matches(regex)) {
     System.out.println(str1); 
   }
   if(str2.matches(regex)) {
     System.out.println(str2); //【代码】 
   }  
  }
}

正确答案:9javaHello  

这个正则表达式 \\djava\\w{1,} 可以分解成三部分:

  1. \\d:这表示匹配任意一个数字字符。在这个正则表达式中,它匹配了字符串中的一个数字字符。

  2. java:这表示匹配字面上的字符串 “java”。在这个正则表达式中,它匹配了字符串中的 “java”。

  3. \\w{1,}:这表示匹配至少一个字母数字字符,其中 \\w 匹配任何字母数字字符,而 {1,} 表示至少重复一次。在这个正则表达式中,它匹配了字符串中 “java” 后面的字母数字字符序列。

所以整个正则表达式 \\djava\\w{1,} 的意思是:匹配以一个数字字符开头,后面紧跟着 “java” 字符串,然后至少有一个字母数字字符的字符串。 如果正则表达式改为  "[\\djava\\w]{1,}"  就全部打印

2、StringBuffer简介及常见用法

StringBuffer 是 Java 中的一个可变的字符串类,它是线程安全的,适用于多线程的环境。在多线程的情况下,如果需要频繁地进行字符串操作,通常会选择使用 StringBuffer,而在单线程环境中则可以使用 StringBuilder,它比 StringBuffer 的性能更好,但是不是线程安全的。

StringBuffer 的常见用法包括:

  1. 字符串拼接:StringBuffer 提供了 append() 方法用于在字符串的末尾添加内容,这可以避免频繁创建新的 String 对象,提高性能。

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出:Hello World
  1. 插入和删除:StringBuffer 提供了 insert() 和 delete() 方法,可以在指定位置插入字符串或删除字符。这些操作可以在字符串中间快速进行插入和删除操作。

StringBuffer sb = new StringBuffer("Hello World");
sb.delete(5, 11);
System.out.println(sb.toString()); // 输出:Hello
StringBuffer sb = new StringBuffer("Hello");
sb.insert(5, " World");
System.out.println(sb.toString()); // 输出:Hello World
  1. 替换操作:StringBuffer 的 replace() 方法可以替换指定位置的字符或字符串,可以用于修改字符串中的内容。

StringBuffer sb = new StringBuffer("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb.toString()); // 输出:Hello Java
  1. 反转字符串:StringBuffer 提供了 reverse() 方法可以将字符串进行反转操作。

StringBuffer sb = new StringBuffer("Hello");
sb.reverse();
System.out.println(sb.toString()); // 输出:olleH
  1. 获取字符串长度:通过 length() 方法可以获取当前字符串的长度。

3. (填空题)

请说出下面代码中标注的【代码1】和【代码2】的输出结果,以空格隔开

public class Main {
  public static void main(String args[]) {
      byte d[]="abc我们喜欢篮球".getBytes();
      System.out.println(d.length);		//【代码1】
      String s=new String(d,0,6);
      System.out.println(s);      		//【代码2】
   }
}

正确答案:21 abc我  

在这个案例里,字符串 "abc我们喜欢篮球" 包含7个字符,其中3个是英文字符 (abc),4个是中文字符(我们喜欢篮球)。

在 Java 中,String 类的 getBytes() 方法将字符串编码为字节数组。英文字符通常使用一个字节表示,而中文字符通常使用多个字节表示,这取决于所选字符编码(如 UTF-8)。

因为中文字符"我们"、“喜”、“欢”、“篮”、“球” 对应的 UTF-8 编码是占用 3 个字节,所以这里会一共占用 21 个字节。由于这些中文字符后面还有空格,所以长度是21。 s表示比特数组从0开始截取六个比特的数据给s,故为abc我

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
很好的Java复习资料,参考参考!对第28题的系统说明 如何应用DataInputStream进行文件操作 彻底明白Java的IO系统 一. Input和Output 1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种型: 1.1 以字节为导向的stream 以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种型: 1) input stream: 1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用 2) StringBufferInputStream:把一个String对象作为InputStream 3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作 4) PipedInputStream:实现了pipe的概念,主要在线程中使用 5) SequenceInputStream:把多个InputStream合并为一个InputStream 2) Out stream 1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中 2) FileOutputStream:把信息存入文件中 3) PipedOutputStream:实现了pipe的概念,主要在线程中使用 4) SequenceOutputStream:把多个OutStream合并为一个OutStream 1.2 以Unicode字符为导向的stream 以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种型: 1) Input Stream 1) CharArrayReader:与ByteArrayInputStream对应 2) StringReader:与StringBufferInputStream对应 3) FileReader:与FileInputStream对应 4) PipedReader:与PipedInputStream对应 2) Out Stream
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cristiano永远是goat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值