这里说一下,因为我前不久在找工作,加上平时没事刷刷牛客答答题当学习了,所以在这里整理出来的题目个人色彩很浓,都是我做过的并且错了的!!!(我觉得我都能做对的几乎所有人都会,没啥整理的必要)
然后我会按照笔记的顺序写。所以没什么顺序而且有的可能重复,对付看吧/(毕竟错题本厚厚的一大本)
- 一个文件中只能有一个public class。
这个说法是错误的,因为可能有内部类的情况。 - 一个类中可以有两个main方法。
这个说法是正确的,可以重载。只不过作为入口的main方法只有一个。一个类可以有main方法也可以没有,而只有一个main方法的时候也可以是任意访问权限,因为这个类不一定要执行,可能只是辅助类。 - 下列命令中:
.java是用来运行一个.class文件的
.javadoc是用来生成api文档的
.jar是用来生成jar包的
.javac是用来把java文件编译成.class文件的 - String s = new String(“xyz”),如果“xyz”并没有被创建过,则该语句创建了两个String 对象。一个在堆中,第二个在字符串常量池中。如果在java字符串常量池中已经存在就只会创建一个。
- byte的取值范围是127到-128.(我记得当时学二进制补码的时候有个图很直观,有兴趣的可以自己去找找)
short a = 128;
byte b = (byte)a;
b 的值为-128。因为强制转换出现溢出,128可以理解为127+1,即127
后面是-128。 - byte a1 = 2,a2 = 3,a3;
short s = 16;
a2 = s;//这个编译错误,因为short转为byte需要强制转换
a3 = a1 * a2;//这个也是编译错误,因为 a1 * a2的结果为int型,转为byte型也需要强制转换。 - 以下方法可以取到http请求中的cookie的值的有:
request.getAttribute(key,value);//这个是在服务器端的操作。
request.getHeader(String name);//以字符串的形式返回指定的请求的值,cookie也是头的一种。
request.getCookies();//返回一个数组,包含客户端发送该请求的所有的cookie对象。
request.getParameter();//是通过容器的实现来获取类似post/get方式传入的数据。
所以本题可用的方法只有第二个和第三个。 - 接口中的变量默认是public static final的,方法默认是public abstract的。
- java继承中对构造函数是不继承的,只是显示或者隐式的调用。
- Math.ceil(num);//天花板,向上取整
Math.floor(num);//地面 向下取整
需要注意的是符号不变,数据类型不变。 - java中垃圾回收分为scanvenge gc 和 full gc,其中full GC的触发条件:
- 直接调用system.gc();
- 持久代满了会触发full GC;
- 新生代满了会存survivor,survivor满了就会存老年代,老年代满了就触发full GC了。
- 其他可能还有,在这就不多说了。对垃圾回收有疑惑的可以点下面链接
深入JVM(二) java垃圾收集器与内存分配策略
- Double d = 3;//这个声明是错误的,Double是包装类,int无法直接转换成包装类型Double。
double d = 5.3e12;这个是正确的,5.3e12表示5.3*10的12次方。 - 通过new创建的String类型会在堆中存放。
- java的泛型机制仅仅是“语法糖”。他不会影响运行时间。因为在编译阶段虚拟机就会把泛型的类型擦除(这就叫做泛型擦除机制)。
- call by value是指传递
call by reference 是引用传递
值传递不会改变实际参数的数值,引用传递能改变实际参数的内容,但是不会改变实际参数的参考地址。 - java程序的种类有:
- 内嵌于web文件中,浏览器观看的Applet;
- 可独立运行的Application;
- 服务器端的Servlets;
- list,set都继承自collection接口,Map是顶层接口,不继承自collection。
package demo;
public class VectorSychronized {
public static void hello() {
System.out.println("hello");
}
public static void main(String[] args) {
VectorSychronized vectorSychronized = null;
vectorSychronized.hello();
}
}
这段代码的运行结果不会报空指针异常的。你猜到了没(类名是之前学jvm的时候随便起的,别在意)?
原因只要访问VectorSychronized这个类都会加载hello方法。在其他类类的静态方法中可以调用公开的静态方法。
这里之所以不发生空指针,是因为必须是去引用堆对象才会有空指针,而这个hello方法是static类型的,方法本身就没有指针,所以并不会空指针。
- class.getDeclaredMethods();//返回类或者接口的所有方法(不包括继承)
class.getMethods();//返回类 所有public方法。 - 索引是从1开始而不是从0开始。
- HashMap没有contains方法,改成了containsValue和containsKey。因为contains方法容易让人误解。
- java调试器jdb.exe
- 在web开发中实现会话跟踪可用:session,cookie,地址重写,隐藏域。
- 泛型只是在编译器保证对象类型相同的技术,因此泛型指定的元素不具有继承性。其实这个归根结底还是因为泛型只是java的“语法糖”。
若A extends B,List<A> a;List<B> b;
那么 a=b是错误的!不同类型不能相互赋值。 - socket通信编程中:
- 服务端ServerSocket提供socket实例。
- 客户端Socket提供socket实例。
- toLowerCase()和toUpperCase()方法产生的字符串对象是new出来的,所以不能与字符串常量==,可以str.equals();
- jsp四大作用域:page(最小)<request<session<application。
存储在application对象中的属性可以被同一个应用程序的所有用户访问。
- session:当前用户上下文信息
- application:当前应用
- request:当前请求
- pageContent:当前页面
- jsp语法:
- jsp表达式:<%= ... %>
- jsp脚本:<% ... %>
- jsp声明:<%! ... %>
- jsp注释: <%!-- ... --%>
- ArrayList的内存结构是数组,其本质是顺序存储的线性表。插入和删除操作会引发后续元素移动,效率低。但是随机访问的效率很高。
LinkedList的内存结构是用双向链表存储的,链式存储结构插入和删除效率高,不需要移动。但是随机访问效率低,需要从头开始向后依次访问。 - 局部内部类不等同于内部类,是放在代码块或方法中的。不能有访问控制修饰符,也不能被static修饰。
好了,今天就整理到这里。然后其实从头看一遍发现有些知识点我都忘了。这次整理出来也算是加深印象,如果有帮助谁了也算是功德?虽然我不信佛。。反正与人方便于己方便。然后这里的一些解释都是百度或者问人的,应该都是对的,但是如果你觉得哪个说法不够准确欢迎指出,我会注意随时改。我是打算把我几百个错题都整理进来,所以可能这是一个系列故事,就酱吧。
然后全文手打不易,如果你觉得有帮到你或者有点用,别吝啬的点个喜欢和点个关注哦~~
网友评论