【牛客网java练习错题笔记】 --Java基础打卡day002

1 根据以下代码段,正确的是

11
通过继承,子类可以拥有所有父类对其可见的方法和域
A.私有方法只能在本类中可见,故不能继承,A错误
B.缺省访问修饰符只在本包中可见,在外包中不可见,B错误
C.保护修饰符凡是继承自该类的子类都能访问,当然可被继承覆盖;C正确
D.static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖,D错误

2 在Java中,在同一包内,类Cat里面有个公共方法sleep(),该方法有static修饰,所以可以直接用Cat.sleep()

12
static修饰的可以用类名.方法名调用

3 以下类型为Final的是:

13
StringBuilder , StringBuffer ,String 都是 final 的,但是为什么StringBuilder , StringBuffer可以进行修改呢,因为不可变包括的是,引用不可变以及对象不可变,而这三个都是属于引用不可变,(也就是地址不要变,里面的内容随心所欲),而StringBuilder , StringBuffer 中都包含右append方法,可对对象中的内容进行增加。
而String a=“123”+new String(“456”);实际上底层是用了一个StringBuffer 进行append;

4 以下几种方式可用来实现线程间通知和唤醒:

14
wait()、notify()和notifyAll()是 Object类 中的方法
从这三个方法的文字描述可以知道以下几点信息:
1)wait()、notify()和notifyAll()方法是本地方法,并且为final方法,无法被重写
2)调用某个对象的wait()方法能让当前线程阻塞,并且当前线程必须拥有此对象的monitor(即锁)
3)调用某个对象的notify()方法能够唤醒一个正在等待这个对象的monitor的线程,如果有多个线程都在等待这个对象的monitor,则只能唤醒其中一个线程;
4)调用notifyAll()方法能够唤醒所有正在等待这个对象的monitor的线程
ReentrantLock使用lock和unlock
Thread的wait/notify/notifyAll继承自Object.没有自己实现
Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、 notify(),使用Condition1的await()、signal()这种方式实现线程间协作更加安全和高效

5 正则表达式

15
[😕/] 表示匹配 😕/ 中的任何一个字符,也就是匹配 : 或 /
[htps] 表示匹配 htps 中的任何一个字符,[htps]+ 表示一次或多次匹配前面的字符或子表达式,所以 [htps]+ 可以匹配 https

  1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
  2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
  3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
  4. 在中括号里面和外面含义不同,如在外时,就表示开头,如7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。
  5. .表示匹配任意的字符。
  6. \d表示数字。
  7. \D表示非数字。
  8. \s表示由空字符组成,[ \t\n\r\x\f]。
  9. \S表示由非空字符组成,[^\s]。
  10. \w表示字母、数字、下划线,[a-zA-Z0-9_]。
  11. \W表示不是由字母、数字、下划线组成。
  12. ?: 表示出现0次或1次。
  13. +表示出现1次或多次。
  14. *表示出现0次、1次或多次。
  15. {n}表示出现n次。
  16. {n,m}表示出现n~m次。
  17. {n,}表示出现n次或n次以上。
  18. XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。
  19. X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。
  20. (X)子表达式,将X看做是一个整体

6 以下哪个接口的定义是正确的?

16
选D,
A,接口中方法的默认修饰符时public abstract,**抽象方法可是没有方法体的,**没有大括号{}
B,JDK8中,接口中的方法可以被default和static修饰,但是!!!被修饰的方法必须有方法体
C,注意一下,接口是可以多继承的。整个没毛病,和A选项一样,抽象方法不能有方法体

7 下面的方法,当输入为2的时候返回值是多少?

17
没有break,发生case穿透现象,程序会继续向下执行,直到遇到break或者结束switch语句的大括号为止。

8 以下JAVA程序的输出是什么()

18

第一点是run与start方法区别,调用run时只是单纯执行方法,故按代码顺序执行下来结果就是SogouHello。
接着我们再来看看把run换成start,结果是HelloSogou,这是为什么呢。
首先调用start是开始了一个线程,那么现在程序中有了两个线程主线程main和线程T。
这就涉及本题第二个知识点了,函数使用的锁是this(即对象本身),若函数被static修饰则锁为 类名.class.
那么题目中两个函数都是使用了同一个锁即HelloSogou.class,当执行t.start时,t线程准备调用Sogou方法,但是锁对象已被主线程占用,故要等待主线程执行完System.out.print(“Hello”)后释放锁才可以执行自己的Sogou方法。故此结果是SogouHello

9 ResultSet中记录行的第一列索引为?19

ResultSet数组是从1开始遍历。ResultSet是jsp,用来接收获取的数据库信息,查询时也是从第1列开始

10 下列有关java构造函数叙述正确的是()

20

构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序
多个类时构造函数不一定与公共类同名,因为每个类都可以有构造函数,函数名同所属类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件柠檬

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

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

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

打赏作者

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

抵扣说明:

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

余额充值