
Java学习笔记
看了个寂寞
一时刷题一时爽,一直刷题一直爽!
展开
-
关于Java以下描述正确的有?
关于Java以下描述正确的有( )Class类是Object类的超类Object类是一个final类String类是一个final类Class类可以装载其它类A.class类是Object的派生类B.每个类都使用Object类作为超类,而final修饰的类不能被继承C.D.Class类中的forName()方法返回与带有给定字符串名的类或接口相关联的Class对象(装载其他类)...原创 2020-07-16 16:29:39 · 2457 阅读 · 0 评论 -
Java中的byte,short,char进行计算时都会提升为int类型
代码片段: 1 2 3 4 5 byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6); 关于上面代码片段叙述正确的是()A:输出结果:13B:语句:b6=b4+b5编译出错C:语句:b3=b1+b2编译出错D:运行期抛出异常解释:...原创 2020-07-16 16:26:35 · 885 阅读 · 1 评论 -
一道关于java中super的题
class C { C() { System.out.print("C"); }} class A { C c = new C(); A() { this("A"); System.out.print("A"); } A(String s) { System.out.print(s); }} class Test extends A { Test() { .原创 2020-07-16 16:23:12 · 525 阅读 · 2 评论 -
Java中的堆和栈的区别
当一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(Last In First Out)的顺序的数据结构,这就是java.util.Stack。这种情况下,不免让很多人更加费解前面的问题。事实上,堆和栈都是内存中的一部分,有着不同的作用,而且一个程序需要在这片区域上分配内存。众所周知,所有的Java程序都运行在JVM虚拟机内部,我们这里介绍的自然是JVM(虚转载 2020-07-16 15:25:49 · 86 阅读 · 0 评论 -
Java中的字符串常量池
Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式。1.什么是字符串常量池JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池2.工作原理当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串转载 2020-07-16 15:20:33 · 126 阅读 · 0 评论 -
String类
指出下列程序运行的结果() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Example{ String str =new String("good"); char[ ] ch = {'a' ,'b' ,'c' }; public static void main(Stri...原创 2020-07-16 14:58:20 · 391 阅读 · 0 评论 -
如何获取ServletContext设置的参数值
context.getParameter():获取POSR/GET传递的参数值。context.getInitParameter():获取Tomcat的server.xml中设置Context的初始化参数。context.getAttribute():获取对象容器中的数据值。context.getRequestDispatcher():请求转发。...原创 2020-07-15 16:16:02 · 1606 阅读 · 0 评论 -
java取模运算中余数的符号问题
取模运算,余数的符号和被除数符号相同(除号前面的数)System.out.println( (-3) % 2 ); //-1System.out.println( 4 % 3 ); //1System.out.println( (-3) % (-2) ); //-1System.out.println( 4 % (-3) ); //1原创 2020-07-15 16:11:52 · 645 阅读 · 0 评论 -
java中构造方法
1.构造方法在一个对象被new时执行2.类中的构造方法可以省略不写,编译器会自动生成3.错误说法:构造函数必须与类同名,但方法不能和类同名。正确说法:方法可以和类同名,和构造方法的区别是:构造方法没有返回值public class Test{ //构造方法 public Test(){ System.out.println("constructor"); } //方法 public void Test(){ Syste原创 2020-07-15 16:06:10 · 3452 阅读 · 1 评论 -
接口和抽象类的区别是什么
1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以有非抽象的方法2. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定3. 一个类可以实现多个接口,但最多只能实现一个抽象类4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定5. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。备注:在JDK8中,原创 2020-07-15 15:38:32 · 194 阅读 · 0 评论 -
JAVA中static和final的区别
static强调只有一份,final强调不变。final在使用之前必须初始化 还能用于匿名内部类传参 final方法也是一种非虚方法 在编译器会直接被确定转载 2020-07-15 15:30:35 · 103 阅读 · 0 评论 -
HashMap 和 Hashtable 的区别
1.线程是否安全HashMap非线程安全,Hashtable线程安全。2.效率HashMap非线程安全,比Hashtable效率高。3.对null key和null value的支持HashMap中null可以作为键,但只能有一个,null键对应的null值可以有多个。Hashtable中null key 和 null value只能有一个,否则抛出 NullPointerException4.初始容量大小和每次扩容大小的不同①创建时如果不指定容量初始值,Hashtable 默认的初原创 2020-07-06 15:10:37 · 92 阅读 · 0 评论 -
HashMap 的长度为什么是2的幂次方
为了能让 HashMap 存取高效,尽量较少碰撞,也就是要尽量把数据分配均匀。我们上面也讲到了过了,Hash 值的范围值-2147483648到2147483647,前后加起来大概40亿的映射空间,只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但问题是一个40亿长度的数组,内存是放不下的。所以这个散列值是不能直接拿来用的。用之前还要先做对数组的长度取模运算,得到的余数才能用来要存放的位置也就是对应的数组下标。这个数组下标的计算方法是“ (n - 1) & hash ”。(n代表数组长原创 2020-07-06 15:04:24 · 267 阅读 · 0 评论 -
HashMap
1.哈希函数关键字和它在表中存储位置之间存在一种函数关系。这个函数我们称为为哈希函数。key <--(函数关系)-->valuehash:散列、杂凑就是把任意长度的输入,通过散列算法,变成固定长度的输出,这种是一种压缩映射.当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。键(key)经过hash函数得到的结果作为地址去存放当前的键值对(key-value)(hashmap的存值方式),但是.原创 2020-07-06 14:38:27 · 82 阅读 · 0 评论 -
ArrayList 与 Vector
Vector类的所有方法都是同步的,Arraylist不是同步的。所以在不需要保证线程安全时时建议使用Arraylist。https://www.cnblogs.com/ming-blogs/p/10891601.html转载 2020-07-06 09:19:28 · 80 阅读 · 0 评论 -
ArrayList和LinkedList
1.是否线程安全ArrayList和LinkedList都是不同步的,即不保证线程安全。2.底层数据结构ArrayList底层使用动态数组,LinkedList底层使用双向链表3.查找,插入和删除元素是否受位置影响ArrayList:1)因为底层是数组,查找元素的时候,只要给出要查询元素的索引,就可以直接查询出来。2)插入和删除元素的时候,如果要插入和删除第i个位置的元素,则很耗时。3)时间复杂度近似O(n)LinkedList:1)插入和删除元素的时候,因为是双向指针,所原创 2020-07-06 09:16:16 · 159 阅读 · 0 评论 -
用键盘输入的两种方法
1.ScannerScanner input = new Scanner(System.in);String s = input.nextLine();System.out.println(s);2.BufferedReaderBufferedReader input1 = new BufferedReader(new InputStreamReader(System.in));String str = input1.readLine();原创 2020-06-09 09:02:47 · 357 阅读 · 0 评论 -
final关键字的总结
final关键字主要用在:类,方法,变量1.变量1)基本数据类型的变量,数值一旦初始化就不能改变了。2)引用类型的变量,一旦初始化后,就不能让它再指向另一个对象。2.类final修饰一个类,这个类就不能被继承,final类中所有方法都被隐式指定为final方法3.方法把方法锁定,以防继承类修改它。...原创 2020-06-09 08:43:29 · 150 阅读 · 0 评论 -
==和equals的区别
==1.对于基本类型的变量,比较值是否相等2.对于引用类型的变量,比较内存地址是否相等equals() 注意:只能比较是否是同一对象,不能比较基本类型1.类没有重写equals()方法,equals等价于"==",比较地址2.类重写equals()方法,比较内容是否次相同public class Test { public static void main(String[] args) { String a =new String("ab"); //a是一个引用 Stri..原创 2020-06-09 08:36:24 · 235 阅读 · 0 评论 -
String,StringBuffer和StringBuilder的区别
1.可变性与不变性String的不变性通过查看String的源码(private final char value[];),可以知道String类是由final关键字字符数组保存字符串。对于final关键字来说,无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。所以String对象是不可变的。StringBuffer和StringBuilder的可变性StringBuffer 和 StringBuilder 类的对象能够被多次的修改。StringBuff原创 2020-06-09 08:09:19 · 91 阅读 · 0 评论 -
Java中重写和重载的区别
重载和重写重写重载重写1.发生在父类和子类中2.方法名,参数列表必须相同3.方法返回值范围小于等于父类4.抛出的异常范围小于等于父类5…访问修饰符范围大于等于父类6.若父类方法访问修饰符为private,则子类不能重写该方法。class Animal{ public void eat() { System.out.println("动物吃东西"); }}class Cat extends Animal{ public void eat() { System.out.pri原创 2020-05-14 09:58:44 · 129 阅读 · 0 评论