牛客网刷java题目总结二

1.structs是基于MVC的

2.abstract

用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。

用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。

Abstract是Java中的一个重要关键字,可以用来修饰一个类或者一个方法。 修饰一个方法时,表示该方法只有特征签名(signature),没有具体实现,而是把具体实现留给继承该类的子类。一个类中只要有一个abstract 方法,那么这个类就要被声明为abstract,但是其中可以有非abstract方法。 abstract类可以使得类的设计者能够创建方法的原型,而真正的实现留给使用这个类的人

3.在static方法不能使用this

4.URL u =new URL("http://www.123.com");。如果www.123.com不存在,则返回__http://www.123.com____

打印URL的类的时候,调用URL类的toString()方法,不管URL中的网址是不是存在的,都可以将其打印出来

5.i=j++的问题

i=j++的执行步骤:

tmp=j;

j++;

i=tmp;

6.集合与map各自的继承关系

.

7.一道绕弯子的题目

 

public class Test {  

    public static void main(String [] args){  

        System.out.println(new B().getValue());  

    }  

    static class A{  

        protected int value;  

        public A(int v) {  

            setValue(v);  

        }  

        public void setValue(int value){  

            this.value = value;  

        }  

        public int getValue(){  

            try{  

                value++;  

                return value;  

            } catch(Exception e){  

                System.out.println(e.toString());  

            } finally {  

                this.setValue(value);  

                System.out.println(value);  

            }  

            return value;  

        }  

    }  

    static class B extends A{  

        public B() {  

            super(5);  

            setValue(getValue() - 3);  

        }  

        public void setValue(int value){  

            super.setValue(2 * value);  

        }  

    }  

}  

怎么理解?

首先要理解当A继承B的时候,会继承B的变量和方法,关键点就是A如果调用方法时优先自己的重写方法,当调用父类的方法时,this的意义仍是A类(因为是在A类中执行的)

8.异常

try用throw一个对象抛出异常,catch捕获异常

在方法体上也可以用throws进行异常的抛出

finally时不管是否有异常抛出都执行的代码段

9.集合的线程安全问题

1. HashMap,TreeMap 未进行同步考虑,是线程不安全的。

2. HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。

3. Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,

List  list = Collections.synchronizedList(new ArrayList());

Set  set = Collections.synchronizedSet(new HashSet());

10.二元操作

两个数值进行二元操作时,会有如下的转换操作:

如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。

否则,如果其中一个操作数是float类型,另一个将会转换为float类型。

否则,如果其中一个操作数是long类型,另一个会转换为long类型。

否则,两个操作数都转换为int类型。

故,x==f1[0]中,x将会转换为float类型。

11.类之间存在以下几种常见的关系:

use-a 是依赖关系

has-a   一般是组合关系

is-a   一般是继承关系   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值