每天搞懂10道Java基础题day04

1.下列哪个对访问修饰符作用范围由大到小排列是正确的?
A:private>default>protected>public
B:public>default>protected>private
C:private>protected>default>public
D:public>protected>default>private
正确答案: D
解析:
public可以被当前类,子类,包,其他包,访问,
protected 可以被当前类,子类,包访问
default可以被可以被当前类,包内访问;
private只能被当前类访问

2.在面向对象编程里,经常使用is-a来说明对象之间的继承关系,下列对象中不具备继承关系的是?()
A:手机与小米手机
B:企业家与雷军
C:编程语言与Java
D:中国与北京
正确答案: D  
解析:
类之间存在以下几种常见的关系
use-a 是依赖关系
has-a   一般是组合关系
is-a   一般是继承关系   

3.下列有关Servlet的生命周期,说法不正确的是?
A:在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
B:在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
C:在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
D:destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法
正确答案: A  
解析:
Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。
(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet
(2)创建:通过调用servlet构造函数创建一个servlet对象
(3)初始化:调用init方法初始化
(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求
(5)卸载:调用destroy方法让servlet自己释放其占用的资源

4.以下代码将打印出
public static void main (String[] args) { 
    String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class";
    System.out.println(classFile);
}
A:com. jd
B:com/jd/MyClass.class
C:///MyClass.class
D:com.jd.MyClass
正确答案: C 
解析:
由于replaceAll方法的第一个参数是一个正则表达式,而"."在正则表达式中表示任何字符,
所以会把前面字符串的所有字符都替换成"/"。如果想替换的只是".",那么久要写成"\\.".

5.下面代码运行结果是?
public class Test{
static{
   int x=5;
}
static int x,y;
public static void main(String args[]){
   x--;
   myMethod( );
   System.out.println(x+y+ ++x);
}
public static void myMethod( ){
  y=x++ + ++x;
 }
}
A:compiletime error
B;prints:1
C:prints:2
D:prints:3
E:prints:7
F:prints:8
正确答案: D
 解析:
1.因为静态代码块中的x是局部变量,不影响静态变量x的值
2.2.x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行。
3.java中自增操作非原子性的 
执行x--后 x=-1
调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3

6.在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。(  )
A:正确
B:错误
正确答案: B
解析:
方法调用时,会创建栈帧在栈中,调用完是程序自动出栈释放,而不是gc释放
JVM 内存可简单分为三个区:
1、堆区(heap):用于存放所有对象,是线程共享的(注:数组也属于对象)
2、栈区(stack):用于存放基本数据类型的数据和对象的引用,是线程私有的(分为:虚拟机栈和本地方法栈)
3、方法区(method):用于存放类信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即 None-Heap)
Java 的垃圾回收器(GC)主要针对堆区

7.java中 String str = "hello world"下列语句错误的是?
A:str+='      a'
B:int strlen = str.length
C:str=100
D:str=str+100
正确答案: A B C   
解析:'a'是字符,如果加了空格 那就是字符串了
字符串只有length()方法  数组才有length属性
100是int类型 无法转成string类型
str+100 是在尾部 +“100”

8.有关finally语句块说法正确的是( )
A:不管catch是否捕获异常,finally语句块都是要被执行的
B:在try语句块或catch语句块中执行到System.exit(0)直接退出程序
C:finally块中的return语句会覆盖try块中的return返回
D:finally 语句块在 catch语句块中的return语句之前执行
正确答案: A B C 
解析:结论:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,
管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

9.character流和byte流的区别不包括()
A:每次读入的字节数不同
B:前者带有缓冲,后者没有。
C:前者是字符读入,后者是字节读入。
D:二者没有区别,可以互换。
解析:
java中的流操作分为字节流和字符流两种
字节流是最基本的,它是按照字节来处理的。但是实际上很多是数据是文本,又提出了字符流的概念,它是按照
虚拟机的encode来处理,也就是要进行字符集的转化,实际上是通过byte[]和String来关联。
字符流和字节流每次读入的字节数是不确定的,可能相同也可能不相同;字符流和字节流都有缓冲流
字节流---->字符流
字节流转化为字符流,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
字符流---->字节流
字符流转化为字节流,实际上是String转化为byte[]时,byte[] String.getBytes(String charsetName)也是一样的道理至于java.io中还出现了许多其他的流,
按主要是为了提高性能和使用方便,如BufferedInputStream,PipedInputStream等
常识:
对于GBK编码标准,英文占用1个字节,中文占用2个字节
对于UTF-8编码标准,英文占用1个字节,中文占用3个字节
对于Unicode编码标准,英文中文都是2个字节。这也是为什么叫做unicode

10.关于匿名内部类叙述正确的是? ( )
A:匿名内部类可以继承一个基类,不可以实现一个接口
B:匿名内部类不可以定义构造器
C:匿名内部类不能用于形参
D:以上说法都不正确
正确答案: B
解析:由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类不能有构造器。
a 匿名内部类可以继承一个基类或实现一个接口
c 匿名内部类可以用于新参。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值