牛客网刷题(纯java题型 31~60题)
牛客网刷题(纯java题型 31~60题)
重写Override应该满足"三同一大一小"
三同:方法名相同,参数列表相同,返回值相同或者子类的返回值是父类的子类(这一点是经过验证的)
一大: 子类的访问修饰符比父类开放
一小: 子类抛出的异常比父类的小(具体,或者说子类抛出的异常是父类抛出的异常的子类
通过intellij测试的结果:
在子类中,如果一个方法满足与父类的方法的方法签名(方法名称+参数列表)相同,则一定属于override,那么子类中次方法的返回值就必须满足是父类的子类,且子类方法的修饰符必须比父类更开放
子类中,如果一个方法与父类的方法签名不同(方法名称+参数列表),那么这个方法就是一个子类的新方法,不属于override,也不属于overload,与父类的同名方法没有任何关系
容器的左上角是坐标的起点
图中的算法是二分查找,二分查找的时间复杂度计算:
第一次折半, n/2
第二次折半,n/(2^2)
第k次折半,n/(2^k)
因为k次折半之后,一定会出现只剩下一个数字的情况,也就是找到了要找的元素
那么也就有 n/(2^k) ==1
所以,k == log2(n),即二分查找的时间复杂度为log2(n)
抽象类实现接口,可以不实现接口中的任意方法或者所有方法
普通类实现接口,必须实现接口中的所有方法,接口中的字段field,普通类可以直接使用
普通类继承了抽象类,子必须实现抽象类中的所有抽象方法,对于抽象类中的非抽象方法,可以Override,也可以不Override
整数类型,默认为int,小数类型,默认为double,而不是float
例如, float result = (float)1.0; //否则报错
多种不同类型的数字进行运算,结果会是以最高精度的为准(自动向上转型),题中1/2.0 为int/double,所以结果应该为double类型的0.5; 即
double result = 1/2.0;
或者 float result =(float)(1/2.0);
依赖注入是通过反射实现的,是一种设计思想,与具体的框架无关,别的框架,也可以实现依赖注入
常见的依赖注入方式包括Setter方法和构造方法
Mock,也叫做伪对象,在测试中利用mock来代替真实的对象,方便测试的进行
封装:将对象的状态信息隐藏在对象内部,不允许外部直接访问
反射机制:在运行状态下,可以调用类的所有属性和方法,包括private属性和方法,所以破坏了封装性
String类的equals方法,只有instanceof之后,发现equal(object)中的object为String类型的对象,才会转换成String,然后比较char[]
执行过程:
boolean b = true?false:true==true?false:true;
-->
true?false:(true==true)?false:true;
true?false:true?false:true;
true?false:(true?false:true);
true?false:false;
false;
赋值语句= 的优先级最低
==的优先级高于三目运算符
为了将左边的三目运算符算完,必须要现将后面的三目运算符算完,所以需要从右向左计算
Spring是一系列轻量级java EE框架的集合,正确
Spring提供了AOP方式的日志系统,不正确
Spring提供了AOP,但是没有提供日志系统,需要使用log4j等开源框架来利用AOP属性,实现日志系统
Arrays.copyOf 调用了System.arraycopy方法,所以System.arraycopy > Arrays.copyOf
System.arraycopy是native方法
clone 方法也是native方法
从评论区的反馈来看: 效率: System.arraycopy > clone > Arrays.copyOf
创建泛型的时候,尽可能早的指出泛型的类型,争取让编译器检查出错误,而不是在jvm运行的时候抛出类不匹配的异常
jvm理解泛型的方法:
1,虚拟机中没有泛型,只有普通类和普通方法,所有的泛型类,泛型方法的,在编译阶段就已经被处理成了普通类和普通方法(通过类型擦除进行处理),也就是讲泛型擦除成了Object或者边界类型(extend等)
2,即使是泛型,也可以在运行时,动态的(利用反射机制)动态的获取到泛型的实际类型
public Type getGenericSuperclass()
java集合框架图:
Collection是一个接口
List和Set 接口继承了Collection接口,但是Map接口没有继承Collection接口
List包括ArrayList和Vector,Stack继承了Vector
Set包括Treeset,HashSet,LinkedHashSet,linkedHashSet继承了HashSet
Map包括TreeMap,HashMap,LinkedHashMap(继承了HashMap),WeakHashMap,IdentityHashMap, 其中,WeakHashMap和IdentityHashMap没有继承Hashmap,只是继承了AbstractMap,实现了Map接口,与HashMap一样(这一点与)
类的加载顺序:
1,父类的静态代码块,静态属性,但不包括静态方法
即:static{} + static T typeName;
2,子类的静态代码块,静态属性,但是不包括静态方法
3,父类的非静态代码块
4,父类的构造方法(构造方法晚于非静态代码块)
5,子类的非静态代码块
6,子类的构造方法(构造方法晚于非静态代码块)
代入到本题中,就是:
先执行Sub方法,然后执行Sub的基类Base的静态方法(没有),然后执行Sub的静态方法(没有),然后执行父类的非静态代码块(没有),然后执行父类的构造函数(里面有一个callName方法,因为sub中override了callName方法,所以父类的构造函数里面的callName方法,执行的是Sub类中的override的callName方法),然偶引用sub中callName中的baseName属性,但是此时还没有执行到Sub类中的private String basename="basename" ,所以此时baseName还保持在null的状态,会打印出null的值
synchronized与volatile的区别:
synchronize既可以保证原子性,又可以保证修改可见性,而volatile只能保证修改可见性
volatile的本质是告诉jvm,寄存器中的值是不可信的,直接去内存中取值 ,synchronized是锁定当前变量,同一时间只能有一个线程访问变量
volatile不会阻塞线程,而synchronized会阻塞线程
volatile标记的变量不会被编译器优化,而synchronized标记的变量会被线程优化
反射的主要作用:
运行时判断一个类所属的对象:isInstance();
运行时得到一个对象所属的类: getClass();
运行时构造一个类的对象: Class.forName("ClassName").newInstance();
运行时获取一个类的任意成员变量和方法,getFields,getMethods等
运行时调用任意类的任意方法
生成动态代理(需要特殊记)
集合中各种类的同步性:
List中,常见的LinkedList,ArrayList,都不是同步的
List中,不常见的Vector,以及继承与Vector的Stack,都是同步的
Set中,常见的HashSet,以及集成与HashSet的linkedHashset,都不是同步的
Set中,不常见的TreeSet,也是不同步的
Map中,常见的HashMap,linkedhashmap,都是不同步的
Map中,不常见的TreeMap,WeakHashMap,IdentityHashMap是不同步的
总结,常见的linkedlist,arraylist,hashset,linkedhashset,hashmap,linkedhashmap都是不同步的
常见的set,map都没有同步的,只有list中vector是同步的
只有vector和继承与vector的stack是同步的
StringBuffer是同步的,而StringBuilder是不同步的
HashMap不同步,但是Hashtable同步 (hashtable继承了Dictionary,实现了Map接口,属于map)
Properties继承与Hashtable,Properties也是同步的
true,false,null,都是保留字,而不是关键字
牛客网刷题(纯java题型 31~60题)的更多相关文章
- 牛客网刷题(纯java题型 1~30题)
牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...
- 牛客网 Wannafly挑战赛 C 列一列 简单题 (题目有点坑)
链接:https://www.nowcoder.com/acm/contest/71/C来源:牛客网 题目描述 小W在计算一个数列{An},其中A1=1,A2=2,An+2=An+1+An.尽管他计算 ...
- 牛客网剑指offer java 全部题解
经过数月的努力,终于更完了牛客网的66道剑指offer,以下的顺序和大家在牛客网的顺序是一样的(排序也花了不少时间),希望对大家找工作/提高算法能力能起到些许帮助. 每天一道剑指offer-二维数组中 ...
- 牛客网练习赛34-D-little w and Exchange(思维题)
链接:https://ac.nowcoder.com/acm/contest/297/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客网刷题总结—Day1
1.关于哈夫曼树 哈夫曼树也称最优二叉树,其n个叶子节点都是带有权值的,其节点的带权路径长度(n个叶子节点的权值*其到根节点的路径之和)最小的二叉树即为哈夫曼树. 一般的哈夫曼树不存在度为1的节点(除 ...
- 牛客网2018暑期训练 第三场 a题
#include <bits/stdc++.h> using namespace std; vector<int> path; ; short dp[maxn][maxn][m ...
- 牛客网在线判题系统JavaScript(V8)使用
JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢 ...
- 牛客网Java刷题知识点之为什么HashMap和HashSet区别
不多说,直接上干货! HashMap 和 HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...
- 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
随机推荐
- Java核心技术点之接口
1. 为什么使用接口 Java中的接口是一组对需求的描述.接口通过声明接口方法来对外宣布:“要想具有XX功能,就得按我说的做(即实现接口方法).” 而接口的实现类通过实现相应接口的方法来宣布:“我已经 ...
- 【week6】用户数
小组名称:nice! 小组成员:李权 于淼 杨柳 刘芳芳 项目内容:约跑app alpha发布48小时以后用户数如何,是否达到预期目标,为什么,是否需要改进,如何改进(或理性估算). 首先我们的app ...
- dede5.7文章模型(非软件模型)添加下载附件的方法
添加字段 ---- > 字段类型为 附件 --- - > templets/system/channel_addon.htm 代码清空,只保留 ~link~ -+---> 保存. & ...
- mybatis小结-001
代码不能直接copy运行,有些内容是为了说明知识点 1,sqlMqpConfig.xml <?xml version="1.0" encoding="UTF-8&q ...
- 异步请求Python库 grequests的应用和与requests库的响应速度的比较
requests库是python一个优秀的HTTP库,使用它可以非常简单地执行HTTP的各种操作,例如GET.POST等.不过,这个库所执行的网络请求都是同步了,即cpu发出请求指令后,IO执行发送和 ...
- Atom IDE开发工具, ASCII艺术评论, ninimap 插件
1 ASCII Art Comments One neat trick is to use ASCII art to create huge comments visible in the minim ...
- CCS3 动画-鼠标放上去放大背景图片
---〉 效果如上,一个简单的过渡放大效果, <!DOCTYPE HTML> <html> <body> <style> #test{ width:30 ...
- 【bzoj1712】[Usaco2007 China]Summing Sums 加密 矩阵乘法
题目描述 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她们并不是经验十足,她们的加密方法非常简单:第i只奶牛掌握着密码的第i个数字,起始的时候是Ci(0≤C ...
- BZOJ4873 Shoi2017寿司餐厅(最小割)
选择了某个区间就必须选择其所有子区间,容易想到这是一个最大权闭合子图的模型.考虑将区间按长度分层,相邻层按包含关系连边,区间[i,j]的权值即di,j,其中最后一层表示长度为1的区间的同时也表示寿司本 ...
- P1297 [国家集训队]单选错位
题目背景 原 <网线切割>请前往P1577 题目描述 gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上共有n道单选题,第i道单选题有ai个 ...