牛客网刷java题目总结四

1.java String类型底层是char[]实现的 但是不像c的是它的结尾不是以\0结束的

2. char存储的unicode码

3.接口

所有方法都是public的抽象方法

所有常量都是public static final修饰

为什么是public:因为接口必然是要被实现的,如果不是public,这个属性就没有意义了;

为什么是static:因为如果不是static,那么由于每个类可以继承多个接口,那就会出现重名的情况;

为什么是final:这是为了体现java的开闭原则,因为接口是一种模板,既然是模板,那就对修改关闭,对扩展开放。

 4。守护线程与非守护线程

非守护线程(比如主线程)结束时,守护线程也会结束

结束线程的方法是interrupt()

一个线程等待另一个线程的方法是wait()

5.在Applet 中,方法的执行顺序是

init(), start(), paint(),stop(),destroy()

6.内联函数的问题

内联函数就是在程序编译时,编译器将程序中出现  的内联函数调用表达式用内联函数的函数体来直接进行替换。显然,这样就不会产生转去转回的问题,但是由于在编译时将函数体中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。  

public final void method1() {     

    //TODO something     

}  

这个指示并不是必需的。final关键字只是告诉编译器,在编译的时候考虑性能的提升,可以将final函数视为内联函数。  
但最后编译器会怎么处理,编译器会分析将final函数处理为内联和不处理为内联的性能比较了。

7.当编译并运行下面程序时会发生什么结果()

public class Bground extends Thread{

    public static void main(String argv[]){

        Bground b = new Bground();

        b.run();

    }

    public void start(){

        for(int i=0;i<10;i++){

            System.out.println("Value of i = "+i);

        }

    }

}

当继承父类时重写了start()而没有重写run(),这是会调用父类的run方法,而父类run方法没有实际逻辑,所以编译正确却无输出

8.ResultSet跟普通的数组不同,索引从1开始而不是从0开始

9.ArrayList和LinkedList的异同

ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。

10.Base base = new Son();

多态调用 意义:使base能够调用Son中的重写方法,而不能调用非重写方法(如果在更新的时候,修改原类代价太大,直接继承,重写方法比较合适)

子类继承父类不能重写静态方法,也就是说它不能被调用

11forward和redirect、

1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.

redirect:不能共享数据.

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

4.从效率来说

forward:高.

redirect:低.

11.java继承中对构造函数是不继承的,只是显式或者隐式调用

12.创建一个子类的初始化过程

1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 

2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 

3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;

4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;

执行 Base b = new Sub();时由于多态 b编译时表现为Base类特性,运行时表现为Sub类特性,

Base b = new Sub();不管是哪种状态都会调用Base构造器执行 callName()方法;

13. ”==“和equals()

包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱

包装类的equals()方法不处理数据转型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值